EViews教程



对象

EViews的workfile不但能存储狭义的数据(数值、字符等),还能存储其他广义的数据,如图、表、矩阵、模型等。在EViews里,不同形态的数据,存储在不同的对象(object)中。下面是workfile里的各种对象类型及它们的图标,总有一款适合你。

事实上,workfile本身也是一种对象类型,它的图标请见workfile窗口左上角。下面,我先简要介绍workfile里六种最常用的对象类型,其他的对象类型如果后面的教程有所涉及,到时再谈。

series对象(序列对象)

series对象是分析中必不可少的对象类型。在[数据导入]里你已经看到,由Excel文件导入EViews的变量,要么是Date型、要么是Number型、要么是Character型。series对象是专门用来存储Date和Number型数据的对象类型。Character型数据会被存入alpha对象中,你可以把alpha对象看作是字符型的series对象。

要创建一个series对象(严格来说,创建的是对象的实例,本教程不做这么细致的区分,以免没有学过OOP的同学迷惑😁),鼠标模式下可以通过在workfile窗口右键选New Object实现,键盘模式下则需要用到命令series。series对象的创建、赋值及删除可参考以下代码:

wfcreate u 100       '创建一个临时的workfile
                     'u表示undated,即不设置特定的时间次序(适合存截面数据)
                     '100表示样本量为100
                     '这样的workfile一般用于截面数据
series x             '创建名为x的序列对象
                     'x中的"数据"都是NA,即Not Available
x = nrnd             '令x的值为从标准正态分布抽取的随机数
                     'nrnd为抽取标准正态随机数的函数
series y = x^3 - 1   '创建名为y的序列对象并赋值,值为x的三次方减1
y = NA               '清除y中的数据
y = exp(x)           '令y的值为x的指数函数值(底为自然常数)
y = y / x + 1        '令y等于当前y的值除以x再加1
y = x>=0             '若x大于等于0,则y取值为1,否则y取值为0
series z = nrnd
y = x>=0 or z<0      '若x大于等于0或z小于0,则y取值为1,否则y取值为0
y = x>=0 and z<0     '若x大于等于0且z小于0,则y取值为1,否则y取值为0
delete x y z         '删除x、y和z。delete命令可以删除任意类型的对象

代码执行的动图如下所示:object

从图中可以看到,y每改动一次,y的数据表中都会加入一行修改备注:“Modified…”。EViews的这个功能可以让我们很方便地了解数据改动的历史。

如果series对象存储的是时间序列数据,我们还可以利用下面展示的函数生成新的series对象。在时间序列分析中,这些函数常被用到。

'以下代码与上面的代码无关。假设z是一个已存在的序列对象
series x
x = z(-1)            '令x等于z的一阶滞后
x = z(-5)            '令x等于z的五阶滞后
x = d(z)             '令x等于z的一阶差分,
                     '代码等价于x = z - z(-1)
x = d(z,2)           '令x等于z的二阶差分
                     '代码等价于x = z - 2*z(-1) + z(-2)
x = dlog(z)          '令x等于z的一阶对数差分
x = dlog(z,3)        '令x等于z的三阶对数差分
x = @pch(z)          '令x等于z的一期百分比变化
x = @pc(z)           '代码等价于x = @pch(z)*100,即一期的百分点变化
x = @pcha(z)         '令x等于z的年化百分比变化
x = @pca(z)          '代码等价于x = @pcha(z)*100
x = @pchy(z)         '令x等于z的同比百分比变化
x = @pcy(z)          '代码等价于x = @pchy(z)*100

解释一下@pch(z)、@pcha(z)和@pchy(z)之间的区别:假设\(z_t\)是季度时间序列,则这三个量分别对应$$ \frac{z_t – z_{t-1}}{z_{t-1}}$$ $$(1+\frac{z_t – z_{t-1}}{z_{t-1}})^4 – 1$$ $$\frac{z_t – z_{t-4}}{z_{t-4}}$$可以看出,后两个量依赖时间序列的抽样频率,如果\(z_t\)是月度数据,公式中的4应变为12。

对series对象(以及alpha对象),它们还存在一种自动更新的形式。举个例子,如果你先用series x = log(z)生成了z的(自然)对数值,随后改了z的值,x的值是不会有一丝变化的。有些时候,你可能更希望z的值一旦有变,x的值也会随之变变变。如果是这样,你可以用frml命令(formula之意)生成自动更新的series对象:

series x1 = log(z)   'x1生成后其值不再与z相关
frml x2 = log(z)     'x2的值会随z的值变化而自动更新

为了区分一般的series对象和自动更新的series对象,EViews在workfile中用了两种相似但又有些不同的图标。下图左侧的图标表示常规的series对象,右侧的图标表示自动更新的series对象。

group对象(组对象)

有些时候,为了便于分析,我们可能需要对workfile中的series对象(以及alpha对象)进行分组,这可以通过group命令创建group对象实现。例如:

