SAS系统数据管理ppt课件.ppt

上传人:牧羊曲112 文档编号:1946966 上传时间:2022-12-27 格式:PPT 页数:73 大小:1.85MB
返回 下载 相关 举报
SAS系统数据管理ppt课件.ppt_第1页
第1页 / 共73页
SAS系统数据管理ppt课件.ppt_第2页
第2页 / 共73页
SAS系统数据管理ppt课件.ppt_第3页
第3页 / 共73页
SAS系统数据管理ppt课件.ppt_第4页
第4页 / 共73页
SAS系统数据管理ppt课件.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《SAS系统数据管理ppt课件.ppt》由会员分享,可在线阅读,更多相关《SAS系统数据管理ppt课件.ppt(73页珍藏版)》请在三一办公上搜索。

1、第15章 数据管理,清华大学经管学院 朱世武ZResdat样本数据:SAS论坛: ,SAS系统提供的过程按其用途可分为四大类: 数据管理; 基础统计; 数据呈现; 数据访问。 和任何一种编程语言一样,SAS 系统有一些数据管理过程,用于实现常用的中间操作或数据转换。,本章将介绍的数据管理过程:,数据集排序; 数据集转置; 改变输出地点; 添加观测; 数据库复制。,数据集排序,利用SAS的排序过程可以对数据集中的观测重新排序。SAS许多和BY配合使用的语句,如对数据集进行合并的语句或更新语句等,使用前必须先对BY变量进行排序。 排序过程句法PROC SORT ; BY variable-1 va

2、riable-n;,PROC SORT语句,PROC SORT ;选项说明:,其中:选项FORCE强行实施多余排序。排序并替换原来加索引的或取子集的数据集,即没有规定OUT=选项时,如果没有规定FORCE,就不能对有索引的数据集进行排序和替换。没有规定OUT=选项时必须使用FORCE的选项有: OBS=系统选项; FIRSTOBS=系统选项; DATA=数据集中的数据集选项WHERS=; PROC SORT 步用WHERE语句。,BY语句,BY variable-1variable-n;PROC SORT中必须使用BY语句,BY语句中可以规定任意多个变量。BY语句中规定多个变量时,SORT过程

3、首先按第一个变量排序,然后是第二个变量等。BY语句中可以规定的选项:DESCENDING对变量按下降次序排序。,应用举例,例15.1 按多变量排序。data a;set ResDat.Idx000001;year=year(date);qtr=qtr(date);month=month(date);proc sort data=a out=b;by year qtr month;run;例中,对上证数据Idx000001按年、季和月排序。,例15.2 按单变量降序排列。 proc sort data= ResDat.a600001 out=a; by descending clpr; proc

4、 print data=a (obs=3) noobs; var date clpr; run; 例中,按收盘价CLPR的降序排列。,数据集转置,转置就是把数据集的观测变为变量,变量变为观测。利用SAS的转置过程可以对数据集进行转置。,转置过程句法,PROC TRANSPOSE ; BY variable-1 variable-n ; COPY variable(s); ID variable; IDLABEL variable; VAR variable(s);,语句说明:,PROC TRANSPOSE 语句,PROC TRANSPOSE ;选项说明:,VAR语句和ID语句,VAR语句VAR

5、 variable-list;VAR语句列出要转置的变量。没有VAR语句时,则没有列在其它语句里的所有数值变量被转置。,ID语句ID variable;ID语句规定输入数据集中一个变量。ID变量的值为转置后数据集的变量名。在没有选项LET时,ID变量的值在数据集中只能出现一次,使用BY语句,BY组内只包含最后的ID值。,应用举例,例15.4 ID变量的值为转置后数据集的变量名。proc transpose data=ResDat.class out=a let;id name;proc print;run;例中,原数据集CLASS中变量NAME的值为转置后数据集A的变量名,对所有数值变量转置。

