第五章 数据操作

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 22

第五章 数据操作

§5.1 使用表达式
Eviews 提供了强大的对表达、产生和使用序列和数据的
语言支持, Eviews 中可以使用表达式。

§5.1.1 表达式的使用
Eviews 提供了广泛的运算符集和庞大的内建函数库。 Evi
ews 不仅提供了标准的数学运算和统计运算 , 也提供了很多能
够自动处理时间序列中的先行、滞后、差分等操作的特殊函数。

Eviews 的表达式是由数字、序列名、函数、数学运算符、
和关系运算符组成。
§5.1.2 运算符
Eviews 中包含的基本算术运算符分别是 + 、 - 、 * 、 / 、 ^
( 幂 ), 例如 : 5+6/13 、 3^2-9 参加运算的数可以写为整数形
式、十进制形式和科学计数法的形式。
另外 + 、 - 还可以作为符号运算符来使用。比如: 2+++++
+-2 , Eviews 各种运算符的优先级别为(从高到低):
+ (正号), - (负号)
^ * /
+ -
<> <= >= =
and or
最后 2 列用于逻辑运算。
Eviews 的表达式是从左往右计算的,也可以使用括号来改变
运算的先后顺序。
• §5.1.3 序列表达式
• Eviews 的表达式还可以对样本序列的观测值进行操作 , 比如 :
• 2*y+3 表示用 2 乘以 y 的每一个观测值之后加 3 。也可以
在一个运算中使用多个序列。例: x/y+z
• §5.1.4 序列函数
• Eviews 提供的函数能够对当前样本的序列元素进行运算,
一些函数是“元素函数”他们返回的是序列中每一个元素的值。有
些是“整体函数”他们返回的是标量、向量和矩阵。这些函数一般
在创建新序列时使用或在矩阵语言中使用。

• Eviews 中大多数函数前都有一个 @ 符号 . 例 : @mean


此函数可以计算一个序列的平均值。例:
• scalar s
• s=@mean(x)
§5.1.5 序列元素

