存储Stata中回归的系数

时间:2018-02-13 01:01:51

标签: regression least-squares stata

我试图将模拟回归中的系数存储在下面代码中的变量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的标准错误。

1 个答案:

答案 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 _allclear视为不必要的。我切了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 _allclear视为不必要的。现在宣言eclass是双刃剑。它为程序员提供了保存e-class结果的程序范围,但你必须说出它们将会是什么。这是上面评论所指示的添加内容。

警告:我没有测试过这个。我不是在处理更广泛的背景。 @Dimitriy V.Masterov对lincom的建议可能是一个非常好的主意,无论你的问题是什么。