Eviews中的编程_第1页
Eviews中的编程_第2页
Eviews中的编程_第3页
Eviews中的编程_第4页
Eviews中的编程_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Eviews编程基础武汉大学经济学系数量经济学教研室实践教改项目组编制Eviews软件支持批处理模式,用户须将待执行的命令按照一定的格式组成一个程序,提交计算机处理.如果用户有计算机编程的经验,将会发现Eviews的特性与大多数语言的特性相似。Eviews程序语言的最主要的新特征是它是宏观的替换语言,用户可以通过把包含有分量名字的变量名连接起来产生对象名。eviews命令基础在学习编程之前,先回顾一下Eviews的一些常用命令。对象类型指定新建或调用一个对象时,最一般的命令格式是object_typeobject_name其中,对象名称(object_name)自定义,对象类型(object_

2、type)必须采用Eviews规定的标志符,它们有:equation,graph,group,matrix,model,pool,rowvector,sample,series,table和vector等。例如命令seriesz=3*xy/2产生新序列z。命令matrix(2,3)x生成名为x的一个2X3矩阵。(2)对象命令对象命令用于指定对象的某种观测方式或进行某项过程操作,一般格式为actionobject.view_progarg_list其中,action包括以下四个选项:do执行程序而不新打开窗口freeze从当前对象观测状态生成表或图象print打印当前对象观测状态show打开指定

3、对象窗口进行观测object指对象名称,view_proc代表待执行的对象观测方式或操作过程,argist是对观测方式和操作过程的进一步说明,其中的关键字都用空格分开。实际应用时action所代表的部分常常可以省略,例如rev.line等价于showrev.line即绘制序列对象rev的折线图。程序基础(1)新建程序一个程序不是在一个工作文件中的一Eviews对象。它仅仅只是包含Eviews命令的一文本文件。为了生成一新的程序,用户可以点击File/New/Program。用户将会看见一标准的文本编辑窗口。在这里用户可以输入程序的命令文字。用户也可以在命令窗口通过输入Program来打开程序窗

4、口,例如Programprg2将打开了一名字为PRG2的一程序窗口。程序名字应该遵守标准的Eviews文件取名规则。保存程序时,点击窗口上方工具栏的Save或SaveAs按钮来完成保存任务.当程序已经被保存后,它将有扩展名.PRG。(2)打开程序打开原有程序只需在主菜单选择File/Open/Program,再输入要打开或调用的程序名称即可。(2)运行程序有几种方法可以用来运行一程序,最简单的方法是在程序编辑窗口点击Run按钮,屏幕会弹出运行程序定义对话框,如图:图1用户可以在对话框最上面的空行输入程序的名称,如prgl。在Programarguments下面指定命令行参数值。Executio

5、nmode下面的选项是关于程序的运行模式,点选Verboseupdatescreen表示运行程序同时刷新计算机屏幕,Quietnoscreen则不更新。对话框右下角的空格中的数值表示计算机终止程序运行条件即程序执行中错误数的最大值。点选对话框最下面的选项表示将以上定义作为默认运行模式。用户也可以通过输入Run命令和程序文件名来运行一程序如:runprg2orrund:eviewsprg2(3)中断程序运行用户按F1键将终止程序的运行,或当程序运行到Stop命令时,它也将终止,或当它达到最大的错误次数或它通过Run定义完成了一文件所有的命令时。当用户在程序中包含Exit命令时,Eviews将退出

6、运行。简单程序(1)简单程序最简单的程序只是一系列命令。程序的执行等同于把命令一个一个地输入到命令窗口中。如Programmyprog在窗口中生成一新的程序。(2)程序变量用户使用程序来编辑运行和再运行Eviews命令集时,程序语言的真正力量来自于程序变量和程序控制的定义的使用。(3)控制变量控制变量是在Eviews程序中用于代替具体数值的变量,一旦对其赋值,就可以在程序任何地方进行调用。定义一个控制变量的格式是在变量名前标“!”,且变量名不能多于15个字符,如!y!z!pi对控制变量赋值使用赋值号“=”,如!sum=!sum+1smpl1980:1+!x1997:12+!x(4)字符串变量字

7、符串变量的取值是一段文本,并在头尾使用双引号。变量名前的标号为“%”,赋值号仍是“=”,例如%pi=“3.14159”%sample1=“1990:31999:6”赋值后的字符串变量可用于相关命令,如smpl%sample1等价于smpl1990:31999:6下面介绍几个常用的字符串函数。left返回字符串左端开始给定个数的字符;right返回字符串右端开始给定个数的字符;mid返回字符串指定起点开始向右给定个数的字符。如%st1=“Iamhappytomeetyou”%st2=“WebelieveEviewsisawonderfulsoftware”%st3=“learn”%qq=left

