在 Stata 中,我想探索具有不同因变量和自变量的多种组合的回归。
为此,我决定使用一个循环来执行所有这些回归,然后以简洁方便的形式将相关结果(系数、R2 等)保存在矩阵中。
对于这个矩阵,我想命名行和列以使阅读更容易。
到目前为止,这是我的代码:
clear
sysuse auto.dta
set more off
scalar i = 1
foreach v in price mpg {
foreach w in weight length {
quietly: reg `v' `w' foreign
local result_`v'_`w'_b = _b[`w']
local result_`v'_`w'_t = ( _b[`w'] / _se[`w'] )
local result_`v'_`w'_r2 = e(r2)
if scalar(i) == 1 {
mat A = `result_`v'_`w'_b', `result_`v'_`w'_t', `result_`v'_`w'_r2'
local rownms: var label `v'
}
if i > 1 {
mat A = A \ [`result_`v'_`w'_b', `result_`v'_`w'_t', `result_`v'_`w'_r2']
*local rownms: `rownms' "var label `v'"
}
scalar i = i+1
}
}
mat coln A = b t r2
mat rown A = `rownms'
matrix list A
它将给出一个如下所示的矩阵 A:
. matrix list A
A[4,3]
b t r2
Price 3.3207368 8.3882744 .4989396
Price 90.212391 5.6974982 .31538316
Price -.00658789 -10.340218 .66270291
Price -.22001836 -9.7510366 .63866239
显然,有些事情还没有完成。矩阵的行名应该是“price, price, mpg, mpg”,因为这就是四个回归中的因变量。
在上面的代码中,考虑现在注释掉的行
*local rownms: `rownms' "var label `v'"
它被注释掉是因为在当前的形式中,它给出了一个错误。
我希望rownms
在每次迭代时都在本地宏中附加变量的标签(或名称),生成Price Price Mileage (MPG) Mileage (MPG)
.
但我似乎无法正确使用引号将宏附加到当前变量的标签。