EViews软件的替换变量

2022年5月21日13:38:57EViews软件的替换变量已关闭评论

EViews允许用户使用字符串和替换变量来编辑命令行。例如,字符串变量%x为:

    %x="gdp"

则程序命令行ls %x c %x(-1)表示ls gdp c gdp(-1);将字符串x%的内容更改为m1,则程序行所代表的含义是ls m1 c m1(-1)。基于字符串变量在上述例子中的作用,称之为替换变量(Replacement Variable)。

替换变量可以和字母、数字以及其他替换变量结合起来形成更长的字符串,此时,应该用大括号“{ }”加以界定。例如:

    %object="group"
    %space=" "
    %reg1="gender"
    %reg2="income"
    %reg3="age"
    %regs=%reg1+%space+%reg2+%space+%reg3+%space

用“{ }” 将这些字符串包含进去,表达式为:

    {%object} g1 {%regs}

EViews将替换%object和%regs中的字符,因此该命令的结果是:

    group g1 gender income age

控制变量同样可以被用作替换变量,例如:

    !i=1
    series y{!i}=nrnd
    !j=0
    series y{!i}{!j}=nrnd

其与如下命令:

    series y1=nrnd
    series y10=nrnd

表示的结果等价,都表示建立两个序列y1和y01,这些序列是由标准正态分布所生成的随机数序列。

另外,替换变量也可以用于构造对象的名称,例如:

    %a="3"
    %b="2"
    %c="temp"
    series  z{%b}
    matrix(3,3) x{%a}
    vector(3)    x_{%c}_y

这些命令分别表示建立一个名为Z2的序列、名为X3的3×3的矩阵以及建立一个名为X_TEMP_Y的向量。替换变量为用户在程序中给对象命名提供了很强的适应性。然而,应该避免使用相同的名字来代表不同的对象。例如,下面的例子就有可能引起混淆:

    !a=1
    series x{!a}
    !a=2
    matrix(2,2) x{!a}

在上述简单的程序中,可以很清楚地看到x1是序列,而x2是矩阵。但是在相对比较复杂的程序中,对!a=1的赋值和对序列的声明之间可能存在着许多命令行,因此想要清楚地区分替换变量x{!a}所代表的对象比较困难。此时,解决该问题的一个比较好的方法是对不同的对象使用不同的名字,例如:

    !a=1
    series x{!a}
    !a=2
    matrix(2,2) mat{!a}

EViews会对函数进行参数类型检查,因此在调用带有替换变量的函数时,用户必须使用大括号。带有字符型参数的函数只接收字符型数据,带有序列参数的函数只能接收序列。如果用户希望通过替换变量将序列传入一个序列函数中,就必须将替换变量用大括号括起来,以便让EViews知道使用字符串所代表的是对象,而不是字符串本身。例如,用户希望得到序列income中无缺失值的有效观测值个数,可以使用@obs函数,命令为:

    @obs(income)

若用户想要用字符串变量%var代表序列income,则必须在@obs函数中使用替换变量,正确的形式为:

    @obs({%var})

若使用函数@obs(%var),则EViews会返回一个错误的信息,因为@obs函数需要使用序列作为参数,而不是字符串。

    %var="income"
  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。