8、(%st1,13)+right(%st3,5)+mid(%st2,11,7)函数left(%stl,13)表示从变量stl左端开始截取13个字符,即“Iamhappyto”;函数right(%st3,5)表示从变量%st3右端开始截取5个字符,即“learn”;函数mid(%st2,11,7)表示从变量%st2左起第11个字符开始,向右截取7个字符,即“Eviews”。因此%qq的结果为“IamhappytolearnEviews”。另外,函数str将控制变量取值转化为字符,若!y=200,则函数str(!y)返回字符200。(5)替换变量看例子%x=“gdp”ls%xc%x(-1)%x=“k

9、s”ls%xc%x(-1)这里,通过改变字符串变量乂的取值来代替它在命令中的实际内容,因此称该变量为替换变量。当替换变量与其他字母.数字或变量合用时,应用大括号加以界定,如!y=3seriesx!y这组命令相当于定义了一个名为x3的序列。(6)命令行参数命令行参数是一些特殊的字符串变量。在运行程序时,计算机会出现对话框让用户给出参数的具体值。若程序中用到了这些参数,则每次运行程序都可以改变参数值,使程序有较强的通用性。在Eviews中,命令行参数名默认为%1,%2,%3等等。例如equationeq2smpl1988:11999:6eq2.ls%0c%1%1(-1)inc如果在图1所示的运行程

10、序对话框中定义O=ks和l=m2,则程序最后一行命令相当于eq2.lskscm2m2(-1)inc(7)程序控制Eviews提供了控制程序执行的一些方法,其作用是对于不同的条件,用户可以有选择地或反复地执行一些命令。IF条件句IF条件句由关键词if开始,后面紧跟是条件表达式,然后是关键词then。条件表达式中常使用逻辑运算符and和or,如果需要还可以加上圆括号。若表达式为真,则直到endif的所有命令都被执行,否则命令被跳过,例如If!x5and!x0thenSeriesy1=y/!xElseSeriesy1=yEndif命令表示当控制变量!x取值为正时,新序列y1用原序列y除以该控制变量值

11、产生;当控制变量取值为负或为0时,新序列y1等于原序列y。IF语句也能用于字符串变量并可以嵌套,如If%x=“summer”or%x=“autumn”thenSeriesy=1ElseIf%x=“winter”thenSeriesy=2ElseSeriesy=3EndifEndifFOR循环FOR循环可实现将控制或字符串变量的不同取值代入相同一组命令反复执行,但对不同的变量,语法有区别。先看对控制变量使用FOR循环,如for!x=1to9seriesy!x=(!x+1)next这里,变量!x两次被用作替换变量,分别产生名为y1到y9九个序列和定义序列值为2到10。在for语句中一般还应该有关键

12、词step,后面跟循环变量每次第进步长数值,上面的例子省略了这一部分,系统默认为步长是1。语句for!x=4to!x=9step1表示每循环一次,!x的值加1,循环总次数为5次。与IF语句类似,FOR循环也可以嵌套使用。如matrix(6,15)matrfor!x=1to6for!y=1to15matr(!x,!y)=(!x+1)*5+!ynextnext这段程序用于产生一个6行15列的矩阵,并将其命名为matr。第四行赋值语句的意义是对第!x行第!y列的元素进行赋值。再看对字符串变量使用FOR循环。对字符串变量使用FOR循环时需要在变量名后列出它的取值清单,如for%xgdpksrevnkf

13、equation%x1.ls%xc%x(-1)timenext此程序实际估计了名为gdp1,ks1,rev1和nkf1的四个方程。循环嵌套的构造方法跟嵌套的IF条件语句很类似,如!x=1for%11030for%2508090smpl%1%2equationeq!x.lsgdpcexport!x=!x+1nextnext在此程序里共循环了6次,样本期分别为10到50,10到80,10到90,30到50,30到80,30到90,并且控制变量!x起到了给诸方程命名的作用。(III)WHILE循环在实际应用中经常遇到的是只有满足特定条件时才执行循环命令的情况,这就需要使用WHILE循环语句。WHIL

14、E循环以while语句起始,以wend语句结尾,中间可包括任意数目的命令,也允许嵌套使用。While语句由关键词While和包含控制变量的表达式构成。该表达式具有逻辑真/假值或一个数字取值。对于取值为一个数字的情况,0表示假,其他非零数值则代表真。若表达式为真,则循环执行到wend为止的命令,否则直接运行wend后的程序。例如!x=1!y=10while!x9and!y!old_countVariasCommandsendif此程序中,程序将运行一系列命令当方程EQL的估计产生了新的错误。下面讨论其他的方法。偶尔地,用户可能希望终止一程序或在某些情况下终止一循环的运行。例如,假定用户的程序需要

