EViews编程的各种表达语言(共63页).doc
精选优质文档-倾情为你奉上 EViews编程 EViews不仅提供了方便快捷的交互式窗口操作方式 而目提供了强大的程序语句。借助这些程序语言,可以更快捷地完成许多任务。本章介绍EViews对多种对象的基础操作命令,在计量经济模型分析中常用的运算指令以及基础程序语句。在阅读本章之前,首先需要说明三点:1)本章所介绍的命令主要以 EViews 3.1版本为基础,同时对EViews3.1 以后的更新版本新增的命令也给以充分的介绍,但高版本的新增命令与功能在较低版本中一般不能运行。2)学习编程入门知识的一个较好的方法是根据我们提供的案例进行实践操作。为了便了读者阅读,本章案例所提供的命令语言或程序均用 Courier New字体显示。关于命令语言的文字说明,统一加括号表示。3)在本章的举例中凡带有(file:)标志的,意说着该例子可以用数据文件(file:)练习操作。该数据文件可以免费下载。 15.1 EViews基本操作命令简介 EViews中所有的数据分析都必须在一个工作文件中进行,因此首先需要建立一个工作文件,然后在此基础上根据研究的不同目的建立各种工作对象进行分析。EViews中基本的工作对象包括:序列(Series)、alpha序列(Alpha)、数值映射(Valmap)、方程(Equation)、数组(Group)、样本S(Sample)、对数似然(LogL)、矩阵(Matrix)、对称矩阵(Sym)、列向量(Vector)、行向量(Rowvector)、系数向量(Coef)、标量(Scalar)、面板(Pool)、向量自回归(VAR)、状态空间(Space)、系统(Sysem)、模型(Model)、表格(Table)、图形(Graph)等。不同的工作对象其图标也不同,详见第1章表1-1。 在这些工作对象中,序列(series)和方程(equation)是最基本的,也是应用最多的两种。在这一节 我们将重点介绍对工作文件和几个基本工作对象以及数据读取的基础操作命令。 15.1.1工作文件的基本操作 15.1.1.1 对工作文件的操作 1建立工作文件 EViews可以很轻松地实现对截面数据、时间序列数据和面板数据的输入、建立不同类型工作文件的命令格式如下: 截面数据: 命令格式: wfcreate(选项)u 观测值个数 时间序列数据: 命令格式: wfcreate(选项)时间频率选项 起始日期 终止日期 面板数据: 命令格式: wfcreate(选项)时间频率选项 起始日期 终止日期 截面个数 选项包括: Wf=为工作文件命名 Page=为工作文件的文件页命名 时间频率选项包括asqmwd7U。 a表示年度数据,S表示半年度数据,q表示季度数据,m表示月度数据,w表示周数据;d表示日数据(每周5天,周一至周五),7表示日数据(每周7天) 起始日期和终止日期的格式请参见“日期”一节的说明。 例(1):wfcreate(wf=myfile,page=page1) u 31 建立一个名字为myfile的工作文件,并在这个文件中建立名为Page1的工作页,数据为截面数据,共有31个截面。 例(2):wfcreate(wf=myfile,page=page1) m 1980m1 2000m12 建立一个名字为myfile的工作文件,并在这一文件中建立名为“Page1”的工作页,数据为月度数据,区间为1980年1月至2000年12月。 例(3):wfcreate(wf=myfile,page=page1) q 1990q1 2005q4 20 建立一个名字myfile的工作文件,并在这一文件中建立名为“Page1”的工作页,数据为面板数据,时间跨度为1990年第一季度至2005年第四季度,共20个截面。 2保存工作文件 命令格式:wfsave保存的位置保存的文件名 例:wfsave a:mywork 将工作文件mywork保存在a盘。 3 关闭已存在的工作文件 命令格式:Close文件名 例:close mywork 关闭mywork文件。 4 打开已存在的工作文件 命令格式:load文件名 例:load “a:mywork” 打开mywork文件。 5激活工作文件 如果有多个工作文件同时打开,那么所有操作只是对处于激活状态的文件起作用,激活某个工作文件可以使用如下命令, 命令格式:wfselect 工作文件名称15.1.1.2对工作页的操作 为便于操作,Eviews 5.X版本在一个工作文件中设定了多个页(Page),因此,用户在创建工作文件时需要同时创建工作页,工作页的建立可以采用如下命令。 1创建工作文件时创建工作页 命令格式:wfcreate(选项)频率 区间 其中,选项包括: Wf= 工作文件的名称。 Page= 工作页的名称。 例:wfcreate(wfmacro,page=china) a 1980 2005 创建工作文件macro,并创建工作页china,区间为19802005年。 2在现有工作文件中创建新的工作页命令格式:Pagecreae(选项)频率 起始日期 终止日期选项包括: Page= 工作页的名称。 例:pagecreate(page=page2) q 1980q1 2005q4 3将其他工作页的工作对象添加到当前工作页 命令格式:Pageappend(选项) 工作文件名称工作页名称需要添加的工作对象 选项包括 smpl=smpl_space 设定样本区间,默认为“all”。 allobj 添加所有的工作对象。 match 只添加名称相同的工作对象。 sufix=arg 为添加的工作对象设置后缀,默认为“_a”,这样可以避免将目标工作页中名称胡同的工作对象覆盖。 pageselect page1 pageappend(smpl=”1998m1 2000m12”) page2 x* 将Page2中的以x开头的所有工作对象在区间1998:12000:12的数据附加到当前工作页page1中。 需要注意的是,使用pageappend将取消当前工作页的日期结构。因此,使用此命令后必须利用pagestruct命令恢复原来的日期结构。 4删除工作页的部分样本 命令格式:papecontract新的区间 注:只是对当前处于活动状态的工作页起作用。 5工作页的复制 命令格式:pagecopy(选项) 需要复制的工作对象 将当前工作页的部分或全部工作对象复制到当前工作文件的其他工作页,或复制到其他工作文件。 选项包括 smpl 设定需要复制的样本区间,默认为“a11”。 dataonly 仅复制出series、alpha、link、和valmap四类对象。 nolink 不复制link。 wf 目标工作文件。 page 目标工作页。 例(1)Pagecopy(wfnewwf,pagepagel) 将当前工作页的所有工作对象全部复制到新的工作文件newwf中新的工作页page1里。 例(2)pagecopy(page=newpage) Y* 将当前工作页中所有以y开头的工作对象复制到当前工作文件中新的工作页newpage里。 6工作页的删除 命令格式:Pagedelete 工作页名称 7工作页的调入 命令格式:pageload 路径工作文件名 从其他工作文件中调入一个或多个工作页到当前的工作文件中。 8工作页的重命名 命令格式:pagerename 原来的名称 新的名称 9工作页的保存 命令格式:Pagesave 需要保存的工作页名称 10工作页的激活 EViews在打开一个工作文件时,其所包含的多个工作页都同时打开,但要对其中的某个工作页进行操作,必须首先使其处于活动状态。激活命令为: 命令格式1:pageselect 需要激活的工作页名称 命令格式2:wfselect 工作文件名称工作页名称 例(1):pageselct page3 例(2):wfselect mypwflPage2 11构建工作页的结构 命令格式:pagestruct(选项)ID序列 把某个工作文件的结构应用到当前的工作页。 其中,ID序列可选可不选,如果设定了这项内容, 那么EViews自动决定工作文件的结构,但其自动决定的结构可以通过(选项)中的设定加以覆盖; 也可以用*表示所有的对象。 选项包括: None 取消现有的工作文件结构。 Freq= 设定文件的数据频率,包括”a”(annual),”s”(semi-annual),”q”(quarterly),”m”(monthly)、”w”(weekly)、”d”(5-day daily)、”7”(7day daily)或”u”(unstructed/undated)。 Start= 起始日期,如果没有设定,那么EViews将默认为“first”。 End 终止日期,如果没有设定,那么EViews将默认为“last”。 regular(或reg) 如果文件中存在漏掉的日期,那么EViews自动补充。 balance=(或bal) 适用于面板数据,”balance=s”或”balance=e”或”balance=m”,EViews自动加入观测值,分别使得每个截面的起始日期相同、使得每个截面的终止日期相同、使得每个截面的起始和终止日期相同。 dropna 在ID序列中如果存在缺失值,将其删除。 dropbad 如果日期指数序列包含不规则的日期,将其删除。 注:对日期的设定可以使用“十”或“”。 例 pagestruct(start=first-12,end=last+5)在现有文件的前面添加12个观测值,在后面添加5个观测值。 注:EViews5.0、EWews5.1以前的版本使用“expand”或“range”命令来改变工作文件的区间, EViews5.0、EWews5.1以后的版本中可以使用pagestruct来实现上述操作。15.1.2 建立工作对象 命令格式1:对象类别 对象名称 例 equation eq01 建立方程eq01。 matrix(5,5) mat 建方5×5阶的矩阵。 命令格式2: 操作方式 对象名称 观察程序(选项) 观察程序语句 对工作对象的操作方式有四种:do、freeze、show、和print。 Do 执行命令 Freeze 生成表格 Print 打印处于激活状态的对象 Show 显示对象 例:do eq01.ls y c x 用普通最小二乘法估计y对常数项和x的回归 注:如果没有输入do、show等命令,那么EViews对程序操作的缺省选项命令是do,而对观察操作的缺省选项命令是show。如: equation.ls y c x表示对方程yc(1)c(2)*xu用最小二乘法回归,此命令等同于do equation.ls y c x。再如: gdp.line表示观察序列 gdp的曲线图,此命令等同于 show gdp.line。 下面对几个基本工作对象逐一进行介绍。15.1.3 样本区间(sample) 如果只想对整个区间中的某部分样本进行操作,这时需要首先建立样本区间。15.1.3.1 建立样本区间 命令格式:sample 样本区间名 起始日期1 终止日期1 起始日期2 终止日期2 if条件语句 例(1):sample mysp 1978:01 l992:12 1997:01 2000:12 设定样本区间mysp,包括两个时段,第一时段从1978年1月至1992年12月,第二时段从1997年1月至2000年12月。 例(2):sample mysp 1978:01 2000:12 ifx0 设定样本区间mysp 从1978年1月至2000年12月之间所有满足x0的观测值 注1:多个条件可以用 and或or连接。 注2:sample 只是设定样本区间对象,操作命令仍然针对整个工作区间,如要在样本区间内进行操作,还必须使样本区间对象生效,方法是用smpl命令。15.1.3.2 smpl命令 命令格式:smpl 样本区间名或直接设定符合条件的样本区间 例(1):smpl mysp 使上面设定的样本区间 mysp生效。 例(2):Smpl 1978 2000 if x1000 and y500 设定样本区间为19782000年之间同时X1000和y500的所有观测值。 注:如果没有满足条件的观测值,那么在样本区间内的操作不起任何作用。如: sample mysp if x>9 and x<6 建立样本区间 mysp smpl mysp 使上述区间mysp生效 scalar s=obs(x) 建立数值标量s表示观察 x在样本区间内的观测值个数。 结果将显示s=0。 series y=trend() 建立时间趋势序列y 结果将显示y中所有数据均为Na。15.1.3.3 几个特殊命令 first 第一个观测值。 last 最后一个观测值。 all 整个工作区间 例:smpl first first+99 last-99 last 表示样本区间为前100个观测值和后100个观测值。15.1.3.4 重新设定样本区间 命令格式:样本区间名.set 新的起始日期 新的终止日期 If条件语句 例:mysp.set 1988:01 1998:12 将样本区间mysp重新设定为从1978年1月至1998年12月15.1.4 序列(series) EViews中,序列代表一个变量的一组观测值,可以是时间序列数据(规则的或不规则的),也可以是截面数据。15.1.4.1 生成新序列 1生成新序列 命令格式1:series 序列名称 命令格式2:genr 序列名称表达式 利用公式创建序列。 命令格式3:frml 序列名称表达式 利用公式创建自动更新的序列。 例:series gdP 建立序列gpd(只是建立工作对象,数据尚未输入) Genr dgdpd(gdp) 生成序列dgdp,为gdp的一阶差分 Frml dqdpd(gdp) 生成自动更新的序列dgdp,为gdp的一阶差分 2序列数据的填充 命令格式:序列名.fill 数据 例:gdp.fill 135,259, 逐个输入序列gdp的元素 3通过已有的序列生成新序列 命令格式:series 序列名表达式 例:series lngdp=log(gdp) 生成新序列lngdp,为序列gdp的对数 注:EViews工作文件中自身带有一个序列resid,此序列用于存放最新估计方程的残差项,即每当估计新方程时,resid的数值会自动更新。15.1.4.2 自动生成新的序列 EViews中设定了一些特殊变量的生成命令,下面逐一介绍。 1时间趋势变量 命令格式:series time=trend(d) 生成时间趋势变量time,第d期指定的位置为0,往后依次加1,往后依次减1。d的格式由工作文件的数据类型来决定 例:workfile mywork q 1980:1 2000:4 建立季度数据工作文件mywork series time=trend(1981:01) 生成序列time,1981年第一季度为0,1980年第四季度为1,1981年第二季度为1, 2ID序列 命令格式:sereis 序列名obsnum 每一个观测值对应的顺序号,即1,2, 例:workfile mywork q 1980:1 2000:4 建立季度数据工作文件mywork series time=obsnum 生成序列time取值为1,2,84。 3季节虚拟变量 命令格式:series dumseas(s) 生成季节性虚拟变量dum,对应第s个季度(或月度)dum为1,其余季度(月度)dum为0。 例:workfile mywork q 1981:1 2000:4 建立季度数据工作文件mywork series dum1seas(1) 建立虚拟变量dum1,第1季度取1,其他季度取0 4季节变量 命令格式:series s=daymonthquarteryear 生成季节变量s,s的取值为其对应的月价值。 例:workfile mywork m 1990:01 2000:12 建立月度工作文件mywork series m=month 生成序列m,m的取值为对应的月份值,即 1月份取 1,2月份取2,12月份取12 5其他虚拟变量 命令格式:首先定义符合条件的样本区间,然后给虚拟变量赋值。 例:workfile mywork a 1950 2000 建立年度数据工作文件mywork Smpl 1950 1978 设定样本区间从19501978年 Series dum=0 建立虚拟变量dum,在19501978年dum取值为0 Smpl 1979 2000 设定样本区间从19792000年 Dum=1 虚拟变量dum在19792000年取值为1 Smpl all 恢复整个样本区间。 注:虚拟变量除了在回归模型中直接作为解释变量(如分段回归模型)或被解释变量(如定性响应模型)之外,还可以用做定义样本区间,请看下面的例子。 例:中国19821988年市场用煤销售量(y)季节数锯(中国统计年鉴1987, 1989)。由于受取暖用煤的影响,每年第4季度的销售量大大高于其他季度,因此,在回归模型中需要加入季节虚拟变量以反映季度因素。设EViews文件为dum.wfl,其中包含四个变量:sale(销售量)、t(时间趋势变量)、dum1(虚拟变量,第1季度取1,其他季度取0),dum2 (虚拟变量,第 2季度取1,其他季度取 0),dum3(虚拟变量,第 3季度取1, 其他季度取0)。回归模型为 如果要单独观察每个季度的回归模型结果,那么需要首先将每个季度定义为样本区间。比如考察第1个季度的回归结果,那么EViews命令为: Smpl If dum11 Equation eq.ls y c t15.1.4.3 提取序列中的某一个元素 命令格式elcm(x,d) 序列x中第d期的元素,d的格式由工作文件的数据类型来决定。 例:workfile mywork q 1981:1 2000:4 建立工作文件mywork series x=trend() 建立时间趋势序列X scalar s=elem(x,”1981:4”) 提取序列 x在1998 年第 4季度的元素,并存放在标量s中,s=3。15.1.4.4 序列的数学运算 只要序列中的数据满足数学运算的条件,那么数学运算公式都可以直接用于序列运算 如sum(x)、mean(x)。更多的运算规则可参见第二部分函数运算一节中关于时间序列函数的说明。15.1.5 数组(group) 几个序列共同构成一个数组。在数组内可以进行序列的协整检验、格兰杰因果关系检验 等多种计量分析,也可以进行多元统计分析(如主成分分析等)。更详细的介绍请参见后面时各种计量模型的分析。建立数组通过下面的命令实现。 命令格式:group 数组名 序列1 序列2 例:group g1 x y z x y z三个序列共同构成一个数组 g1。 数组的其他常用操作命令包括添加序列、删除序列等。15.1.5.1 往数组中添加序列 命令格式:数组名.add 序列名 例: group macro gdp invest macro.add cons import 往数组中添加cons和import两个序列 15.1.5.2 从数组中删除序列 命令格式:数组名.drop序列名 例:group macro gdp invest cons macro.drop cons import 从数组中删除cons和 lmport两个序列15.1.5.3 数组的其他几个常用操作命令 (i) 第i个序列 comobs 观测值个数(不包括缺失值) count 序列的个数 minobs 样本中最少观测值的个数 maxobs 样本中最多观测值的个数 seriesname(i) 第i个序列的名称(字符) 例:group macro gdp invest cons import scalar nummacro.count 数组macro中序列的个数,得到num=415.1.6 Alpha序列(alpha)15.1.6.1 建立alpha序列 Alpha序列用于存放字符型变量。 命令格式1:alpha 序列名称 创建一个新的alpha序列,但没有赋值 命令格式2:genr 序列名林表达式 利用公式创建alpha序列 命令格式3:frml 序列名称表达式 利用公式创建自动更新的alpha序列 例:alpha=brand genr z=(x+y)/2 z的值是固定的,除非重新赋予其新的数值 frml z=(x+y)/2 当x或y的数值变化时,z的数值自动随之改变15.1.6.2 Alpha序列数值的填充 命令格式 alpha(i)=”arg” 第i个观测值为arg例:调查50名消费者对五种品牌饮料的偏好以观察哪一种饮料最受欢迎。这时,可以建立 AIPha序列,并输入数据。EViews命令为 alpha brand Brand(1)=”Coke Classic” Brand(2)=”Pepsi Coke”15.1.7 数值映射(Valmap) 数值映射(简称为映射)是为序列或alpha序列建立描述性的标签,以对其内容进行更详细的描述。比如,定义性别这一虚拟变量如下:gender1,如果为女士;gender=0,如果为男士。对其进行简单的统计描述,输入EViews命令 gender.freq。输出结果如表 151。ValueCountPercentCumulative CountCumulative Percent027452.0927452.09125247.91526100.00Total526100.00526100.00 这时,输出界面不那么直观,需要用户记住数值0或1代表什么含义,而利用映射可以直观地显示0或1所代表的内容。 再比如,建立面板数据时,需要输入多个截面标示符,这时一般用简写来表示。比如United states表示为 US,Japan表示为 JPN等。为了查阅方便,也需要建立映射来直观地体现每个标示符所代表的含义。15.1.7.1 建立valmap对象 命令格式:valmap 映射名称 创建一个新的映射,但没有赋值。15.1.7.2 为映射赋值 命令格式:映射名称.append 内容 以上面的性别和国家为例,建立映射的EViews命令分别如下 例(1): valmap map_gender map_gender.append 1 female map_gender.append 0 male 例 (2):va1map map_state map_state.append cn China map_state.append jpn Japan15.1.7.3 为序列或alpha序列建立取消数值映射 命令格式1:(alpha或) 序列名称.map 映射名称 建立映射 命令格式2:(alpha或) 序列名称.map 取消映射 例:Gender.map map_gender 这时,重新观察其基本描述指标(Gender.freq)得到的输出结果如表152。 ValueCountPercentCumulative CountCumulative PercentMale27452.0927452.09Female25247.91526100.00Total526100.00526100.0015.1.8 数据导入与导出从其他文件中读入数据到工作文件,可用read命令来完成。 命令格式:read(选项)路径文件名 序列1 序列2 选项包括: t=dat/txt ASCII纯文本文件 t=xls 读取excel格式的文件 t=wk1/wk3 Lotus文件) 其中,对于纯文本文件的选项有 t 按行读入数据,否则按列读取数据 d=t/csa t表示将Tab视作分隔符,c表示将逗号视作分隔符,s表示将空格视作分隔符,a表示将字母视作分隔符,custom表示自己设定一个符号当做分隔符。 mult 将多个分隔符视作一个 name 文件中的序列名 label=整数 标题名与数据相隔的行数 对于 Lotus和 Excel文件的选项有 字母数字 表示左上角的单元格的位置,如B4,D7等 t 按照行读入数据,否则按列读取数据 S数表名称 比如:ssheet1 例:read(t=xls,sdata,b3,name) “d:eviewsexample filestjrhdata.xls” gdp invest cons 读取目录中 data.xls文件工作表data中的数据,B3起的三列数据按列读入 EViews工作文件中,并分别命名gdp、invest和cons。 如果原文件中有序列名,那么可以直接用整数n来表示需要读入的序列的个数,而不用写序列的名字,读入的序列直接以原文件的序列名命名。 例:read(t=xls,sdata,b3,name) “d:eviewsexample filestjrhdata.xls” 3 读取目录中dataxls文件工作表data中的数据,B3起的三列数据按列读入EViews工作文件中,仍然以原序列的名称命名 如果需要将数据读入系数向量、矩阵或面板中,可以用:对象种类read命令。 注:数据导出可用write命令完成,其他选项相同。 例:将三个时间序列 xl x2 x3的数据存人 Excel文件data_l.xls。 write(t=xls,a2,nonames,nodates) “d:eviewsexample filestjrhdata_1.xls” x1 x2 x3不带有变量名 不带有日期 write(t=xls,a2,nonames,nodates) “d:eviewsexample filestjrhdata_1.xls” x1 x2 x3 带有变量名 不带有日期 write(t=xls,a2,nonames,nodates) “d:eviewsexample filestjrhdata_1.xls” x1 x2 x3带有变量名 带有日期 例:将矩阵mat的数据读入Excel文件data_1.xls mat.write(t=xls,a2) “d: eviewsexample filestjrhdata_1.xls” EViews对面板数据的读取与写入请参见“面板数据”一节。 其他工作对象在后面的各章节中予以更详细的介绍。比如,矩阵(marix)、对称矩阵(sym)、向量(vector)、行向量(rowvecor)、系数向量(coef)和标员(scalar)在“矩阵与函数运算”,方程(equation)、对数似然函数(logl)在“ 单方程模型”一节中予以介绍,系统(system) 在“联立方程模型”中予以介绍。向量自回归(var)在“时间序列模型”一节中予以介绍,状态空间(sspace 在“状态空间模型”一节中予以介绍,面板(Pool) 在“面板数据”一节中予以介绍。15.1.9 数据库的基本操作 1数据库的建立 命令格式:dbcreate 数据库名称 例:dbcreate macrodata 2将当前工作文件中的工作对象存入数据库中 命令格式:store(选项)数据库名称:工作对象1 工作对象2其中,选项包括: d= 存入数据库的名称 o 如果数据库中已经存在同名的工作对象,那么将其覆盖 g= 存入数组时的设定方法。g=s:将数组和其中的序列分别存放;g=t:将数组的定义和序列作为一个工作对象存放;g=d:将数组中的序列分别存放;g=i:仅存放数组的定义 注:定义数据库时,“:”要优先于“d=”。 3从数据库中提取工作对象到当前的工作文件中 命令格式:fetch(选项)数据库名称:工作对象1 工作对象2其中,选项包括: d= 提取的数据库的名称 g= 针对数组的设定。g=b:同时提取数组和其中的序列;g=d:仅提取数组中的序列;g=i:仅提取数组的定义fetch(option) object_list 例:dbcreate macrodata fetch(d=macrodata,g=b) 提取macrodata中的数组及其数组中包含的序列15.2 矩阵与函数运算15.2.1 矩阵、对称矩阵、向量、标量15.2.1.1 建立矩阵、对称矩阵、列向量、行向量、系数向量、标量 命令格式:matrix(m,n) 矩阵名 建立mxn阶矩阵。 sym(n) 对称矩阵名 建立m x m阶对称方阵 vector(n) 列向量名 建立长度为n的列向量。 rowvector(m) 行向量名 建立长度为m的行向量 coef(n) 系数向量名 建立长度为n的系数向量。 scalar 标量名 建立标量。15.2.1.2 向量矩阵元素的输入 第一种方法:逐个输入元素 命令格式:矩阵名(m,n)=p 矩阵的第m行第n列的元素赋值为p 例:matrix(2,2) mat mat(1,1)=1 mat(1,2)=2 mat(2,1)=3 mat(2,2)=4建立矩阵mat,第一行元素为1,2; 第二行元素为3,4。 其他形式对象的元素输入与此相同。 第二种方法:用fill命令 命令格式:矩阵名.fill(选项)元素 选项有:b=r 按行输入元素 b=c 按列输入 1 按列循环输入元素 例: mat.fill(b=r)1,2,3,4 按行输入。 mat.fill(b