有时希望使用序列中的一个实际观测值。 Eview
s 提供的 @elem 函数可实现此操作, @elem 有两个
参数,第一个参数是序列名,第二个参数是数据或观
测值的标识符。例如:使用 y 序列中的 1980 : 3 的
季度数据,则应写为: @elem(y,1980:3) 。非时间序
列 x 的第 323 个数据: @elem(x,323) 。
§5.1.6 逻辑表达式
使用逻辑表达式来计算真假值。逻辑表达式能作为数学表达
式的一部分、样本描述的一部分或在程序中作为 if 判断的一部分。
例如: incm>5000 这个表达式允许我们选择特殊条件的观测值,
incm 值大于 5000 ,则就得到真值,否则得到假值。
通常,逻辑表达式中常用到比较运算符‘ < 、 <= 、 > 、 >= 、
= 、 <>’ 。另外,还可以使用逻辑运算符‘ and’ 、‘ or’ 组成
更复杂的逻辑表达式。例如: incm>5000 and educ>=2000 。注意:
Eviews 用 1 表示真,用 0 表示假。因此,可以用逻辑值参加数学
运算。例如:
( inc <300 ) + ( edu>=2000 ),如果 inc<300 ,得 1 ,否则得 0 。
另外,‘ = ’ 既可以当赋值运算符,又可以当作比较运算符使用。
现在,我们只要注意到‘ =’ 用于关系表达式中就表示是比较运算
§5.1.7 先行指标、滞后指标和差分
处理序列中的先行、滞后指标是很容易的,只要在序列名
后加一对小括号,括号中写上先行滞后的数字即可。滞后的数
字用负号表示,先行的用正数表示。例如: income(-4) 表示收
入序列的四阶延迟的滞后指标。 sales(2) 表示 sales 序列的超前
二阶的先行指标。括号中的数要求是整数,但写入的数也可以
不是整数,这时系统会自动把它转换成整数。如果转换不了系
统会发出警告。如果必须使用非整型数,最好使用 @round 、 @
floor 、 @ceil 函数处理一下。
Eviews 中有些地方,可以指定一个先行或滞后指标的分布。
例如:在估计方程中可以有这样的表达式 income(-1 to -4) 这里
描述的是一个从 1 到 4 的滞后指标的分布。例如:
sales sales(-1) sales(-2) sales(-3) sales(-4)
sales(0 to -4)
sales(to -4)
是完全等价的。
Eviews 也有几个函数可以处理差分或先取对数后作差分。 D
函数和 DLOG 函数就可以实现此功能。例如:
d(income) 等价于 income-income(-1)
dlog(income) 等价于 log(income)-log(income(-1)
并且这两个函数可以提供更高阶的差分计算。例如:
d(income,4) dlog(income,4)
这是作四阶差分。
也可以既指定作季节差分,又指定作普通差分。例如:
d(income,1,4) 等价于 d(income-income(-4))
dlog(income,1,4) 等价于 d(log(income)-log(income(-4))
如果只作季节差分,就把普通差分项设为 0 。例如:
d(income,0,4) 等价于 income-income(-4)
dlog(income,0,4) 等价于 log(income)-log(income(-4)
§5.1.8 缺失数据

在处理数据时可能会遇到一些没有值
或某一时段观测值没有用 , 或者进行了一
些非法计算 ( 例如用一个数除以 0) , Evie
ws 使用空值 NA 表示这些情况。
§5.2 序列的操作
表达式的一个主要用途是从一个存在的序列产生一个新序
列或修正已存在的序列值。另外,表达式也允许你进行复杂的
数据传送,并可以保存新序列或已经存在序列对象的结果。

§5.2.1 建立一个新序列

选择 quick/generate series… 或者单击工作文件工具条上的


“ genr” 按钮。 Eviews 会弹出一个窗口,你只要在上面的编
辑框中写上分配表达式,并在下面编辑框中写上相应的样本空
间即可。另外,你写入的表达式在计算时是针对每一个观测值
的。
§5.2.2 基本的赋值表达式
可以写一个序列的名字后加一个‘ =’ ,然后再写一个表
达式。 Eviews 将会使用等号右边的表达式对每一个样本元素
进行计算。并把相应的计算结果赋给等号左边的序列,如果有
必要 Eviews 会创建一个新序列。例如:
y=2*x+37*z
如果序列 y 不存在,则先建立一个序列,这时序列中的值
都为空( NA ),之后对于当前样本的每一个观测值, Eviews
将会把通过表达式计算的结果赋给它们。如果 y 已经存在了,
则在当前的样本空间范围内用表达式计算的结果替换,而样本
空间以外的观测值不替换。
如果等号右端是一个常量表达式,例如: y =3 则把样
本空间中的所有观测值用常量代换。
§5.2.3 使用样本
我们可以用表达式形式调整和使用已有样本的观测值,这
时用 “ Genr” 按钮。例如:在上面的对话框中写入 y=z 在下
面的对话框中写入 @all if z<=1 and z>=-1 。
注意:建议使用 Genr 按钮和在尽可能多的地方使用样本表
达式,因为这种方式更有效。
§5.2.4 动态分配
也可以在目标序列中使用滞后的值进行动态分配。例如:
一个年度工作文件,观测值是从 1945-1997 年,则如果在上面的
编辑框中写入: y=y+y(-1) 在下面的编辑框中写入: 1946 199
7 则 Eviews 将会用 y 序列的累加和来替换 y 序列。这是因为我
们在移到下一个时间段时,则滞后的的那个序列的值已经包含了
前几项的累加和。这就是动态分配。
§5.2.5 暗示分配
通过在表达式左端的简单的表达式,你可以完成暗示分配
操作。例如: log(y)=x 则按 y=exp(x) 计算。
通常 Eviews 只能处理:
+ - * / ^ log( ) exp( ) sqr( ) d( ) dlog( ) @inv( )
这几种运算的暗示操作。除此以外其他的运算就不行了。
例如: @tdist(y,3)=x , 就不可以了。
另外, Eviews 也不能在等号左边多次出现目标序列的情况,
例如: x+1/x=5 就不可以。以上提到的两种情况 Eviews 都会出
现提示信息。
§5.2.6 命令窗口的方式

也可以使用命令在命令窗口中建立一个新序
列,并为它们分配值。建立一个新序列,则必须使
用关键字 series 或 genr 例如: series y=exp(x)

genr y=exp(x)

一旦序列建立起来则在使用该序列时就不用

这两个关键字了。
§5.3 自动序列操作
在表达式中我们也可以使用一个表达式代替序列
名字的位置。不管是序列、序列对象还是组元素,不
管这些名字出现在等式中还是在模型中,都可以进行
这样的替换。

代替序列名的表达式叫做自动序列。之所以叫自
动序列,是因为如果信息有变化,数据的更新是自动
进行的,而不需要我们额外写命令进行更新。所以自
动序列中的数据总是新的。
§5.3.1 创建自动序列

例如用图形的方式察看 年度 cp 序列取 log 后的值,这时


我们可以用自动序列来实现。创建自动序列可以单击“ sho
w” 按钮或选择主菜单上的“ quick/show…” 然后键入: log
(cp) , Eviews 会以表格打开一个序列窗口。在显示序列名字
的地方就显示 log(cp) ,则就建立了一个自动序列。我们就可
以象对其他序列一样对自动序列进行任何操作。要以图形方式
显示此序列只要选 view/line graph 就可以了。则与操作普通
序列是一样的。注意:如果序列的值发生了变化,则此自动序
列会做出反应。例如改变了序列的前几项观测值,则自动序列
的值也会有相应的变化。
§5.3.2 在组中使用自动序列

在组中使用自动序列是非常有用的,可以象
通常那样建立一个组,并在组中建立自动序列。首
先选取主菜单上的 bojects/new object/group ,然后
键入 cp 、 log(cp) ,这样就建立了一个包含两个
序列的组,包含的两个序列:一个 cp 序列,一个是
自动序列 log(cp) 。我们也可以在估计方程中使用自

动序列。
§5.3.3 处理组中的序列
这里要强调的是组中存放的是构成这个组的序列的名字或是
自动序列,而不包含序列中的数据。我们可以创建一个组,选主
菜单上的 objects/new object/group 或者单击工作文件窗口上工具
条中 “ show” 按钮,添对话框即可。我们也可以通过命令的方式,
例如:在命令窗口中键入 group macrolist gdp invest cons ,就建
立了一个包含 gdp invest cons 三个序列的组,同样也可以建立
一个包含自动序列的组。例如:
group macrolist log(gdp) d(invest) cons/price
在使用组时有几个问题需要注意:第一、一个组中只包含序
列的标识符,不包含这些序列中的数据。所以如果序列中的数据
发生了变化,组也会产生相应的变化。第二、如果从工作文件中
删除了一个序列,则在包含这个序列的组中相应序列也会消失。
如果这个组只包含这么一个被删除的序列,则组也会被删除。第
三 如果被包含的序列改了名字,则在组中的这个序列的名字也
会改变。
§5.3.4 用自动序列进行估计

可用自动序列进行估计。如果估计一个方程时,
可以用 log(x) 或 exp(x+z) 作为解释变量。

Eview 允许你用自动序列作为估计的因变量。如
果因变量是 log(y) ,则不必建立 logy 序列,直接用表
达式 log(y) 做因变量。当预测时, EVIEWS 将直接给
出 y 的预测值,不必再由 log(y) 计算出 y 来。关于预
测的详细介绍见 14 章“预测”。
下面介绍一下组中序列的使用,组中序列使用方法是在组名
后加一个括号,括号中写入一个整数即可,这个整数就代表你要
使用的组中的第几个序列。例如:
macrolist(1) 表示使用 macrolist 组中的 gdp 序列。
marcolist(2) 表示使用 macrolist 组中的 invest 序列。 我们
以这种形式就可以象使用其它序列一样使用组中的序列了。例如:
我们可以新建一个组
Group macrolist(1) macrolist(2) 此命令等价于 Group gdp invest
我们也可以把这种形式写在表达式中,例如:
series y=log(macrolist(3))
还有一些函数可以允许你得到组中序列的个数及每个序列的名字。
得到组中序列的个数的函数是 @count , 得到组中每个序列的名
字的函数是 @seriesname 。例如:
scalar numgroup = macrolist.@count
§5.4 序列生成组的操作

用来计算相关矩阵、估计 VAR 模型、画 XY 图


等。
建组方法:
1 、在 EVIEWS 主菜单中选 object/new groups 后
输入序列名称或表达式。
2 、 quick/show 后输入序列名称或表达式。
§5.5 标量操作
标量与序列或组不同,它没有显示窗口,它只能
通过命令方式来建立。例如:
scalar scalar_name=number
除了这种形式等号右边也可以是表达式或是一个
特殊的函数(此函数应返回的是一个数量值)。如果
想知道数量对象的值,可以使用 show 命令。这时系
统会在 Eviews 窗口底下状态行显示数量对象的值。
例如:
show scalar_name
另外 , 也可以通过双击工作文件窗口的数量对象
的名字来显示数量对象的值。 返回

You might also like