group grp1           '创建名为grp1的组对象
grp1.add x y z       '向grp1加入序列对象x、y、z
grp1.drop z          '从grp1中移除z
group grp2 x z       '创建名为grp2的组对象并将x和z加入其中

在第二、三行代码中,grp1后有一个点号。点号在EViews中有两种角色,要么在数字中表示小数点,要么会以“对象.命令”的形式出现,表示点号后的命令作用到点号前的对象上。点号后的命令,是专属于点号前的对象的命令,是对象自带的一种方法。注意,“同样”的命令,可能会同时服务几个对象,例如:

x.sheet              '以数据表的形式展示序列对象x的数据
grp1.sheet           '以数据表的形式展示组对象grp1的数据

这里的两个sheet,实际上不是同一个命令,而是分别定义在序列对象和组对象上的两种方法,只不过它们取了同样的名字。

建立group对象也可以按住Ctrl键在workfile里选中相应的series对象,然后右键Open/as Group,这会建立一个临时的group对象。

graph对象(图对象)

graph对象用来绘制和存储数据分析中需要的图。创建一个graph对象要用到命令graph,其用法与series和group类似。需要注意的是,与创建series对象或group对象不同,我们不能创建一个没有内容的graph对象。如果你执行代码graph g1想要创建一个名为g1的graph对象,EViews会弹出一个对话框让你确定要画哪些变量的时间序列图(画时序图是EViews的默认选项)。所以,如果你想在不受弹窗影响的状态下实现graph对象绘图,一定要在生成graph对象时,同时在对象后加上点号和绘图命令。以下是一些例子:

graph g1.line x      '生成图对象g1并在其上画x的时序图
show g1              '在工作区域显示g1上的图
close g1             '关闭g1的显示
graph g2.distplot x  '生成图对象g1并在其上画x的直方图
group grp1 x y z
graph g3.line grp1   '在g3上画x、y、z的时序图(画在一张图上)
grp1.drop x
graph g4.scat grp1   '在g4上画y、z的散点图,y在横轴
                     '代码等价于graph g4.scat y z
graph g5.xyline grp1 '在g5上画y、z的折线图,y在横轴
                     '代码等价于graph g5.xyline y z

代码中,line的作用是画时序图,distplot的作用是画直方图,scat的作用是画散点图,xyline的作用是画折线图。show和close用来在工作区域显示和关闭一个对象,相当于用鼠标点开和关闭一个对象。

仅执行graph对象点号后的代码也是可行的。例如,执行distplot x,EViews会建立一个临时的graph对象显示x的直方图,要想在workfile里保存这个graph对象,可以在点击关闭对象窗口时选Name给它取一个名字。

画图还可以直接在series或group对象上实现:选择series或group对象窗口菜单的View/Graph;也可以用命令实现,例如:

x.line               '画x的时序图
x.distplot           '画x的直方图
group grp1 x y z
grp1.line            '把x、y、z的时序图画在一张图上
grp1.line(m)         '把x、y、z的时序图分别画在一张图的三张子图上
                     'm即multiple之意

注意,在series对象或group对象上画图不会改变它们的对象类型,所画的图可以看作是隐性的graph对象,要保存可以点击窗口上方的Freeze按钮,点击后选OK会生成一个临时的graph对象,然后关闭它选Name取名就可以了。

事实上,一个对象的窗口上只要有Freeze按钮,你就能在workfile里存下任何在窗口中显示的内容,保存下的内容要么会被存入一个graph对象中,要么会被存入一个table对象中(见下文)。

在键盘模式下,使用freeze命令能一步实现上述的鼠标操作:

freeze(g1) x.distplot   '把x的直方画入新建的图对象g1中
                        '代码等价于graph g1.distplot x
group grp1 x y z
freeze(g2) grp1.line    '把x、y、z的时序图画入新建的图对象g2中
                        '代码等价于graph g2.line grp1

对graph对象里的图,我们可以轻松地修改它的标题、坐标轴字体字号、颜色等各种属性,以及增减各种内容。你可以在graph对象窗口右键选Options、Add text、Add lines & shading、Draw,也可以直接双击图上想要修改的地方,EViews会弹出相关的对话框方便你做修改。当然,这些操作都可以用命令实现,由于内容太过琐碎,这里就不介绍了,你若感兴趣可以在EViews主菜单的Help/PDF Docs里探索探索。

graph对象里的图可以存到硬盘上,右键选Save graph to disk就行。你也可以右键选Copy to clickboard,然后把它直接粘贴到,比如,word文档里。

equation对象(方程对象)

在数据分析中,equation对象一般是不会缺席的,建立统计模型、实施参数估计和统计检验、绘制相关图形都是在它上面完成的。注意,EViews中存在所谓的model对象(模型对象),但它是用于多方程联合分析的。所以,通常意义下我们讲的“建立模型”,指的就是用equation对象建立统计模型。

