Stata在循环中命名标量
我从一个变量列表开始,我想对这些变量进行回归。然后我想将它们的系数保存为一个标量,并在末尾加上一个数字。例如,这里是我目前为止的代码Stata在循环中命名标量,stata,scalar,Stata,Scalar,我从一个变量列表开始,我想对这些变量进行回归。然后我想将它们的系数保存为一个标量,并在末尾加上一个数字。例如,这里是我目前为止的代码 local varlist="vertical reps" foreach variable of local varlist{ forval i=1/2{ quietly reg successorfail `variable' scalar s`i'=_b[`variable'] } } 当我列出结果时,我只得到: s2 = .009289
local varlist="vertical reps"
foreach variable of local varlist{
forval i=1/2{
quietly reg successorfail `variable'
scalar s`i'=_b[`variable']
}
}
当我列出结果时,我只得到:
s2 = .00928925
s1 = .00928925
因此,它正在用它运行的最后一个回归系数创建新的标量
我希望结果是:
s1=first reg coefficient
s2=2nd reg coefficient
谢谢 这是有效的:
clear all
set more off
sysuse auto
local varlist mpg weight
local i 0
foreach variable of local varlist {
local ++i
quietly reg price `variable'
scalar s`i'=_b[`variable']
display s`i'
}
您的代码有以下几点:
I
并在每次通过循环时对其进行更新(即向其添加1)。更重要的是,请注意,对于每个自变量,您将运行相同的回归两次(因为forval i=1/2
)local varlist=“vertical reps”
尝试什么。如果你的目标是回归,那么你应该在循环之外定义回归作为参考,这里有另一种方法
clear all
set more off
sysuse auto
local varlist "mpg weight"
local nv : word count `varlist'
tokenize "`varlist'"
forval i = 1/`nv' {
quietly reg price ``i''
scalar s`i'=_b[``i'']
display s`i'
}
杰出的我不知道斯塔塔在当地有这样的柜台。我只是用localvarlist命令创建变量的本地宏,就像您在示例中所做的那样。谢谢你谢谢你。我对“tokenize”命令做了一些研究,这是一种明智的方法。