6、数据集A中还有一变量_NAME_.,SAS 系统 1 2007年03月07日 星期五 下午09时21分17秒 Obs _NAME_ Alice Barbara Carol Jane Janet Joyce Judy Louise Mary Alfred 1 Age 13.0 13.0 14.0 12.0 15.0 11.0 14.0 12.0 15.0 14.0 2 Height 56.5 65.3 62.8 59.8 62.5 51.3 64.3 56.3 66.5 69.0 3 Weight 84.0 98.0 102.5 84.5 112.5 50.5 90.0 77.0 112.0 1

7、12.5 Obs Henry James Jeffrey John Philip Robert Ronald Thomas William 1 14.0 12.0 13.0 12.0 16 12.0 15 11.0 15.0 2 63.5 57.3 62.5 59.0 72 64.8 67 57.5 66.5 3 102.5 83.0 84.0 99.5 150 128.0 133 85.0 112.0,例15.5 BY组内最后一个ID值的观测被转置。proc transpose data=ResDat.class out=a let;id sex;proc print;run;结果显示:,r

8、oc transpose data=ResDat.class out=a let;id sex;by sex;proc print;run;结果显示:,例15.8 对每个BY组转置。options nodate pageno=1 linesize=80 pagesize=40;proc transpose data=ResDat.fishdata out=fishlength(rename=(col1=Measurement);var length1-length4;by location date;run;proc print data=fishlength noobs;title Fish

9、 Length Data for Each Location and Date;run;,Fish Length Data for Each Location and Date 1 Location Date _NAME_ Measurement Cole Pond 02JUN95 Length1 31 Cole Pond 02JUN95 Length2 32 Cole Pond 02JUN95 Length3 32 Cole Pond 02JUN95 Length4 33 Cole Pond 03JUL95 Length1 33 Cole Pond 03JUL95 Length2 34 Co

10、le Pond 03JUL95 Length3 37 Cole Pond 03JUL95 Length4 32 Cole Pond 04AUG95 Length1 29 ,输出窗口显示,例15.10 对转置后的数据集作统计分析。,options nodate pageno=1 linesize=80 pagesize=40;data split;set ResDat.weights;array s7 s1-s7;subject + 1;do Time=1 to 7;strength=stime;output;end;drop s1-s7;run;proc print data=split(ob

11、s=15) noobs;title Split Data Set;title2 First 15 Observations Only;run;,/*接左侧*/proc transpose data=split out=totsplit prefix=Str;by program subject;copy time strength; var strength;run;proc print data=totsplit(obs=15) noobs;title Totsplit Data Set;title2 First 15 Observations Only;run;,改变输出地点,缺省情况下,

12、SAS过程输出到OUTPUT窗口,SAS日志输出到LOG窗口。利用SAS的PRINTTO过程可以设定SAS过程和日志的输出地点。PRINTTO过程有以下功能: 改变过程输出的目的地; 改变SAS日志输出的目的地; 有选择地限制SAS输出; 将输出结果存放在永久文件中; 将输出直接送到打印机上; 将SAS的输出作为输入数据(这时需要一些附加的程序语句)。,PRINTTO过程句法,PROC PRINTTO ;选项说明 注意:一般情况下,PROC PRINTTO后面一定要加RUN语句。若省略RUN语句,则会丢失PRINTTO后面DATA步或PROC步第一行的输出。,应用举例,例15.11 将SAS日

13、志输出到外部永久文件。proc printto log= d:log.dat; /*直接输出到永久文件中*/filename f1 d:out.txt;proc printto log= f1; /*输出到文件标记*/例15.12 将运行结果输出到外部永久文件。filename f2 d:out.list;proc printto print=f2; /*输出到文件标记*/proc printto print= d:out.list; /*直接输出到永久文件中*/,例15.13 直接打印输出结果。filename f printer;proc printto print=f;/*直接打印*/p

14、roc printto print=print;/*返回到缺省输出地点*/例15.14 替换原输出文件。proc printto print=d:out.txt log= d:log.dat new;proc print data=ResDat.class;run;,添加观测,利用SAS的APPEND过程可以将一个SAS数据集的观测添加到另一个SAS数据集的后面。,APPEND过程句法,PROC APPEND BASE=SAS-data-set ; APPEND过程中只需要一个语句。 选项说明:,应用举例,例15.17 有条件添加数据。proc append base=data1 data=d

15、ata2(where=(X=1);run;proc append base=a data= ResDat.stk000001(where=(year(date)=1999) ;run;例中,使用数据集选项WHERE=或WHERE语句来限制DATA=的数据集中只有满足条件的观测被加到BASE=的数据集中。,数据库复制,利用SAS的COPY过程可以复制整个SAS数据库或其中的数据库成员。,COPY过程句法,PROC COPY OUT=libref-1 IN=libref-2 ; EXCLUDE SAS-file(s) ; SELECT SAS-file(s) ; 子语句说明:Select规定要拷贝

16、数据库IN=中的成员;Exclude规定不拷贝数据库IN=中的成员。,PROC COPY语句选项,选项说明:,有效的成员类型(MEMTYPE):,应用举例,例15.18 两个SAS逻辑库之间复制数据集和目录册。proc copy in=lib1 out=lib2 MTYPE=(data catalog);run;例15.19 将逻辑库LIB1的所有SAS文件移动到LIB2中。proc copy in=lib1 out=lib2 move;run;,例15.21 选择以DAT开头的所有文件。data ResDat.dat ResDat.dat1 ResDat.dat2 ResDat.dat3 (

17、alter=zsw);var=move;run;proc copy in=ResDat out=work move;select dat: (alter=zsw);run;,第八章 对数极大似然估计,极大似然估计法(maximum likelihood, ML),是不同于最小二乘法的另一种参数估计方法,是从极大似然原理发展起来的其他估计方法的基础。虽然其应用没有最小二乘法普遍,但在计量经济学理论上占据很重要的地位,因为极大似然原理比最小二乘原理更本质地揭示了通过样本估计母体参数的内在机理,计量经济学理论的发展更多的是以极大似然估计原理为基础的,对于一些特殊的计量经济学模型,只有极大似然方法才是

18、很成功的估计方法。,EViews包含了一些常用方法,如最小二乘法、非线性最小二乘法、加权最小二乘法、TSLS、GMM、ARIMA、ARCH、GARCH等方法,这些方法可以解决可能遇到的大多数估计问题。但是,我们在研究中也可能会碰到一些不在上述之列的特殊的模型,这些模型可能是现存方法的一个扩展,也可能是一类全新的问题。 为了能解决这些特殊的问题,EViews提供了对数极大似然估计对象这一工具来估计各种不同类型的模型。对数极大似然估计对象提供了一个一般的,开放的工具,可以通过这个工具极大化相关参数的似然函数对一大类模型进行估计。,使用对数极大似然估计对象估计时,我们用EViews的序列生成器,将样

19、本中各个观测值的对数似然贡献描述为一个未知参数的函数。可以给出似然函数中一个或多个参数的解析微分,也可以让EViews自动计算数值微分。EViews将寻找使得指定的似然函数最大化的参数值,并给出这些参数估计的估计标准差。 在本章,我们将详细论述对数极大似然估计对象,说明其一般特征。并给出了一些可以使用该方法的具体的例子。,8.1 对数极大似然估计的基本原理,8.1.1 极大似然估计的基本原理 设总体的概率密度函数为P,其类型是已知的,但含有未知参数(向量)。我们的目的就是依据从该总体抽得的随机样本 y1, y2, , yT ,寻求对 的估计。 观测值 y1, y2, , yT 的联合密度函数被

20、给定为 (8.1.1)其中:y = ( y1, y2, , yT )。将这一联合密度函数视为参数 的函数,称为样本的似然函数(likelihood function)。,极大似然原理就是寻求参数的估计值 ,使得所给样本值的概率密度(即似然函数)的值在这个参数值之下,达到最大。在当前的情形下,就是寻求 的估计值,使得似然函数 L(y ; ) 相对于给定的观测值 y1, y2, , yT 而言达到最大值, 就被称为极大似然估计量。,在 L(y ; ) 关于i(i =1, 2, , n,n是未知参数的个数)的偏导数存在时,要使 L(y ; ) 取最大值, 必须满足, i =1, 2, , n (8.

21、1.2)由上式可解得 n1 向量 的极大似然估计值 ,而式(8.1.2)也被称为似然函数。,因为 L(y ; ) 与 lnL(y ; ) 在同一点处取极值,所以也可以由 , i =1, 2, , n (8.1.3)求得,因为对数可将乘积变成求和,所以,式(8.1.3)往往比直接使用式(8.1.2)来得方便。式(8.1.3)也被称为对数似然函数。,考虑多元线性回归模型的一般形式 , t =1, 2 , , T (8.1.4)其中 k 是解释变量个数,T 是观测值个数,随机扰动项 ,那么 yt 服从如下的正态分布: 其中(8.1.5),y 的随机抽取的 T 个样本观测值的联合概率函数为 (8.1.

22、6)这就是变量y的似然函数,未知参数向量=1, 2, k, 2。 对似然函数求极大值和对数似然函数求极大值是等价的,式(8.1.6)的对数似然函数形式为: (8.1.7),注意,可以将对数似然函数写成 t 时刻所有观测值的对数似然贡献和的形式, (8.1.8) 这里对数似然的单个贡献(用小写字母表示)由下面的式子给出: (8.1.9),式(8.1.7)也可用标准正态分布的密度函数 表示 (8.1.10)式中标准正态分布的对数似然函数 为 (8.1.11)这里对数似然函数每个观测值的贡献式(8.1.9)又可以由下面的式子给出: (8.1.12),8.1.2 EViews极大似然对象概述 用对数极

23、大似然估计来估计一个模型,主要的工作是建立用来求解似然函数的说明文本。用EViews指定对数极大似然函数的说明是很容易的,因为似然函数的说明只是一系列对序列的赋值语句,这些赋值语句在极大化的过程中被反复的计算。我们所要做的只是写下一组语句,在计算时,这些语句将描述一个包含每个观测值对似然函数贡献的序列。,注意到,我们能将对数似然函数写成所有观测值 t 的对数似然贡献和的形式, 这里单个贡献由下面的式子给出:,以只含一个解释变量的一元线性回归方程为例 , t =1, 2 , , T 假定知道模型参数的真实值,并且想用EViews产生一个包含每个观测值的贡献的序列。,未知参数向量 =0, 1, 2

24、, 可以将参数初值赋给系数向量的c(1)到c(3)元素,然后把下面的赋值语句作为EViews的命令或程序来执行。 Series res = y-c(1)-c(2)*x Series var = c(3) Series logL1 = -log(2*3.14159*var)/2- (res2/var)/2 前面两行语句描述了用来存储计算时的中间结果的序列。第一个语句创建了残差序列:res,而第二个语句创建了方差序列:var。而序列logL1包含了每个观测值的对数似然贡献的集合。,下面考虑2个变量的例子: 这里,y, x, w 是观测序列,而 =1, 2, 3, 2是模型的参数。有T个观测值的样本

25、的对数似然函数可以写成: 这里, 是标准正态分布的密度函数。,将这一例子的对数极大似然函数过程写成下面的赋值语句: Series res=y-c(1)-c(2)*x-c(3)*w Series var=c(4) Series logL1=log(dnorm(res/sqrt(var)-log(var)/2 前面两行语句创建了残差序列res和方差序列var,参数c(1), c(2), c(3)代表了回归系数1, 2, 3,c(4)代表了 2,序列logL1包含了每个观测值的对数似然贡献的集合。,下面考虑稍复杂的例子,假设数据是由条件异方差回归模型生成的: 这里,x, y, w 是观测序列,而 =

26、1, 2, 3, 2, 是模型的参数。有T个观测值的样本的对数似然函数可以写成: 这里, 是标准正态分布的密度函数。,将这一例子的对数极大似然函数过程写成下面的赋值语句: Series res=y-c(1)-c(2)*x-c(3)*w Series var=c(4)*wc(5) Series logL1=log(dnorm(res/sqrt(var)-log(var)/2 前面两行语句创建了残差序列res和方差序列var,参数c(1), c(2), c(3)代表回归系数1, 2, 3,c(4)代表 2,c(5)代表 ,序列logL1包含了每个观测值的对数似然贡献的集合。,现在假定不知道模型参数

27、的真实值,而想使用数据来估计它。参数的极大似然估计被定义为:使得样本中所有随机抽取的一组观测值的联合概率密度,即似然函数取最大值的那组参数值。 而对数极大似然方法使得寻找这些极大似然估计变得容易了。只需创建一个对数似然对象,把上面的赋值语句输入到logL的说明窗口,然后让EViews来估计这个模型。,在输入赋值语句时,只需对上面的文本做两处微小的改动就可以了。首先,把每行开头的关键字series删掉(因为似然说明暗含了假定序列是当前的)。第二,必须在说明中加入额外的一行(关键字logL为包含似然贡献的序列命名)。 这样,要在logL说明窗口输入下面的内容: logL logl res = y-

28、c(1)-c(2)*x-c(3)*w var = c(4)*wc(5) logl = log(dnorm(res/sqrt(var)-log(var)/2 对数似然函数的第一行,logL logl,告诉EViews用logl序列来存储似然贡献。余下的行定义了中间结果的计算和实际的似然贡献的计算。,当用EViews估计模型参数时,它将对不同参数值重复执行说明中的赋值语句,使用迭代法来求使得对数似然贡献最大的一组参数值。当EViews再不能提高全部似然贡献时,它将停止迭代并在估计输出中报告最终参数值和估计标准差。 本章下面的部分将更详细地讨论使用似然方法说明,估计和检验时要遵循的规则。,要创建一个

29、似然对象,选择Objects/New Object./ LogL或者在命令窗口输入“logL”。似然窗口将打开一个空白说明视图。说明视图是一个文本窗口,在这个窗口里可以输入描述统计模型的说明语句,还可以设置控制估计程序各个方面的选项。,8.1.3 似然说明,1似然的定义 正如上节中所描述的那样,似然说明的主线是一系列赋值语句,在计算时,这些赋值语句将产生一个包含样本中每个观测值的对数似然贡献的序列。赋值语句的多少可以自己决定。,每个似然说明都必须包含一个控制语句,该语句命名了保存似然贡献的序列。语句的格式为: logL series_name这里logL是关键字,series_name是保存似

30、然贡献的序列的名字,可以写在似然说明的任何位置。 例如,对于一元线性回归方程的似然说明来说,第一行:logL logl是似然贡献的序列的说明。当对模型进行计算时,EViews将在现有参数值下执行每个赋值语句,并将结果保存到指定名称的序列里。如果序列不存在,系统将自动创建,如果已经存在,系统将使用现有的序列,并覆盖序列原来的内容。,如果想在估计完成后删除说明中的一个或多个序列,可以使用temp语句: temp series_name1 sereis_name2 . 这个语句告诉EViews在对说明的计算完成后,删除列表中的序列。如果在logL中创建了许多中间结果,又不愿意工作文件因包含这些结果的

31、序列而弄得混乱的话,删除这些序列将是很有用的。例如,图8.2中的最后一行语句就是命令EViews在估计结束后,删除估计产生的中间序列res、var和logl。 这里需要强调一点,在似然说明的文本中可以加入说明语句,说明语句的前面加上撇号“”,则这个语句将不被执行。,2参数名 在上面的例子中,我们使用了系数c(1) 到c(5) 作为未知参数的名称。更一般的,出现在说明中一个已命名的系数向量中的每一个元素都将被视为待估参数。例如创建2个命名的系数向量: beta(2) sigma(1) 于是可以写出下面的似然说明: logL logL1 res=cs- beta(1)- beta(2)*inc v

32、ar=sigma(1) logl1=log(dnorm(res/sqrt(var)-log(var)/2,由于说明中的已命名的系数向量的所有元素都将被视为待估参数,必须确定所有的系数确实影响了一个或多个似然贡献的值。如果一个参数对似然没有影响,那么在试图进行参数估计时,将遇到一个奇异错误。 应该注意到除了系数元素外所有的对象在估计过程中都将被视为固定的,不可改变的。例如,假定omega是工作文件中一个已命名的标量(scalar omega),如果将子表达式var定义如下: var = omega EViews将不会估计omega 。omega的值将被固定在估计的开始值上。,3估计的顺序 log

33、L说明包含了一个或多个能够产生包含似然贡献的序列的赋值语句。在执行这些赋值语句的时候,EViews总是从顶部到底部执行,所以后面计算要用到的表达式应放在前面。 EViews对整个样本重复地计算每个表达式。EViews对模型进行重复计算时采用方程顺序和样本观测值顺序两种不同方式,这样就必须指定采用那种方式,即观测值和方程的执行顺序。,(1)观测值顺序( byobs ) 默认情形下,EViews用观测值顺序来计算模型,此种方式是先用第一个观测值来计算所有的赋值语句,接下来是用第二个观测值来计算所有的赋值语句,如此往复,直到估计样本中所有观测值都使用过。这是用观测值顺序来计算递归模型的正确顺序,递归

34、模型中每一个观测值的似然贡献依赖于前面的观测值,例如AR模型或ARCH模型。,(2)方程顺序( byeqn ) 可以改变计算的顺序,这样EViews就可以用方程顺序来计算模型,先用所有的观测值来计算第一个赋值语句,然后用所有的观测值计算第二个赋值语句,如此往复,对说明中每一个赋值语句都用同样方式进行计算。这是用中间序列的总量统计作为后面计算的输入的模型的正确顺序。 可以通过在说明中加入一条语句来声明所选择的计算方法。要用方程顺序来计算,仅加一行关键字“byeqn”。要用样本顺序来计算,可以用关键字“byobs”。如果没有给出关键字,那么系统默认为“byobs”。,例8.1 一元线性回归方程的极

35、大似然估计 以例3.1的消费函数作为例子,分析普通回归方程的极大似然估计方法。消费函数的被解释变量cs为实际居民消费,解释变量为实际可支配收入inc,变量均为剔除了价格因素的实际年度数据,样本区间为19782006年。那么凯恩斯消费函数的方程形式就可以写成: (8.2.5) 其中:ut服从标准正态分布,cs = CS/CPI,inc = YD / CPI , CPI 代表1978年为1的居民消费价格指数, 代表自发消费, 代表边际消费倾向,则参数向量为=(,u2),观测值个数T =29。,利用前面的式(8.2.2),我们可以写出这个方程的对数极大似然函数 (8.2.6) (8.2.6)式中zt

36、 = (cst- -inct) / u。,利用极大似然方法求解,作为byobs语句的一个例子,考虑下面的说明: EViews用观测值顺序来计算模型,此种方式是先用第一个观测值来计算所有的赋值语句,接下来是用第二个观测值来计算所有的赋值语句,如此往复,直到估计样本中所有观测值都使用过。本例将方差作为未知参数c(3),一起求解。,进行极大似然求解之后,得到 和 的估计值: c(3)是方差的估计结果。这个结果与最小二乘法得到的结果完全相同。,作为byeqn语句的一个例子,考虑下面的说明: 进行极大似然求解之后,得到 和 的估计值:,例8.4 具有异方差的一元线性回归模型的极大似然估计,根据第4章例4

37、.1,各省人均家庭交通及通讯支出(cum)和可支配收入(in)的关系,样本个数为30,考虑如下具有异方差性的方程: (8.2.40) 为消除方程中的异方差,利用加权最小二乘法求解,设t = cumt 0 1 int ,w=1/| ,可以写出式(8.2.40)的对数极大似然函数 (8.2.41)它的未知参数向量为 = (0, 1)。,也可用同样的处理方法利用极大似然方法求解,作为byeqn语句的一个例子,考虑下面的说明: 这个说明通过利用残差res建立加权向量w=1/abs(res)来完成一个加权最小二乘回归。res的赋值语句计算了在每次计算时的残差,而这被用做构造权重序列。byeqn语句指示EViews在一个给定的迭代过程中,必须先算出所有的残差res,然后再计算残差的加权向量w。本例方差用样本方差替代,也可将方差作为未知参数c(3),一起求解。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号