Professional Documents
Culture Documents
第五章 数据操作
第五章 数据操作
第五章 数据操作
§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 提供的函数能够对当前样本的序列元素进行运算,
一些函数是“元素函数”他们返回的是序列中每一个元素的值。有
些是“整体函数”他们返回的是标量、向量和矩阵。这些函数一般
在创建新序列时使用或在矩阵语言中使用。
有时希望使用序列中的一个实际观测值。 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 建立一个新序列
也可以使用命令在命令窗口中建立一个新序
列,并为它们分配值。建立一个新序列,则必须使
用关键字 series 或 genr 例如: series y=exp(x)
genr y=exp(x)
一旦序列建立起来则在使用该序列时就不用
这两个关键字了。
§5.3 自动序列操作
在表达式中我们也可以使用一个表达式代替序列
名字的位置。不管是序列、序列对象还是组元素,不
管这些名字出现在等式中还是在模型中,都可以进行
这样的替换。
代替序列名的表达式叫做自动序列。之所以叫自
动序列,是因为如果信息有变化,数据的更新是自动
进行的,而不需要我们额外写命令进行更新。所以自
动序列中的数据总是新的。
§5.3.1 创建自动序列
在组中使用自动序列是非常有用的,可以象
通常那样建立一个组,并在组中建立自动序列。首
先选取主菜单上的 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 序列生成组的操作