equation对象一般是和具体的模型、相关的估计、检验、画图命令联合使用的,后面的教程会有更详细的介绍,现在我们仅看看如何创建一个不含任何内容的equation对象。如果你仔细看了前面的内容,我猜你应该能想到创建equation对象的命令,没错,就是equation:

equation eq1            '创建一个名为eq1的方程对象

打开一个空的equation对象,对象窗口会显示“Equation does not have estimates”。

table对象(表对象)

table对象看上去有点像Excel,由单元格组成,它主要用来保存模型估计或检验的结果,属于文字、数字类型的结果。如果不是出于编程需要,我们一般不会用table命令去创建空的table对象。我们创建的table对象一般都是有具体内容的,而且,使用的命令仍是freeze,请见下面的例子:

'假设eq1是一个有估计结果的方程对象
freeze(tab1) eq1        '把eq1中的估计结果存入新建的表对象tab1中
freeze(tab3) x.stats    '把x的描述统计结果存入新建的表对象tab3中
rename tab3 tab2        '把对象tab3的名称改为tab2

注意,用freeze命令创建graph或table对象,都是在后台默默进行的,你要查看对象里的内容,需要用show命令。

我们可以对graph对象进行修改,同样,也可以对table对象进行修改,如插入文字、改变文字颜色等。在任一单元格处点右键,EViews会给你指引。

sample对象(样本对象)

每一个workfile,其窗口上方Range处会显示数据的总样本,下图分别是截面数据与时间序列数据的两个例子:

第一个Range处显示样本由1开始,到100结束,共有100个观测值(obs)。第二个Range处显示样本由1952年第一季度开始,到1996年第四季度结束,共有180个观测值。

在实际分析中,基于不同的原因,我们可能不会使用总样本去分析,而是只使用某些子样本,这时,我们就需要选定用于分析的样本。在上图中,Range下的Sample处显示的即为当前选定的用于分析的样本,默认状态下,选定的样本为总样本。

sample对象是专门用来设定分析样本的对象,生成sample对象需要用到命令sample,下面是一些例子:

sample sp1 1953q1 1963q2     
'生成名为sp1的样本对象,样本由1953年第一季度开始到1996年第二季度结束
sample sp2 @all if x>0 and z<0 
'生成名为sp2的样本对象,选择满足x>0且z<0的样本
sample sp3 @first+1 @last
'生成名为sp3的样本对象,样本由第二个样本点开始,到最后一个样本点结束

sample对象生成后,需要用smpl命令告诉EViews开始使用对应的样本,例如:

smpl sp1                     '使用sp1设定的样本

使用smpl设定样本也可以直接跳过生成样本对象的步骤,例如:

sample sp1 1953q1 @last-1 if x>=0
smpl sp1
'上两行代码等价于
smpl 1953q1 @last-1 if x>=0
命令复习
  • wfcreate:创建workfile
  • series:创建series对象
  • .sheet:以数据表的形式展示数据
  • frml:创建自动更新对象
  • group:创建group对象
  • .add:向group对象里加入series对象
  • .drop:从group对象里移除series对象
  • graph:创建graph对象
  • (.)line:画时间序列图
  • (.)distplot:画直方图
  • (.)scat:画散点图
  • (.)xyline:画折线图
  • equation:创建equation对象
  • show:在工作区域显示对象
  • close:关闭对象显示
  • freeze:创建并保存graph对象或table对象
  • delete:删除对象
  • rename:更改对象的名称
  • sample:创建sample对象
  • smpl:设定样本

[注] ( . )命令表示命令可单独使用,也可跟在对象后使用;.命令表示命令只能跟在对象后使用。

练习
  1. 将数据文件stocks放入D盘的myproj文件夹中,然后创建一个prg文件,利用代码打开这一文件。
  2. 画出IBM的股票月收盘价ibm_close的时间序列图并保存到一个graph对象中。
  3. 利用aapl_close和ibm_close生成Apple和IBM股价的月收益率时间序列(以百分点表示),保存到两个series对象中。
  4. 将两个收益率序列组建一个group,在一张图上画出两条时间序列并保存到一个graph对象中。
  5. 把样本设为2006年2月到2010年8月。

读后有收获欢迎打赏站长喝瓶元气森林😂


点赞    

扫一扫,点右上角⋯分享

鼠标vs键盘
标签



   
   
 卯光宇 回复给 Taylor

Taylor: 老师的教程描述的简直太详细了!太棒啦!😍

🤝🤝

发表于北京时间2023-09-26下午5:17
 Taylor 留言给 卯光宇

老师的教程描述的简直太详细了!太棒啦!😍

发表于北京时间2023-09-26下午4:37



    给站长留言    
😀😂😅😆😊😍😝🤭🌹🤝😵😭😱😳😣😴
昵称*
验证*:8+9 =