15、一序列SER!来生成非负的值。下面的命令将检测该序列是否是负的,当SERl有负值时,将终止程序的运行:seriestest=(serl0)ifsum(test)0thenstopendif(9)多程序文件当使用长程序时,用户可以通过使用多文件来组织程序的代码。如,有一名为POWER.PRC的程序包含一系列命令。用户可能试图使用RUN命令来运行该程序,必须注意的是Eviews可能将在执行某些命令后停止,这不是用户所期望的,如:runpower.prgseriesx=gdpl上面的程序只运行POWER里面的命令,并在产生序列X前停止。这可能不是用户所期望的。用户可以使用include来在另一个程序

16、文件中包含一程序文件内容。如可以把includepower放在任何其他需要使用POWER里面的命令的其他程序的前面。所以上面的程序可以改为includepowerseriesx=gdpl就可以产生系列x了。子程序提供了更普遍的.可选择的方法来重复使用命令和参数。(10)子程序子程序是命令集,它可以重复完成某一给定的任务而作小的变动。用户也可以使用一程序中的子程序在另一个程序中来完成相同的任务。(I)定义子程序子程序以关键字subroutine开始,后面接行的名字和任意的参数,并以endsub结束。任何数量的命令都可以在两者之间出现。最简单的子程序是以下形式的:subroutiney_squar

17、eseriesx=yA2endsub这里关键字subroutine后面只接了行的名字。此子程序没有参数,因此每一次被使用它都做相同的事。它的结果是存在产生系列y的平方并存在新系列x中。可以使用return命令来强迫Eviews在任何时间从子程序中返回。Return的一般用法是当意外的错误发生时。(II)带有参数的子程序子程序很多情况下带有一些具体的变量,更一般地,子程序可以带有参数。定义带参数的子程序,以subroutine开始,后面是子程序名,左参数,逗号,右参数。每一个参数都是Eviews对象中的一类,并带有参数名。控制变量可以通过标量来传递,字符串变量可以通过字符串类来传递。例如subr

18、outinepower(seriesv,seriest,scalarp)v=tApendsub此子程序可以生成前面例子中的y_square,当调用POWER并令v=x,t=y,p=2,则可以得到与前面例子中相同的y_square的值。下面讨论怎样调用子程序。(III)子程序替代变量子程序的定义应放在程序的开始,在使用调用函数时,子程序才开始执行。例如:subroutiney_squareseriesx=yA2endsubloadmyworkfetchycally_square此程序的执行以load声明开始,子程序定义被跳过,直到运行到最后一行的Call”才开始执行。在定义另一个子程序前,关键字

19、subroutine后必须以endsub结束。子程序可以相互调用,甚至可以调用它自身。(W)调用子程序一旦程序定义了一个子程序,通过关键字call就可以在程序中调用了。Call后跟子程序名和包含在变量中的一系列需要用到的参数,并用逗号把参数分开。如果子程序带有参数,它们必须以定义中的顺序为它们赋值。下面是一个调用子程序的例子:includepowersloadmyworkfetchzgdpseriesxseriesgdp2seriesgdp3cally_squarecallpower(gdp2,gdp,2)callpower(gdp3,gdp,3)第一个调用的子程序得到X,值为y的平方;第二个

20、调用的子程序得到gdp2,值为gdp的平方,最后调用的子程序得到gdp3,值为gdp3的三次方。全局变量和局部变量子程序的变量和对象不是全局的,就是局部的。全局变量是当调用子程序时存在于工作文件中的对象或在工作文件中的一个子程序中产生的对象。当子程序运行完后,全局变量仍保留在工作文件中。局部变量是只在子程序中有意义的变量。一旦子程序运行完毕,局部变量就从工作文件中消除了。当在主程序中调用子程序时,用户不会过多的关心局部变量,因为局部变量将在子程序完成后立即消失,主程序接着运行原来的程序。(W)全局子程序一般情况下,Eviews中的子程序都是全局的。任何全局子程序与存在于工作文件中的任一个全局对象相联系的。当子程序被调用时,如X是工作文件中的一序列,子程序可以调用,并可以改变X的值。全局子程序中的变量的规则是:新生成的对象都是全局的,并在子程序完成时仍包含在工作文件中。全局对象可以在子程序中直接使用和更新。然而,如果一全局对象与一子程序中的参数有相同的名字,那么变量的名字将与子程序中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论