全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 统计软件培训班VIP答疑区
2489 2
2014-04-12
连老师:
您好!
::高级部分::
          *              计量分析与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估计的无偏性”。
不知我的理解对吗?
谢谢连老师!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-4-17 15:44:48
simulate _b _se, reps(3000): hetero2 z, c(1) 中反映了异方差问题,但并不存在内生性问题,因为 z 与干扰项并不相关;
然而 simulate _b _se, reps(3000): hetero2 z, c(0) 却无法反应异方差问题,你可以看看数据产生过程。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-19 20:19:10
关键是c(1)怎么理解?
我认真看了几遍数据的产生过程:
*- 内生性问题和异方差同时存在的影响   
  *----------------------------------------
   cap program drop hetero1
   program define hetero1
   version 9.2
     args c
     use true_data, clear
     gen z = invnormal(uniform())
     gen u = z + `c'*x
     gen y = y_true + u
     reg y x
   end
  *----------------------------------------
   simulate _b _se, reps(2000): hetero1 3
   sum
   理解:c 就是x 前面的系数

* 仅存在异方差
   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
  
理解:这里就已经产生了异方差。
gen y = y_true + u
gen u = z + `c'*x
所以 y =  y_true + z + `c'*x
而c(0)表示x前系数为0,z 并不为0,不存在干扰异方差问题。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群