连老师:
您好!
::高级部分::
* 计量分析与Stata应用
* =================================
* 第九讲 模拟分析与自抽样
* =================================
* 9.5 蒙特卡洛模拟
* (Monte Carlo Simulation)
第206-224行
* 仅存在异方差
use true_data, clear
gen z = 0.5*invnorm(uniform())
replace z = 2*invnorm(uniform()) in 51/100
gen y_new = y_true + invnorm(uniform()) + z
* 新数据存在异方差问题:
reg y_new x
predict e, res
gen e_sqr = e^2
predict yhat
scatter e_sqr yhat, sort
* MC 分析
use true_data, clear
gen z = 0.5*invnorm(uniform())
replace z = 2*invnorm(uniform()) in 51/100
simulate _b _se, reps(3000): hetero2 z, c(1)
sum
问题:
为什么第223行 simulate _b _se, reps(3000): hetero2 z, c(1)?c(1)能否改为c(0)?
我的理解:
根据您编的小程序(第187-197行):
* 程序的进一步改进
*---------------------------------------------------------
cap program drop hetero2
program define hetero2
version 9.2
syntax varname[, c(real 3)]
tempvar y
gen `y' = y_true + (invnormal(uniform()) + `c'*`varlist')
reg `y' x
end
*---------------------------------------------------------
要彻底消除内生性,保留异方差,应该设c(0),即
gen `y' = y_true + invnormal(uniform())
我也尝试这两个的结果:
(1)simulate _b _se, reps(3000): hetero2 z, c(1)
Stata结果:
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
_b_x | 3000 2.210506 .0995962 1.785546 2.6724
_b_cons | 3000 1.046697 .1037958 .6770437 1.394174
_se_x | 3000 .1849625 .0093101 .1528581 .2168401
_se_cons | 3000 .1848545 .0093046 .1527689 .2167135
(2)simulate _b _se, reps(3000): hetero2 z, c(0)
Stata结果:
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
_b_x | 3000 2.000261 .100078 1.677909 2.351377
_b_cons | 3000 .9993895 .0993594 .6991107 1.335513
_se_x | 3000 .1005007 .0071649 .0765493 .1330286
_se_cons | 3000 .100442 .0071608 .0765046 .1329509
似乎simulate _b _se, reps(3000): hetero2 z, c(0) 更能体现“异方差并不会影响 x 系数OLS估计的无偏性”。
不知我的理解对吗?
谢谢连老师!