Stata在循环中命名标量

时间:2014-02-10 19:50:09

标签: 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 =  .00928925
s1 =  .00928925

所以它正在创建新的标量,只是它运行的最后一个回归系数。

我希望结果是:

s1=first reg coefficient
s2=2nd reg coefficient

谢谢!

2 个答案:

答案 0 :(得分:2)

这有效:

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'
}

您的代码有几点:

  1. 不需要第二个循环。如果要将循环编号附加到标量名称,可以使用local作为计数器。我使用本地i并更新它(即添加1),每次通过循环。更重要的是,请注意,对于每个自变量,您运行相同的回归两次(因为forval i=1/2)。

  2. 我无法看到您使用第local varlist = "vertical reps"行尝试的内容。你应该在循环之外定义回归量,如果这是你的目标。

答案 1 :(得分:2)

作为参考,这是另一种方法。

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'
}