Eviews 编程基础
武汉大学经济学系数量经济学教研室《实践教改项目组》编制
Eviews 软件支持批处理模式,用户须将待执行的命令按照一定的格式组成一个程序,提交计算机处理.如果用户有计算机编程的经验,将会发现Eviews的特性与大多数语言的特性相似。Eviews程序语言的最主要的新特征是它是宏观的替换语言,用户可以通过把包含有分量名字的变量名连接起来产生对象名。
一. eviews命令基础
在学习编程之前,先回顾一下Eviews的一些常用命令。
(1) 对象类型指定
新建或调用一个对象时,最一般的命令格式是
object_type object_name
其中,对象名称(object_name)自定义,对象类型(object_type)必须采用Eviews规定的标
志符,它们有:equation, graph,group,matrix,model,pool,rowvector,sample,series,table 和vector等。
例如命令
series z=3*x –y/2
产生新序列z。命令
matrix(2,3) x
生成名为x的一个2×3矩阵。
(2) 对象命令
对象命令用于指定对象的某种观测方式或进行某项过程操作,一般格式为
action object.view_prog arg_list
其中,action包括以下四个选项:
do 执行程序而不新打开窗口
freeze 从当前对象观测状态生成表或图象
print 打印当前对象观测状态
show打开指定对象窗口进行观测
object指对象名称,view_proc代表待执行的对象观测方式或操作过程,arg_list是对观测方式和操作过程的进一步说明,其中的关键字都用空格分开。
实际应用时action所代表的部分常常可以省略,例如
rev.line 等价于show rev.line
即绘制序列对象rev的折线图。
二. 程序基础
(1) 新建程序
一个程序不是在一个工作文件中的一Eviews对象。它仅仅只是包含Eviews命令的一文本文件。为了生成一新的程序,用户可以点击File/New/Program。用户将会看见一标准的文本编辑窗口。在这里用户可以输入程序的命令文字。用户也可以在命令窗口通过输入Program来打开程序窗口,例如
Program prg2
将打开了一名字为PRG2的一程序窗口。程序名字应该遵守标准的Eviews文件取名规则。
保存程序时,点击窗口上方工具栏的Save 或Save As按钮来完成保存任务.当程序已经被保存后,它将有扩展名.PRG。
(2)打开程序
打开原有程序只需在主菜单选择File/Open/Program,再输入要打开或调用的程序名称即可。
(2) 运行程序
有几种方法可以用来运行一程序,最简单的方法是在程序编辑窗口点击Run按钮,屏幕会弹
出运行程序定义对话框,如图:
图1
用户可以在对话框最上面的空行输入程序的名称,如prg1。在Program arguments下面指定命令行参数值。Execution mode 下面的选项是关于程序的运行模式,点选Verbose update screen表示运行程序同时刷新计算机屏幕,Quiet no screen则不更新。对话框右下角的空格中的数值表示计算机终止程序运行条件即程序执行中错误数的最大值。点选对话框最下面的选项表示将以上定义作为默认运行模式。
用户也可以通过输入Run命令和程序文件名来运行一程序如:
run prg2
or run d:\eviews\ prg2
(3) 中断程序运行
用户按F1键将终止程序的运行,或当程序运行到Stop命令时,它也将终止,或当它达到最大的错误次数或它通过Run定义完成了一文件所有的命令时。
当用户在程序中包含Exit命令时,Eviews将退出运行。
三. 简单程序
(1) 简单程序
字符串截取第几行最简单的程序只是一系列命令。程序的执行等同于把命令一个一个地输入到命令窗口中。如
Program myprog
在窗口中生成一新的程序。
(2) 程序变量
用户使用程序来编辑.运行和再运行Eviews命令集时,程序语言的真正力量来自于程序变量和程序控制的定义的使用。
(3)控制变量
控制变量是在Eviews程序中用于代替具体数值的变量,一旦对其赋值,就可以在程序任何地方进行调用。定义一个控制变量的格式是在变量名前标“!”,且变量名不能多于15个字符,如
!y !z !pi
对控制变量赋值使用赋值号“=”,如
!sum=!sum+1
smpl 1980:1+!x 1997:12+!x
(4)字符串变量
字符串变量的取值是一段文本,并在头尾使用双引号。变量名前的标号为“%”,赋值号仍是“=”,例如
%pi=“3.14159”
%sample1=“1990:3 1999:6”
赋值后的字符串变量可用于相关命令,如
smpl %sample1 等价于 smpl 1990:3 1999:6
下面介绍几个常用的字符串函数。@left返回字符串左端开始给定个数的字符;@right返回字符串右端开始给定个数的字符;@mid返回字符串指定起点开始向右给定个数的字符。如
%st1=“I am happy to meet you”
%st2=“We believe Eviews is a wonderful software”
%st3=“learn”
%qq=@left(%st1,13)+ @right(%st3,5)+ @mid(%st2,11,7)
函数@left(%st1,13)表示从变量%st1左端开始截取13个字符,即“I am happy to”;函数@right(%st3,5)表示从变量%st3右 端开始截取5个字符,即“learn”;函数@mid(%st2,11,7)表示从变量%st2左起第11个字符开始,向右截取7个字符,即“Eviews”。因此%qq的结果为“I am happy to learn Eviews”。另外,函数@str将控制变量取值转化为字符,若!y=200,则函数@str(!y)返回字符200。
(5)替换变量
看例子
%x=“gdp”
ls %x c %x(-1)
%x=“ks”
ls %x c %x(-1)
这里,通过改变字符串变量%x的取值来代替它在命令中的实际内容,因此称该变量为替换变量。当替换变量与其他字母.数字或变量合用时,应用大括号加以界定,如
!y=3
series x{!y}
这组命令相当于定义了一个名为x3的序列。
(6)命令行参数
命令行参数是一些特殊的字符串变量。在运行程序时,计算机会出现对话框让用户给出参数的具体值。若程序中用到了这些参数,则每次运行程序都可以改变参数值,使程序有较强的通用性。在Eviews中,命令行参数名默认为%1,%2,%3等等。例如
equation eq2
smpl 1988:1 1999:6
eq2.ls %0 c %1 %1(-1) inc
如果在图1所示的运行程序对话框中定义%0=ks和 %1=m2,则程序最后一行命令相当于
eq2.ls ks c m2 m2(-1) inc
(7)程序控制
Eviews提供了控制程序执行的一些方法,其作用是对于不同的条件,用户可以有选择地或反复地执行一些命令。
(Ⅰ)IF条件句
IF条件句由关键词if 开始,后面紧跟是条件表达式,然后是关键词then。条件表达式中常使用逻辑运算符and 和or,如果需要还可以加上圆括号。若表达式为真,则直到endif的所有命令都被执行,否则命令被跳过,例如
If !x>5 and !x<10 then
Smpl 1978:1 1980 :1+!x
Endif
表示当控制变量!x取值在6到9之间时,产生新样本期1978:1 1980 :1+!x。
IF语句还可以包含else从句,当且仅当if条件表达式不成立时执行。因此,若表达式为真,则运行if 和else之间的命令,否则执行else到 endif之间的命令,例如
If !x>0 then
Series y1=y/!x
Else
Series y1=y
Endif
命令表示当控制变量!x取值为正时,新序列y1用原序列y除以该控制变量值产生;当控制变量取值为负或为0时,新序列y1等于原序列y。
IF语句也能用于字符串变量并可以嵌套,如
If %x=“summer”or %x=“autumn”then
Series y=1
Else
If %x=“winter” then
Series y=2
Else
Series y=3
Endif
Endif
(II)FOR循环
FOR循环可实现将控制或字符串变量的不同取值代入相同一组命令反复执行,但对不同的变量,语法有区别。
先看对控制变量使用FOR循环,如
for !x=1 to 9
series y{!x}=(!x+1)
next
这里,变量!x两次被用作替换变量,分别产生名为y1 到y9九个序列和定义序列值为2到10。
在for语句中一般还应该有关键词step,后面跟循环变量每次第进步长数值,上面的例子省略了这一部分,系统默认为步长是1。语句
for !x= 4 to !x=9 step 1
表示每循环一次,!x的值加1,循环总次数为5次。
与IF语句类似,FOR循环也可以嵌套使用。如
matrix (6,15) matr
for !x=1 to 6
for !y=1 to 15
matr(!x ,!y)=(!x+1)*5 +!y
next
next
这段程序用于产生一个6行15列的矩阵,并将其命名为matr。第四行赋值语句的意义是对第!x 行第!y列的元素进行赋值。
再看对字符串变量使用FOR循环。对字符串变量使用FOR循环时需要在变量名后列出它的取值清单,如
for %x gdp ks rev nkf
equation {%x}1.ls %x c {%x}(-1) time
next
此程序实际估计了名为gdp1,ks1,rev1 和nkf1的四个方程。
循环嵌套的构造方法跟嵌套的IF条件语句很类似,如
!x=1
for %1 10 30
for %2 50 80 90
smpl %1 %2
equation eq{!x}.ls gdp c export
!x=!x+1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论