




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EViews命令和编程之怎样控制一个程序一、IF语句(IF Statements)EViews提供了几种方法来控制程序命令的执行。控制程序执行的意思是在不同变化的条件下,有选择地执行一些命令或者重复执行一些命令。控制执行的方法想必已从其它计算机语言得以熟悉。在很多情况下仅当一些条件满足时才执行一些命令。EViews运用IF/ENDIF语句指明应满足的条件和要执行的一些命令。IF语句又称条件分支语句。一个IF语句,以关键字IF打头,后接一个条件表达式,然后是关键字THEN。在条件表达式中可以使用AND/OR语句,若有必要还可以采用括号对表达式进行分隔。如果表达式的值为真,执行ENDIF前是全部语句。如果条件表达式的值为假,则滑过这些语句,执行ENDIF之后的语句。条件表达式的值可以是数值型的。在条件表达式的值为数值型时,0等价于假;任何非0的值被认为真。例如,if !stand=1 or (!rescale=1 and !redo=1) thenseries gnpstd = gnp/sqr(gvar) series constd = cons/sqr(cvar)endifif !a5 and !a0 thenseries newage = age/!scaleelseseries newage = ageendif在IF语句中可以使用字符串变量,还可以形成嵌套结构:if %0=ca or %0=in thenseries stateid = 1elseif %0=ma thenseries stateid=2elseif %0=id thenseries stateid=3endifendifendif所有字符串的比较都是“”的。字符串的比较字典顺序并遵循ASCII的等级规则。如果两个字符是相等的,那么这两个字符串具有相同的长度且每个字符都是匹配的。如果一个字符串小于另一个字符串,那么,她相应的字符在字母顺序表中出现的更早。如果一个字符串大于另一个字符串,那么她相应的字符在字母顺序表中出现的更晚,或者另一个字符串没有相应的字符。例如,假设我们给字符串赋给了如下的值%1 = a %2 = b2那么,下列不等式为真:%1abc and abc%2 and %2d259%1 and %1aa and aa%2 and %2ba b%1 and %1a 1 and a 1b110 and b110%2注意,第三个不等式的 b%1中 b的字母b前有一个空格。字符串“A”小于字符串“ABC”,因为它们第一个字符是匹配的,但余下的BC字符在字符串“A”中没有相应的字符。字符串“A”又是大于任何一位数字的,因为在在ASCII表中数字较字母出现得更早。为了检验一同个一个字符串是否包含了任意一个字符,即检验一个字符串是否是一个空字符串。例如,在语句if %str then中,如果字符串变量%STR是非空的,那么将执行该语句的后续语句行。为了检验一个数值量中是否包含了缺省值,即将数值量与NA相比较。例如,在语句if !a na then中,如果!a不是一个缺省值,那么将执行该语句下的后续语句行。注意,包含NA的比较不等式的值总是为假。例如,if 3 na thenif 3 = na then中的表达式的值都是假。二、FOR循环语句(The FOR Loop)FOR循环语句按照控制变量或字符串变量的不同取值,重复地执行一组命令。一个FOR循环以FOR语句作为开头,以NEXT语句作为结束。在这两个语句之间可以出现任何数量的命令行。FOR语句依赖于它是采用控制变量或者它是采用字符串变量,在语法格式上存在一些差别。包含控制变量或数值的FOR循环对控制变量的各个取值重复执行一组语句,FOR语句中为控制变量设置一个初始值,接关键字TO,再接终值。在终值之后,还可以接一个关键字STEP,其后紧跟的数值称为步长,规定了每执行一次循环以后控制变量改变量的大小。如果在FOR语句中不包含STEP,那么步长的缺省值为1,即step=1。例如,for !j=1 to 10series decile!j = (incomelevel!j)next在这个例子中,步长step=1,变量!j两次被用作置换变量。第一次作置换变量时申明了十个序列,从序列DECILE1到序列DECILE10。第二次作置换变量时,引用了十个变量,从变量LEVEL1到变量for !j=10 to 1 step -1series rescale!j=original/!jnext在这个例子中,step=-1,!j也用作置换变量。在申明序列语句中构造了10个序列名,从序列RESCALE10到序列RESCALE1。还用来除序列ORIGINAL。FOR循环首先从初始值开始执行,除非控制变量的值已经超越了终值。在从初始值开始执行一次以后控制变量按照步长增加,EViews将控制变量的值与终值比较。如果控制变量的值超越了终值,则FOR循环停止执行。包含控制变量FOR循环的重要应用是改变样本区间的范围。如果在smpl命令中采用控制变量来表示日期,那么就会得到一个随着控制变量现值变动而变动的日期及其相应的一组观察值。在下面FOR例子中,逐步地增大样本区间进行滚动回归估计。for !horizon=10 to 72smpl 1970:1 1970:1+!horizonequation eq!horizon.ls sales c ordersnext包含控制变量FOR循环的另一个重要应用,是增加序列或矩阵对象包含元素的个数。例如,!rows=rows(vec1)vector cumsum1 = vec1for !i=2 to !rowscumsum1(!i) = cumsum1(!i-1) + vec1(!i) next程序计算向量VEC1元素的累计和并将累计和保存到向量CUMSUM1中。FOR循环可以嵌套在FOR循环内。对于外循环的每一逐个值,都完整地执行一次内循环。例如,matrix(25,10) xxfor !i=1 to 25for !j=1 to 10xx(!i,!j)=(!i-1)*10+!jnextnext对于外循环(!i循环)的每一个值(125),完整地执行一次内循环。应当避免在循环体内改变控制变量的值,以免引起混淆。例如 potentially confusing loop (avoid)for !i=1 to 25vector a!i!i=!i+10next这里,在FOR循环语句和循环体内两处改变了控制变量!i的值。要追踪这类循环是相当困难的,经常得到不可预知的结果。如果希望在循环体内改变控制变量的值,应当采用当循环(WHILE loop)。可以采用数值量代替控制变量来执行FOR循环。但是,首先必须对数值量申明进行申明,而且也不能将数值量作为置换变量使用。例如,scalar iscalar sum = 0vector (10) xfor i=1 to 10x(i) = isum = sum + Inext在这个例子中数值变量I和SUM当程序执行完毕以后仍然保留在工作文件中,除非点名将它们删除。包含字符串变量的FOR循环(FOR Loops with String Variables )当希望对于字符串变量的不同取值重复地执行一些语句,就应当采用包含字符串变量的FOR循环。并在FOR循环语句中让字符串变量在整个字符串值列表中依次取值。关键字FOT后是字符串变量名,后接字符串值列表。例如,for %y gdp gnp ndp nnpequation %ytrend.ls %y c %y(-1) timenext在这个FOR循环中字符串变量%y要分4次遍历gdp,gnp,ndp,nnp。执行这个循环等价于执行下列四个语句:equation gdptrend.ls gdp c gdp(-1) timeequation gnptrend.ls gnp c gnp(-1) timeequation ndptrend.ls ndp c ndp(-1) timeequation nnptrend.ls nnp c nnp(-1) time生成4个方程。用户可以在FOR循环中设置多个字符串变量。EViews将把它们作为一个字符串变量组来处理。例如for %1 %2 %3 55:1 60:4 early 70:2 80:3 mid 75:4 95:1 latesmpl %1 %2equation %3eq.ls sales c ordersnext在这个例子中,列表中的元素是三个一组的被读取。循环语句用不同的起止配对的样本区间执行了三次,并给每次估计的方程进行了命名:smpl 55:1 60:4equation earlyeq.ls sales c orderssmpl 70:2 80:3equation mideq.ls sales c orderssmpl 75:4 95:1equation lateeq.ls sales c orders注意,这种字符串变量组的结构与嵌套的FOR循环的结构是不同的。前者所有的字符串变量的取值是同时更新的。嵌套的FOR循环,则是外层字符串变量保持固定下,更新内层字符串变量的取值。内层和外层字符串变量取值的更新是不同步的。例如,!eqno = 1for %1 55:1 60:4 for %2 70:2 80:3 75:4 smpl %1 %2form equation name as eq1 through eq6equation eq!eqno.ls sales c orders!eqno=!eqno+1nextnext本例中估计了6个方程:样本区间55:1 70:2 ,估计方程 EQ1;样本区间55:1 80:3,估计方程 EQ2;样本区间55:175:4,估计方程 EQ3;样本区间60:4 70:2 ,估计方程 EQ4;样本区间60:4 80:3,估计方程 EQ5;样本区间60:4 75:4,估计方程 EQ6。三、WHILE当循环语句(The WHILE Loop)存在这类情况,即仅当一个或多个条件满足时,希望重复执行一系列命令几次时,就应当采用循环语句。与FOR循环一样,当循环(WHILE loop)也可重复执行命令,但当循环在设置条件要求方面存在更大的灵活性。当循环(WHILE loop)以WHILE语句开始,又以WEND语句结束。这两个语句之间可有多个命令行。也可对当循环进行嵌套。WHILE语句由关键字while打头,后接一个与控制变量相关联的表达式,表达式可以取逻辑值也可取数值值。在取数值值时,0被认为是假,非0被认为是真。如果表达式为真,后续语句被执行,直到遇到WEND语句。然后又重复这一过程。如果条件为假,EViews将跳过这些语句,从wend语句以后程序继续执行。例如,!val = 1 !a = 1while !val10000 and !a10smpl 1950:1 1970:1+!aseries inc!val = income/!val!val = !val*10!a = !a+1wend这个当循环包括4个部分。第一部分是给控制变量赋给初始值,为检验条件作准备。第二部分是包含检验条件的WHILE语句部分。第三部分是更新控制变量的。第四部分是以关键字WEND为标志的循环结束部分。与FOR语句不同,WHILE语句在检验条件时不更新控制变量。必须在循环体内明确地包含一个用来改变控制变量取值的语句,否则循环将永不结束。使用F1键可以中断一个无限循环程序的执行。与前述FOR循环例子中控制变量取值的更新相比,WHILE循环中控制变量取值的变化则更清晰一些:!i = 1while !i=25vector a!i!i = !i + 11wend四、其它控制流程的工具(Other Flow of Control Tools)有时,希望依据某种条件停止程序的执行或者中断循环的执行。采用stop命令可以中断EViews程序的执行。例如,编写了一个要求序列SER1是一个具有非负值的序列。下列命令检查序列是否具有非负值,如果序列SER1中包含任意一个非负值,程序将被中断:series test = (ser10)if sum(test) 0 thenstopendif注意,如果序列SER1中包含了缺失值,那么序列TEST中相应单元也是一个缺失值,由于函数sum忽略缺失值,因此只要序列SER1中不包含非负值,程序将不会中断,继续执行分支语句后的程序。有时,当条件满足时并不是希望停止整个程序的执行,而是希望退出当前的循环。Exitloop命令将退出当前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚财产分割协议:共同财产评估与分配方案
- 生态环保型厂房车间租赁服务协议
- 采购谈判与跟单培训及效果监测合同
- 环保项目现场管理规则与格式条款合同详解
- 环保项目典当质押贷款服务合同示例
- 文化创意园场合作经营与创新合作协议
- 绿色环保型厂房商铺租赁服务协议
- 生态车库建设与运营管理合同样本
- 新能源汽车抵押贷款操作细则合同
- 车辆股份及商标权联合转让合同
- 2025年山东省烟台市中考真题数学试题【含答案解析】
- 种猪养殖场建设项目初步设计方案
- 中位数与箱线图-第2课时箱线图复习巩固课件北师大版(2025)数学八年级上册
- 2025年山东将军烟草新材料科技有限公司招聘笔试冲刺题(带答案解析)
- 兵团开放大学2025年春季《公共关系学》终结考试答案
- 2025年中考语文押题作文范文10篇
- 打造重点专科协议书
- 【小学】新苏教版小学数学四年级下册暑假每日一练(02):计算题-应用题(含答案)
- 2025猪蓝耳病防控及净化指南(第三版)
- 细菌性结膜炎
- 红木文化知到智慧树期末考试答案题库2025年广西大学
评论
0/150
提交评论