澄清循环以在Stata中创建交互术语

时间:2018-02-25 20:16:41

标签: loops stata interaction

我发现以下问题/答案,我认为我想做的事情:https://www.stata.com/statalist/archive/2009-09/msg00449.html

但是,我不清楚所有这些内容的发生情况,并希望更好地理解。解决方案的代码如下:

unab vars : var1-var30
local nvar : word count `vars'
forval i = 1/`nvar' {
  forval j = 1/`=`i'-1' {
    local x : word `i' of `vars'
    local y : word `j' of `vars'
    generate `x'X`y' = `x' * `y'
  }
}

我不明白第4行的内容是什么:``= i'-1'

i指的是集合{1,...,n}中的数字,但我不明白等于或-1正在做什么。我的假设是-1以某种方式删除了自己的观察,但我不清楚。任何解释都将不胜感激。

1 个答案:

答案 0 :(得分:1)

假设您的本地宏i在一定范围内变化且您希望其值减1.您可以随时执行此操作

  local j = `i' - 1 

然后参考j。您也可以动态执行此操作:

 `= `i' - 1' 

 `=   ' 

Stata将评估表达式,此处

`i' - 1 

并在命令行中替换该表达式的结果。

您也可以使用标量来执行此操作:

scalar foo = 42 

然后参考

`= foo' 

然而,请注意。标量名称和变量名称占用相同的名称空间。

`= scalar(foo)' 

消除歧义,并且在任何情况下都可以说是好的风格。