EViews编程的各种表达语言.docx
《EViews编程的各种表达语言.docx》由会员分享,可在线阅读,更多相关《EViews编程的各种表达语言.docx(118页珍藏版)》请在冰豆网上搜索。
EViews编程的各种表达语言
EViews编程
EViews不仅提供了方便快捷的交互式窗口操作方式而目提供了强大的程序语句。
借助这些程序语言,可以更快捷地完成许多任务。
本章介绍EViews对多种对象的基础操作命令,在计量经济模型分析中常用的运算指令以及基础程序语句。
在阅读本章之前,首先需要说明三点:
1)本章所介绍的命令主要以EViews3.1版本为基础,同时对EViews3.1以后的更新版本新增的命令也给以充分的介绍,但高版本的新增命令与功能在较低版本中一般不能运行。
2)学习编程入门知识的一个较好的方法是根据我们提供的案例进行实践操作。
为了便了读者阅读,本章案例所提供的命令语言或程序均用CourierNew字体显示。
关于命令语言的文字说明,统一加括号<>表示。
3)在本章的举例中凡带有(file:
……)标志的,意说着该例子可以用数据文件(file:
……)练习操作。
该数据文件可以.hzbook.免费下载。
15.1EViews基本操作命令简介
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=<为工作文件的文件页命名>
时间频率选项包括a/s/q/m/w/d/7/U。
<a表示年度数据,S表示半年度数据,q表示季度数据,m表示月度数据,w表示周数据;d表示日数据(每周5天,周一至周五),7表示日数据(每周7天)>
起始日期和终止日期的格式请参见“日期”一节的说明。
例
(1):
wfcreate(wf=myfile,page=page1)u31<建立一个名字为myfile的工作文件,并在这个文件中建立名为Page1的工作页,数据为截面数据,共有31个截面。
>
例
(2):
wfcreate(wf=myfile,page=page1)m1980m12000m12<建立一个名字为myfile的工作文件,并在这一文件中建立名为“Page1”的工作页,数据为月度数据,区间为1980年1月至2000年12月。
>
例(3):
wfcreate(wf=myfile,page=page1)q1990q12005q420<建立一个名字myfile的工作文件,并在这一文件中建立名为“Page1”的工作页,数据为面板数据,时间跨度为1990年第一季度至2005年第四季度,共20个截面。
>
2.保存工作文件
命令格式:
wfsave保存的位置\保存的文件名
例:
wfsavea:
\mywork<将工作文件mywork保存在a盘。
>
3关闭已存在的工作文件
命令格式:
Close文件名
例:
closemywork<关闭mywork文件。
>
4.打开已存在的工作文件
命令格式:
load文件名
例:
load“a:
\mywork”<打开mywork文件。
>
5.激活工作文件
如果有多个工作文件同时打开,那么所有操作只是对处于激活状态的文件起作用,激活某个工作文件可以使用如下命令,
命令格式:
wfselect工作文件名称
15.1.1.2对工作页的操作
为便于操作,Eviews5.X版本在一个工作文件中设定了多个页(Page),因此,用户在创建工作文件时需要同时创建工作页,工作页的建立可以采用如下命令。
1.创建工作文件时创建工作页
命令格式:
wfcreate(选项)频率区间
其中,选项包括:
Wf=<工作文件的名称。
>
Page=<工作页的名称。
>
例:
wfcreate(wf=macro,page=china)a19802005
<创建工作文件macro,并创建工作页china,区间为1980-2005年。
>
2.在现有工作文件中创建新的工作页
命令格式:
Pagecreae(选项)频率起始日期终止日期
选项包括:
Page=<工作页的名称。
>
例:
pagecreate(page=page2)q1980q12005q4
3.将其他工作页的工作对象添加到当前工作页
命令格式:
Pageappend(选项)工作文件名称\工作页名称[需要添加的工作对象]
选项包括
smpl=smpl_space<设定样本区间,默认为“all”。
>
allobj<添加所有的工作对象。
>
match<只添加名称相同的工作对象。
>
sufix=arg<为添加的工作对象设置后缀,默认为“_a”,这样可以避免将目标工作页中名称同的工作对象覆盖。
>
pageselectpage1
pageappend(smpl=”1998m12000m12”)page2x*<将Page2中的以x开头的所有工作对象在区间1998:
1~2000:
12的数据附加到当前工作页page1中。
>
需要注意的是,使用pageappend将取消当前工作页的日期结构。
因此,使用此命令后必须利用pagestruct命令恢复原来的日期结构。
4.删除工作页的部分样本
命令格式:
papecontract新的区间
注:
只是对当前处于活动状态的工作页起作用。
5.工作页的复制
命令格式:
pagecopy(选项)[需要复制的工作对象]
<将当前工作页的部分或全部工作对象复制到当前工作文件的其他工作页,或复制到其他工作文件。
>
选项包括
smpl=<设定需要复制的样本区间,默认为“a11”。
>
dataonly<仅复制出series、alpha、link、和valmap四类对象。
>
nolink<不复制link。
>
wf=<目标工作文件。
>
page=<目标工作页。
>
例
(1)Pagecopy(wf=newwf,page=pagel)<将当前工作页的所有工作对象全部复制到新的工作文件newwf中新的工作页page1里。
>
例
(2)pagecopy(page=newpage)Y*<将当前工作页中所有以y开头的工作对象复制到当前工作文件中新的工作页newpage里。
>
6.工作页的删除
命令格式:
Pagedelete工作页名称
7.工作页的调入
命令格式:
pageload路径\工作文件名
<从其他工作文件中调入一个或多个工作页到当前的工作文件中。
>
8.工作页的重命名
命令格式:
pagerename原来的名称新的名称
9.工作页的保存
命令格式:
Pagesave需要保存的工作页名称
10.工作页的激活
EViews在打开一个工作文件时,其所包含的多个工作页都同时打开,但要对其中的某个工作页进行操作,必须首先使其处于活动状态。
激活命令为:
命令格式1:
pageselect需要激活的工作页名称
命令格式2:
wfselect工作文件名称\工作页名称
例
(1):
pageselctpage3
例
(2):
wfselectmypwfl\Page2
11.构建工作页的结构
命令格式:
pagestruct(选项)[ID序列]
<把某个工作文件的结构应用到当前的工作页。
>
其中,ID序列可选可不选,如果设定了这项容,那么EViews自动决定工作文件的结构,但其自动决定的结构可以通过(选项)中的设定加以覆盖;也可以用*表示所有的对象。
选项包括:
None<取消现有的工作文件结构。
>
Freq=<设定文件的数据频率,包括”a”(annual),”s”(semi-annual),”q”(quarterly),”m”(monthly)、”w”(weekly)、”d”(5-daydaily)、”7”(7-daydaily)或”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:
对象类别对象名称
例equationeq01<建立方程eq01。
>
matrix(5,5)mat<建方5×5阶的矩阵。
>
命令格式2:
操作方式对象名称观察/程序(选项)观察/程序语句
对工作对象的操作方式有四种:
do、freeze、show、和print。
Do<执行命令>
Freeze<生成表格>
Print<打印处于激活状态的对象>
Show<显示对象>
例:
doeq01.lsycx<用普通最小二乘法估计y对常数项和x的回归>
注:
如果没有输入do、show等命令,那么EViews对程序操作的缺省选项命令是do,而对观察操作的缺省选项命令是show。
如:
equation.lsycx表示对方程y=c
(1)+c
(2)*x+u用最小二乘法回归,此命令等同于doequation.lsycx。
再如:
gdp.line表示观察序列gdp的曲线图,此命令等同于showgdp.line。
下面对几个基本工作对象逐一进行介绍。
15.1.3样本区间(sample)
如果只想对整个区间中的某部分样本进行操作,这时需要首先建立样本区间。
15.1.3.1建立样本区间
命令格式:
sample样本区间名起始日期1终止日期1起始日期2终止日期2……if条件语句
例
(1):
samplemysp1978:
01l992:
121997:
012000:
12<设定样本区间mysp,包括两个时段,第一时段从1978年1月至1992年12月,第二时段从1997年1月至2000年12月。
>
例
(2):
samplemysp1978:
012000:
12ifx>0<设定样本区间mysp从1978年1月至2000年12月之间所有满足x>0的观测值>
注1:
多个条件可以用and或or连接。
注2:
sample只是设定样本区间对象,操作命令仍然针对整个工作区间,如要在样本区间进行操作,还必须使样本区间对象生效,方法是用smpl命令。
15.1.3.2smpl命令
命令格式:
smpl样本区间名或直接设定符合条件的样本区间
例
(1):
smplmysp<使上面设定的样本区间mysp生效。
>
例
(2):
Smpl19782000ifx<1000andy<500<设定样本区间为1978~2000年之间同时X<1000和y<500的所有观测值。
>
注:
如果没有满足条件的观测值,那么在样本区间的操作不起任何作用。
如:
samplemyspifx>9andx<6<建立样本区间mysp>
smplmysp<使上述区间mysp生效>
scalars=obs(x)<建立数值标量s表示观察x在样本区间的观测值个数。
>
结果将显示s=0。
seriesy=trend()<建立时间趋势序列y>
结果将显示y中所有数据均为Na。
15.1.3.3几个特殊命令
first<第一个观测值。
>
last<最后一个观测值。
>
all<整个工作区间>
例:
smplfirstfirst+99last-99last<表示样本区间为前100个观测值和后100个观测值。
>
15.1.3.4重新设定样本区间
命令格式:
样本区间名.set新的起始日期新的终止日期If条件语句
例:
mysp.set1988:
011998:
12<将样本区间mysp重新设定为从1978年1月至1998年12月>
15.1.4序列(series)
EViews中,序列代表一个变量的一组观测值,可以是时间序列数据(规则的或不规则的),也可以是截面数据。
15.1.4.1生成新序列
1.生成新序列
命令格式1:
series序列名称
命令格式2:
genr序列名称=表达式<利用公式创建序列。
>
命令格式3:
frml序列名称=表达式<利用公式创建自动更新的序列。
〕
例:
seriesgdP<建立序列gpd(只是建立工作对象,数据尚未输入)>
Genrdgdp=d(gdp)<生成序列dgdp,为gdp的一阶差分>
Frmldqdp=d(gdp)<生成自动更新的序列dgdp,为gdp的一阶差分>
2.序列数据的填充
命令格式:
序列名.fill数据
例:
gdp.fill,259,……<逐个输入序列gdp的元素>
3.通过已有的序列生成新序列
命令格式:
series序列名=表达式
例:
serieslngdp=log(gdp)<生成新序列lngdp,为序列gdp的对数>
注:
EViews工作文件中自身带有一个序列resid,此序列用于存放最新估计方程的残差项,即每当估计新方程时,resid的数值会自动更新。
15.1.4.2自动生成新的序列
EViews中设定了一些特殊变量的生成命令,下面逐一介绍。
1.时间趋势变量
命令格式:
seriestime=trend(d)<生成时间趋势变量time,第d期指定的位置为0,往后依次加1,往后依次减1。
d的格式由工作文件的数据类型来决定>
例:
workfilemyworkq1980:
12000:
4<建立季度数据工作文件mywork>
seriestime=trend(1981:
01)<生成序列time,1981年第一季度为0,1980年第四季度为-1,1981年第二季度为1,……>
2.ID序列
命令格式:
sereis序列名=obsnum<每一个观测值对应的顺序号,即1,2,…>
例:
workfilemyworkq1980:
12000:
4<建立季度数据工作文件mywork>
seriestime=obsnum<生成序列time.取值为1,2,……,84。
>
3.季节虚拟变量
命令格式:
seriesdum=seas(s)<生成季节性虚拟变量dum,对应第s个季度(或月度)dum为1,其余季度(月度)dum为0。
>
例:
workfilemyworkq1981:
12000:
4<建立季度数据工作文件mywork>
seriesdum1=seas
(1)<建立虚拟变量dum1,第1季度取1,其他季度取0>
4.季节变量
命令格式:
seriess=day/month/quarter/year<生成季节变量s,s的取值为其对应的月价值。
>
例:
workfilemyworkm1990:
012000:
12<建立月度工作文件mywork>
seriesm=month<生成序列m,m的取值为对应的月份值,即1月份取1,2月份取2,…,12月份取12>
5.其他虚拟变量
命令格式:
首先定义符合条件的样本区间,然后给虚拟变量赋值。
例:
workfilemyworka19502000<建立年度数据工作文件mywork>
Smpl19501978<设定样本区间从1950-1978年>
Seriesdum=0<建立虚拟变量dum,在1950~1978年dum取值为0>
Smpl19792000<设定样本区间从1979-2000年>
Dum=1<虚拟变量dum在1979-2000年取值为1>
Smplall<恢复整个样本区间。
>
注:
虚拟变量除了在回归模型中直接作为解释变量(如分段回归模型)或被解释变量(如定性响应模型)之外,还可以用做定义样本区间,请看下面的例子。
例:
中国1982-1988年市场用煤销售量(y)季节数锯(《中国统计年鉴》1987,1989)。
由于受取暖用煤的影响,每年第4季度的销售量大大高于其他季度,因此,在回归模型中需要加入季节虚拟变量以反映季度因素。
设EViews文件为dum.wfl,其中包含四个变量:
sale(销售量)、t(时间趋势变量)、dum1(虚拟变量,第1季度取1,其他季度取0),dum2(虚拟变量,第2季度取1,其他季度取0),dum3(虚拟变量,第3季度取1,其他季度取0)。
回归模型为
如果要单独观察每个季度的回归模型结果,那么需要首先将每个季度定义为样本区间。
比如考察第1个季度的回归结果,那么EViews命令为:
SmplIfdum1=1
Equationeq.lsyct
15.1.4.3提取序列中的某一个元素
命令格式elcm(x,d)<序列x中第d期的元素,d的格式由工作文件的数据类型来决定。
>
例:
workfilemyworkq1981:
12000:
4<建立工作文件mywork>
seriesx=trend()<建立时间趋势序列X>
scalars=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…
例:
groupg1xyz<xyz三个序列共同构成一个数组g1。
>
数组的其他常用操作命令包括添加序列、删除序列等。
15.1.5.1往数组中添加序列
命令格式:
数组名.add序列名
例:
groupmacrogdpinvest
macro.addconsimport<往数组中添加cons和import两个序列>
15.1.5.2从数组中删除序列
命令格式:
数组名.drop序列名
例:
groupmacrogdpinvestcons
macro.dropconsimport<从数组中删除cons和lmport两个序列>
15.1.5.3数组的其他几个常用操作命令
(i)<第i个序列>
comobs<观测值个数(不包括缺失值)>
count<序列的个数>
minobs<样本中最少观测值的个数>
maxobs<样本中最多观测值的个数>
seriesname(i)<第i个序列的名称(字符)>
例:
groupmacrogdpinvestconsimport
scalarnum=macro.count<数组macro中序列的个数,得到num=4>
15.1.6Alpha序列(alpha)
15.1.6.1建立alpha序列
Alpha序列用于存放字符型变量。
命令格式1:
alpha序列名称<创建一个新的alpha序列,但没有赋值>
命令格式2:
genr序列名林=表达式<利用公式创建alpha序列>
命令格式3:
frml序列名称=表达式<利用公式创建自动更新的alpha序列>
例:
alpha=brand
genrz=(x+y)/2<z的值是固定的,除非重新赋予其新的数值>
frmlz=(x+y)/2<当x或y的数值变化时,z的数值自动随之改变>
15.1.6.2Alpha序列数值的填充
命令格式alpha(i)=”arg”<第i个观测值为arg>
例:
调查50名消费者对五种品牌饮料的偏好以观察哪一种饮料最受欢迎。
这时,可以建立AIPha序列,并输入数据。
EViews命令为
alphabrand
Brand
(1)=”CokeClassic”
Brand
(2)=”PepsiCoke”
15.1.7数值映射(Valmap)
数值映射(简称为映射)是为序列或alpha序列建立描述性的标签,以对其容进行更详细的描述。
比如,定义性别这一虚拟变量如下:
gender=1,如果为女士;gender=0,如果为男士。
对其进行简单的统计描述,输入EViews命令gender.freq。
输出结果如表15-1。
Value
Count
Percent
CumulativeCount
CumulativePercent
0
274
52.09
274
52.09
1
252
47.91
526
100.00
Total
526
100.00
526
100.00
这时,输出界面不那么直观,需要用户记住数值0或1代表什么含义,而利用映射可以直观地显示0或1所代表的容。
再比如,建立面板数据时,需要输入多个截面标示符,这时一般用简写来