《2022年Eviews程序编辑 .pdf》由会员分享,可在线阅读,更多相关《2022年Eviews程序编辑 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一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、 2 3 矩阵。(2 )对象命令对象命令用于指定对象的某种观测方式或进行某项过程操作,一般格式为action object.view_prog arg_list 其中, action 包括以下四个选项:do 执行程序而不新打开窗口freeze 从当前对象观测状态生成表或图象print 打印当前对象观测状态show 打开指定对象窗口进行观测object 指对象名称, view_proc 代表待执行的对象观测方式或操作过程,arg_list 是对观测方式和操作过程的进一步说明,其中的关键字都用空格分开。实际应用时action 所代表的部分常常可以省略,例如rev.line 等价于 show rev
3、.line 即绘制序列对象 rev 的折线图。二. 程序基础(1)新建程序一个程序不是在一个工作文件中的一Eviews 对象。它仅仅只是包含Eviews 命令的一文本文件。为了生成一新的程序,用户可以点击File/New/Program 。用户将会看见一标准的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 文本编辑窗口。在这里用户可以输入程序的命令文字。用户也可以在命令窗口通过输入Program 来打开程序窗口,例如Progr
4、am prg2 将打开了一名字为PRG2 的一程序窗口。程序名字应该遵守标准的Eviews 文件取名规则。保存程序时,点击窗口上方工具栏的Save 或 Save As 按钮来完成保存任务 . 当程序已经被保存后,它将有扩展名 .PRG。(2)打开程序打开原有程序只需在主菜单选择File/Open/Program, 再输入要打开或调用的程序名称即可。(3)运行程序有几种方法可以用来运行一程序,最简单的方法是在程序编辑窗口点击Run 按钮,屏幕会弹出运行程序定义对话框,如图:用户可以在对话框最上面的空行输入程序的名称,如prg1 。在 Program arguments下面指定命令行参数值。 Ex
5、ecution mode 下面的选项是关于程序的运行模式,点选 Verbose update screen 表示运行程序同时刷新计算机屏幕, Quiet no screen 则不更新。对话框右下角的空格中的数值表示计算机终止程序运行条件即程序执行中错误数的最大值。点选对话框最下面的选项表示将以上定义作为默认运行模式。用户也可以通过输入Run 命令和程序文件名来运行一程序如:run prg2 or run d:eviews prg2 (4)中断程序运行用户按 F1 键将终止程序的运行,或当程序运行到Stop 命令时,它也将终止,或当它达到最大的错误次数或它通过Run 定义完成了一文件所有的命令时
6、。当用户在程序中包含Exit 命令时, Eviews 将退出运行。三. 简单程序(1 )简单程序最简单的程序只是一系列命令。程序的执行等同于把命令一个一个地输入到命令窗口中。如Program myprog 在窗口中生成一新的程序。(2 )程序变量用户使用程序来编辑 . 运行和再运行Eviews 命令集时,程序语言的真正力量来自于程序变名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 量和程序控制的定义的使用。(3)控制变量控制变
7、量 是在 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 等价于 smp
8、l 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
9、 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” 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
10、- - - - - - - 第 3 页,共 11 页 - - - - - - - - - ls %x c %x(-1) %x= “ks ” ls %x c %x(-1) 这里,通过改变字符串变量 %x 的取值来代替它在命令中的实际内容,因此称该变量为替换变量。当替换变量与其他字母. 数字或变量合用时,应用大括号加以界定,如!y=3 series x!y 这组命令相当于定义了一个名为x3 的序列。(6 )命令行参数命令行参数是一些特殊的字符串变量。在运行程序时,计算机会出现对话框让用户给出参数的具体值。若程序中用到了这些参数,则每次运行程序都可以改变参数值,使程序有较强的通用性。在 Eviews
11、 中,命令行参数名默认为 %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 ,如果需要还可以加上圆
12、括号。若表达式为真,则直到endif 的所有命令都被执行,否则命令被跳过,例如If !x5 and !x0 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 Endi
13、f 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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
14、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - 表示每循环一次, !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 循环。对字符串变量
15、使用FOR 循环时需要在变量名后列出它的取值清单,如for %x gdp ks rev nkf equation %x1.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 next next 在此程序里共循环了6 次,样本期分别为10 到 50,10 到 80 ,10 到 90 ,30 到 50 ,30到 8
16、0,30 到 90,并且控制变量 !x 起到了给诸方程命名的作用。() WHILE 循环在实际应用中经常遇到的是只有满足特定条件时才执行循环命令的情况,这就需要使用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - WHILE 循环语句。 WHILE 循环以 while 语句起始,以wend 语句结尾,中间可包括任意数目的命令,也允许嵌套使用。While 语句由关键词While 和包含控制变量的表达式构成。该表达式具有逻辑真/ 假
17、值或一个数字取值。对于取值为一个数字的情况,0 表示假,其他非零数值则代表真。若表达式为真,则循环执行到wend 为止的命令,否则直接运行wend 后的程序。例如!x=1 !y=10 while !x9 and !y !old_count Varias Commands endif 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 11 页 - - - - - - - - - 此程序中,程序将运行一系列命令当方程EQL 的估计产生了新的错误。下面讨论其他的方法。偶尔地,用户
18、可能希望终止一程序或在某些情况下终止一循环的运行。例如,假定用户的程序需要一序列SER! 来生成非负的值。下面的命令将检测该序列是否是负的,当 SER1 有负值时,将终止程序的运行:series test=(ser10) if sum(test)0 then stop endif (9)多程序文件当使用长程序时,用户可以通过使用多文件来组织程序的代码。如,有一名为POWER.PRC 的程序包含一系列命令。用户可能试图使用RUN 命令来运行该程序,必须注意的是Eviews 可能将在执行某些命令后停止,这不是用户所期望的,如:run power.prg series x= gdp1 上面的程序只运
19、行POWER 里面的命令,并在产生序列X 前停止。这可能不是用户所期望的。用户可以使用include 来在另一个程序文件中包含一程序文件内容。如可以把include power 放在任何其他需要使用POWER 里面的命令的其他程序的前面。 所以上面的程序可以改为include power series x=gdp1 就可以产生系列 x 了。子程序提供了更普遍的 . 可选择的方法来重复使用命令和参数。(10)子程序子程序是命令集,它可以重复完成某一给定的任务而作小的变动。用户也可以使用一程序中的子程序在另一个程序中来完成相同的任务。(I)定义子程序子程序以关键字subroutine 开始,后面接
20、行的名字和任意的参数,并以endsub 结束。任何数量的命令都可以在两者之间出现。最简单的子程序是以下形式的:subroutine y_square series x=y2 endsub 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - - - - 这里关键字 subroutine 后面只接了行的名字。 此子程序没有参数, 因此每一次被使用它都做相同的事。它的结果是存在产生系列y 的平方并存在新系列x 中。 可以使用 return 命令来强
21、迫 Eviews 在任何时间从子程序中返回。Return 的一般用法是当意外的错误发生时。(II )带有参数的子程序子程序很多情况下带有一些具体的变量,更一般地,子程序可以带有参数。定义带参数的子程序,以 subroutine 开始,后面是子程序名, 左参数,逗号,右参数。每一个参数都是 Eviews 对象中的一类,并带有参数名。控制变量可以通过标量来传递,字符串变量可以通过字符串类来传递。例如subroutine power(series v, series t, scalar p) v=tp endsub 此子程序可以生成前面例子中的y_square ,当调用 POWER 并令 v=x,t
22、=y,p=2, 则可以得到与前面例子中相同的y_square 的值。下面讨论怎样调用子程序。(III) 子程序替代变量子程序的定义应放在程序的开始,在使用调用函数时,子程序才开始执行。例如:subroutine y_square series x=y2 endsub load mywork fetch y call y_square 此程序的执行以 load 声明开始,子程序定义被跳过,直到运行到最后一行的“call ”才开始执行。在定义另一个子程序前,关键字subroutine 后必须以endsub 结束。子程序可以相互调用,甚至可以调用它自身。()调用子程序一旦程序定义了一个子程序,通过关
23、键字call 就可以在程序中调用了。Call 后跟子程序名和包含在变量中的一系列需要用到的参数,并用逗号把参数分开。如果子程序带有参数,它们必须以定义中的顺序为它们赋值。下面是一个调用子程序的例子:include powers 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - load mywork fetch z gdpseries x series gdp2 series gdp3 call y_square call po
24、wer(gdp2,gdp,2) call power(gdp3,gdp,3) 第一个调用的子程序得到x, 值为 y 的平方;第二个调用的子程序得到gdp2, 值为 gdp 的平方,最后调用的子程序得到gdp3,值为 gdp3 的三次方。()全局变量和局部变量子程序的变量和对象不是全局的,就是局部的。 全局变量是当调用子程序时存在于工作文件中的对象或在工作文件中的一个子程序中产生的对象。当子程序运行完后,全局变量仍保留在工作文件中。局部变量是只在子程序中有意义的变量。一旦子程序运行完毕,局部变量就从工作文件中消除了。当在主程序中调用子程序时,用户不会过多的关心局部变量,因为局部变量将在子程序完成
25、后立即消失,主程序接着运行原来的程序。()全局子程序一般情况下, Eviews 中的子程序都是全局的。任何全局子程序与存在于工作文件中的任一个全局对象相联系的。当子程序被调用时,如x 是工作文件中的一序列,子程序可以调用,并可以改变 x 的值。全局子程序中的变量的规则是:1新生成的对象都是全局的,并在子程序完成时仍包含在工作文件中。2全局对象可以在子程序中直接使用和更新。然而,如果一全局对象与一子程序中的参数有相同的名字,那么变量的名字将与子程序中的参数的名字相联系,而不是全局变量。3与全局对象相对应的参数将通过相关的参数直接使用和更新。下面是调用全局子程序的一个简单例子。Subroutine
26、 y_square Series x=y2 Endsub Load mywork Fetch y 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - Call y_square Y_square 是一全局子程序,它与全局序列y 相联系。新全局序列x 值为序列y 的平方。当 y_square 运行完后,x 和 y 的值都保存在工作文件中。()局部子程序全局子程序生成的所有对象都是全局的,并将保留在工作文件中,当从子程序中退出时。当
27、用户在定义子程序时使用关键字local ,就得到一局部子程序。所有由局部子程序生成的对象是局部的,并将在工作文件中消除,当子程序运行结束时。当用户希望在子程序中生成许多临时的但不需要保存的对象时,局部子程序是非常有用的。局部子程序中的变量规则是:1用户不能直接地在一个子程序中使用或更新一个全局变量。2与全局对象相应的参数可以通过相关的参数来使用和更新。3子程序中所有的其他的对象都是局部的,并将在子程序运行完时消失。要保存局部子程序的运行结果,用户必须在参数中直接保存它们,并在程序运行完时返回它们。例如:subroutine local ols(series y, series h, scalar ss) equation temp_eq.ls y c y(-1) y(-1)2 y(-1)3 temp_eq.makeresid h ss=remp_eq.ss endsub 此局部子程序带有作为输入的序列y, 作为输出返回结果的序列h 和标量 ss 。 方程对象TEMP_EQ 对子程序来说是局部的,并将在子程序运行完时消失。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -