《SAS編程技術(shù)SAS處理流程與指針控制》由會(huì)員分享,可在線閱讀,更多相關(guān)《SAS編程技術(shù)SAS處理流程與指針控制(49頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、Title text should go hereEven if on two lines(but not three),First level,Second level,Third level,第,24,章,SAS,處理流程與指針控制,清華大學(xué)經(jīng)管學(xué)院 朱世武,Resdat,樣本數(shù)據(jù):,SAS,論壇:,SAS,處理流程,SAS處理流程數(shù)據(jù)集,SAS數(shù)據(jù)文件,SAS數(shù)據(jù)視圖,PROC SQL視圖,SAS/ACCESS視圖,原始數(shù)據(jù),外部文件數(shù)據(jù),程序行數(shù)據(jù),遠(yuǎn)程數(shù)據(jù),FTP TCP/IP socket,URL,DATA步,SAS數(shù)據(jù)集,PORC步,SAS報(bào)告,SAS數(shù)據(jù)集,SAS日志,SAS報(bào)
2、告,SAS日志,其它外部數(shù)據(jù)文件,數(shù)據(jù)步定義,通過(guò)數(shù)據(jù)步可以實(shí)現(xiàn)的功能如下。,創(chuàng)立SAS數(shù)據(jù)集SAS數(shù)據(jù)文件或SAS數(shù)據(jù)視窗;,讀取外部數(shù)據(jù)文件創(chuàng)立SAS數(shù)據(jù)集;,通過(guò)對(duì)現(xiàn)有SAS數(shù)據(jù)集取子集、合并、修改和更新創(chuàng)立新的SAS數(shù)據(jù)集;,分析、操作或展示數(shù)據(jù);,創(chuàng)立新變量;,產(chǎn)生報(bào)告、或?qū)⑽募鎯?chǔ)到硬盤或磁帶上;,提取信息;,文件管理。,編譯SAS語(yǔ)句,包括語(yǔ)法檢查,編譯階段,建立,輸入緩沖區(qū),程序數(shù)據(jù)向量PDV,描述信息,開始,data數(shù)據(jù)步語(yǔ)句,反復(fù)計(jì)數(shù),運(yùn)行階段,設(shè)定,PDV中的變量值為缺失,數(shù)據(jù)讀入語(yǔ)句,判斷,是否還有記錄可以讀入,關(guān)閉數(shù)據(jù)集,執(zhí)行下一個(gè)數(shù)據(jù)步或者過(guò)程步,沒有,有,讀入,一
3、個(gè)數(shù)據(jù)記錄,執(zhí)行,其它的可執(zhí)行語(yǔ)句,寫入,一個(gè)觀測(cè)到數(shù)據(jù)集中,數(shù)據(jù)步處理流程,指針控制,當(dāng),SAS,從輸入數(shù)據(jù)中讀取數(shù)據(jù),并將其讀入到輸入緩沖區(qū)時(shí),用一個(gè)指針標(biāo)記所讀數(shù)據(jù)的位置。,INPUT,語(yǔ)句提供了三種方式來(lái)控制指針運(yùn)動(dòng)。,列指針控制,設(shè)置指針的列位置,行指針控制,設(shè)置指針的行位置,行固定說(shuō)明符,在輸入緩沖區(qū)內(nèi)保持指針在同一個(gè)記錄行上,從而使得其它的,INPUT,語(yǔ)句可以讀入同一條記錄行。,SAS,默認(rèn)的情況下,,INPUT,語(yǔ)句在讀入一條記錄之后就自動(dòng)釋放該條記錄而進(jìn)入下一條,列行指針控制,列指針控制指定變量從哪一列開始讀入數(shù)據(jù)。,行指針控制可以實(shí)現(xiàn)如下控制:,將指針移動(dòng)至下一次記錄行;
4、,在,INPUT,語(yǔ)句中定義每個(gè)觀測(cè)所要讀入的記錄行數(shù)量,或在,INFILE,語(yǔ)句中使用,N=,選項(xiàng),設(shè)定每個(gè)觀測(cè)所需讀入的記錄數(shù)量。,例24.2 列行指針控制。,data one;,input 2 Name$+1 age;,cards;,sara 15,kitty 23,paul 24,;,run;,例中:2表示第一個(gè)變量Name從每個(gè)觀測(cè)記錄的第二列開始讀取數(shù)據(jù),在讀完Name之后,+1表示此時(shí)指針向右相對(duì)移動(dòng)一列讀取age的數(shù)值。通過(guò)列表輸入方式的INPUT語(yǔ)句,每讀入一個(gè)數(shù)值之后,指針自動(dòng)停留在數(shù)據(jù)后的第二列上如本例第一個(gè)數(shù)據(jù)行,讀完sara后,指針已經(jīng)指到sara后第二列上,所以此時(shí)
5、指針只需相對(duì)向右一位,就能繼續(xù)讀入下一個(gè)變量。,使用行固定說(shuō)明符,以下情況發(fā)生時(shí)使用行固定說(shuō)明符使得指針停留在當(dāng)前的輸入記錄行上。,一個(gè)數(shù)據(jù)記錄行被多個(gè)INPUT語(yǔ)句讀入單尾綴。,一個(gè)數(shù)據(jù)記錄行包含多個(gè)觀測(cè)所需要的值雙尾綴。,一個(gè)數(shù)據(jù)記錄行需要在下一個(gè)DATA步的重復(fù)過(guò)程中再次讀入(雙尾綴)。,單尾綴,一般來(lái)說(shuō),數(shù)據(jù)步中的每個(gè)INPUT語(yǔ)句都會(huì)將一條新的數(shù)據(jù)記錄行讀入輸入緩沖區(qū)中,假設(shè)用單尾綴控制,那么在同一個(gè)重復(fù)過(guò)程中:,指針位置沒有改變。,沒有新的記錄行被讀入到輸入緩沖區(qū)當(dāng)中。,下一個(gè)INPUT語(yǔ)句會(huì)繼續(xù)讀入同一條記錄行。,SAS在使用單尾綴時(shí),會(huì)在碰到以下情況時(shí)釋放一條記錄行:,一個(gè)空的
6、INPUT語(yǔ)句:input;,一個(gè)不帶單尾綴的input語(yǔ)句;,下一次重復(fù)過(guò)程開始。,例,24.3,單尾綴,的作用。,data,one;,input a b;/*input,語(yǔ)句,1*/,input;/*input,語(yǔ)句,2*/,input c d ;/*input,語(yǔ)句,3*/,cards;,1 2 3 4,1 2 3 4,;,run,;,上述例子是一個(gè)標(biāo)準(zhǔn)組合順序,123,,得到的結(jié)果是,Obs,a,b,c,d,1,1,2,1,2,如果是,13,組合,得到的結(jié)果,Obs,a,b,c,d,1,1,2,3,4,2,1,2,3,4,雙尾綴,一般來(lái)說(shuō),假設(shè)使用雙尾綴,那么數(shù)據(jù)步在進(jìn)行下一次重復(fù)過(guò)程
7、時(shí),INPUT語(yǔ)句讀入同一條記錄行。,在碰到以下情況時(shí),SAS才會(huì)將一個(gè)記錄行釋放:,指針移動(dòng)超過(guò)了輸入記錄的尾端;,空INPUT語(yǔ)句;,在DATA步下一次重復(fù)開始時(shí),有一個(gè)單尾綴的INPUT語(yǔ)句input;,例,24.4,雙尾綴,的作用。,data,one;,input a b ;,cards;,1 2 1 2,1 2 1 2,;,run;,例中,每個(gè)數(shù)據(jù)記錄行可以完成兩次重復(fù)過(guò)程,當(dāng)指針移動(dòng)超過(guò)了輸入記錄的尾端,指針才開始換行。,讀完數(shù)據(jù)后的指針位置,分別用列表方式、列方式、格式化方式讀入下一段數(shù)據(jù),-+-1-+-2-+-3,REGION1 49670,REGION2 97540,REGI
8、ON3 86342,列表方式:,input region$jansales;,在讀完,REGION1,之后,指針停留在第,9,列上。,-+-1-+-2-+-3,REGION1 49670,格式化方式和列方式,列方式,input region$1-7 jansales 12-16;,格式化方式,input region$7.+4 jansales 5.;,input region$7.12 jansales 5.;,I,NPUT,語(yǔ)句控制指針從前,7,列中讀取數(shù)據(jù)賦給變量,REGION,,而后指針停留在第,8,列上。,-+-1-+-2-+-3,REGION1 49670,多個(gè)數(shù)據(jù)行構(gòu)成一個(gè)觀測(cè),
9、看下面的例子,:,data,list2;,infile datalines;,input#4 name$1-10#2 age 13-14#3 team 16;,datalines;,li 12 1,wang 45 2,zhou 12 3,qian 3 4,zhang 23 5,ren 11 6,wu 1 7,qiu 98 8,;,proc print,data=list2;,quit;,Obs name age team,1 qian 45 3,2 qiu 11 7,input#4 name$1-10#2 age 13-14 team 16;,對(duì)應(yīng)輸出窗口結(jié)果,Obs name age tea
10、m,1 qian 45 2,2 qiu 11 6,指針超過(guò)行的結(jié)尾,在使用或+控制指針時(shí),如果指針移動(dòng)超過(guò)數(shù)據(jù)行的結(jié)尾,那么自動(dòng)轉(zhuǎn)到下一次數(shù)據(jù)記錄行的第一列,并將此信息輸入到SAS日志中。,如下例:,data one;,input x +6 y;,cards;,1 2,3 4,;,run;/*x=1 y=3*/,23 data one;,24 input x +6 y;,25 cards;,NOTE:INPUT,語(yǔ)句到達(dá)一行的末尾,,SAS,已轉(zhuǎn)到新的一行。,NOTE:,數(shù)據(jù)集,WORK.ONE,有,1,個(gè)觀測(cè)和,2,個(gè)變量。,NOTE:“DATA,語(yǔ)句”所用時(shí)間(總處理時(shí)間),:,實(shí)際時(shí)間,
11、0.05,秒,CPU,時(shí)間,0.06,秒,30 ;,31 run;,指針移到第一列之前,當(dāng)列指針試圖移到第一列之前的位置時(shí),會(huì)被限制到第一列。,例,24.5,列指針移到第一列。,data,one;,input x (A-7)y;,cards;,1,;,run,;/*x=1 y=1*/,SAS,在讀完,X,的值之后,指針回到第一列。,x,和,y,有同樣的值。,恩格爾和克拉格Kraft,D.,1983在分析宏觀數(shù)據(jù)時(shí),發(fā)現(xiàn)這樣一些現(xiàn)象:時(shí)間序列模型中的擾動(dòng)方差穩(wěn)定性比通常假設(shè)的要差。恩格爾的結(jié)論說(shuō)明在分析通貨膨脹模型時(shí),大的及小的預(yù)測(cè)誤差會(huì)大量出現(xiàn),說(shuō)明存在一種異方差,其中預(yù)測(cè)誤差的方差取決于后續(xù)
12、擾動(dòng)項(xiàng)的大小。,從事于股票價(jià)格、通貨膨脹率、外匯匯率等金融時(shí)間序列預(yù)測(cè)的研究工作者,曾發(fā)現(xiàn)他們對(duì)這些變量的預(yù)測(cè)能力隨時(shí)期的不同而有相當(dāng)大的變化。預(yù)測(cè)的誤差在某一時(shí)期里相對(duì)地小,而在某一時(shí)期里那么相對(duì)地大,然后,在另一時(shí)期又是較小的。這種變異很可能由于金融市場(chǎng)的波動(dòng)性易受謠言、政局變動(dòng)、政府貨幣與財(cái)政政策變化等等的影響。從而說(shuō)明預(yù)測(cè)誤差的方差中有某種相關(guān)性。,為了刻畫這種相關(guān)性,恩格爾提出自回歸條件異方差(ARCH)模型。ARCH的主要思想是時(shí)刻 t 的ut 的方差(=t2)依賴于時(shí)刻(t 1)的擾動(dòng)項(xiàng)平方的大小,即依賴于 t2-1。,6.1.1 ARCH模型,為了說(shuō)得更具體,讓我們回到k-變量
13、回歸模型:,(6.1.1),如果 ut 的均值為零,對(duì) yt 取基于(t-1)時(shí)刻的信息的期望,即Et-1(yt),有如下的關(guān)系:,(6.1.2),由于 yt 的均值近似等于式的估計(jì)值,所以式也稱為均值方程。,假設(shè)在時(shí)刻(t 1)所有信息的條件下,擾動(dòng)項(xiàng) ut 的條件分布是:,(6.1.7),也就是,ut 遵循以0為均值,(0+1u2t-1)為方差的正態(tài)分布。,由于,(6.1.7),中,u,t,的方差依賴于前期的平方擾動(dòng)項(xiàng),我們稱它為,ARCH(1),過(guò)程:,通常用極大似然估計(jì)得到參數(shù),0,1,2,k,0,1,的有效估計(jì)。,容易加以推廣,,ARCH,(,p,),過(guò)程可以寫為:,(6.1.8),
14、這時(shí)方差方程中的,(,p,+1),個(gè)參數(shù),0,1,2,p,也要和回歸模型中的參數(shù),0,1,2,k,一樣,利用極大似然估計(jì)法進(jìn)行估計(jì)。,如果擾動(dòng)項(xiàng)方差中沒有自相關(guān),就會(huì)有,H0:,這時(shí),從而得到擾動(dòng)項(xiàng)方差的同方差性情形。,恩格爾曾說(shuō)明,容易通過(guò)以下的回歸去檢驗(yàn)上述虛擬假設(shè):,其中,t 表示從原始回歸模型估計(jì)得到的OLS殘差。,在 ARCH(p)過(guò)程中,由于 ut 是隨機(jī)的,ut2 不可能為負(fù),所以對(duì)于 ut 的所有實(shí)現(xiàn)值,只有是正的,才是合理的。為使 ut2 協(xié)方差平穩(wěn),所以進(jìn)一步要求相應(yīng)的特征方程,的根全部位于單位圓外。如果 ii=1,2,p都非負(fù),式等價(jià)于 1+2+p 1。,6.1.2 AR
15、CH,的檢驗(yàn),下面介紹檢驗(yàn)一個(gè)模型的殘差是否含有ARCH效應(yīng)的兩種方法:ARCH LM檢驗(yàn)和殘差平方相關(guān)圖檢驗(yàn)。,1.ARCH LM檢驗(yàn),Engle在1982年提出檢驗(yàn)殘差序列中是否存在ARCH效應(yīng)的拉格朗日乘數(shù)檢驗(yàn)Lagrange multiplier test,即ARCH LM檢驗(yàn)。自回歸條件異方差性的這個(gè)特殊的設(shè)定,是由于人們發(fā)現(xiàn)在許多金融時(shí)間序列中,殘差的大小與最近的殘差值有關(guān)。ARCH本身不能使標(biāo)準(zhǔn)的OLS估計(jì)無(wú)效,但是,忽略ARCH影響可能導(dǎo)致有效性降低。,ARCH LM檢驗(yàn)統(tǒng)計(jì)量由一個(gè)輔助檢驗(yàn)回歸計(jì)算。為檢驗(yàn)原假設(shè):殘差中直到q階都沒有ARCH,運(yùn)行如下回歸:,式中 t 是殘差。
16、這是一個(gè)對(duì)常數(shù)和直到 q 階的滯后平方殘差所作的回歸。這個(gè)檢驗(yàn)回歸有兩個(gè)統(tǒng)計(jì)量:,1F 統(tǒng)計(jì)量是對(duì)所有殘差平方的滯后的聯(lián)合顯著性所作的一個(gè)省略變量檢驗(yàn);,2TR2 統(tǒng)計(jì)量是Engles LM檢驗(yàn)統(tǒng)計(jì)量,它是觀測(cè)值個(gè)數(shù) T 乘以回歸檢驗(yàn)的 R2;,普通回歸方程的,ARCH,檢驗(yàn)都是在殘差檢驗(yàn)下拉列表中進(jìn)行的,需要注意的是,只有使用最小二乘法、二階段最小二乘法和非線性最小二乘法估計(jì)的方程才有此項(xiàng)檢驗(yàn)。,Breusch-Pagan-Godfrey,Harvey,Glejser,ARCH,White,Custom Test Wizard,圖,6.4,普通方程的,ARCH,檢驗(yàn)列表,2.殘差平方相關(guān)圖,顯示直到所定義的滯后階數(shù)的殘差平方t2的自相關(guān)性和偏自相關(guān)性,計(jì)算出相應(yīng)滯后階數(shù)的Ljung-Box統(tǒng)計(jì)量。殘差平方相關(guān)圖可以用來(lái)檢查殘差自回歸條件異方差性ARCH。如果殘差中不存在ARCH,在各階滯后自相關(guān)和偏自相關(guān)應(yīng)為0,且Q統(tǒng)計(jì)量應(yīng)不顯著??蛇m用于使用LS,TSLS,非線性LS估計(jì)方程。在圖6.4中選擇Residuals Tests/Correlogram Squared Residuals