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”命令做了一些研究,这是一种明智的方法。