我试图将模拟回归中的系数存储在下面代码中的变量b1和b2中,但我不太清楚如何去做。我尝试使用return scalar b1 = _b[x1]
函数中的return scalar b2 = _b[x2]
和rclass()
,但这不起作用。然后我尝试使用来自scalar b1 = e(x1)
函数的scalar b2 = e(x2)
和eclass()
,但也没有成功。
目标是使用这些存储的系数来估计一些值(比如说rhat)并测试rhat的标准误差。
以下是我的代码:
program montecarlo2, eclass
clear
version 11
drop _all
set obs 20
gen x1 = rchi2(4) - 4
gen x2 = (runiform(1,2) + 3.5)^2
gen u = 0.3*rnormal(0,25) + 0.7*rnormal(0,5)
gen y = 1.3*x1 + 0.7*x2 + 0.5*u
* OLS Model
regress y x1 x2
scalar b1 = e(x1)
scalar b2 = e(x2)
end
我想做点什么,
rhat = b1 + b2,然后测试rhat的标准错误。
答案 0 :(得分:0)
让我们对您的计划进行一些修改:
版本1
program montecarlo2
clear
version 11
set obs 20
gen x1 = rchi2(4) - 4
gen x2 = (runiform(1,2) + 3.5)^2
gen u = 0.3*rnormal(0,25) + 0.7*rnormal(0,5)
gen y = 1.3*x1 + 0.7*x2 + 0.5*u
* OLS Model
regress y x1 x2
end
我根据drop _all
将clear
视为不必要的。我切了eclass
。这样做的一个原因是regress
将以任何方式唤醒e级结果。此外,您可以添加
scalar b1 = _b[x1]
scalar b2 = _b[x2]
scalar r = b1 + b2
在regress
之后的程序内或程序运行后立即执行。
第2版
program montecarlo2, eclass
clear
version 11
set obs 20
gen x1 = rchi2(4) - 4
gen x2 = (runiform(1,2) + 3.5)^2
gen u = 0.3*rnormal(0,25) + 0.7*rnormal(0,5)
gen y = 1.3*x1 + 0.7*x2 + 0.5*u
* OLS Model
regress y x1 x2
* stuff to add
end
同样,我根据drop _all
将clear
视为不必要的。现在宣言eclass
是双刃剑。它为程序员提供了保存e-class结果的程序范围,但你必须说出它们将会是什么。这是上面评论所指示的添加内容。
警告:我没有测试过这个。我不是在处理更广泛的背景。 @Dimitriy V.Masterov对lincom
的建议可能是一个非常好的主意,无论你的问题是什么。