Stata无偏性检验(安慰剂检验代码)

无偏性检验原理

Stata回归的系数值只是某个样本的观测值,不一定是真值(事实上恰好等于真值的概率极小),但较大概率会落在真值的附近,且分布有一定规律。
对于回归系数结果的无偏性,我们可以通过在整体中反复抽样进行检验,观测结果分布。

检验思路

在Excel中随机生成一列x(自变量),一列u(干扰项),然后令y=1.6x+u,这样生成x,y两列相关性很高但并非完全线性的数据,其中u刻画了其他因素的冲击。

Stata代码

此检验需要做多次循环,而恰好Stata写循环又比较鬼畜,下面给出完整代码:

//随机指定treat变量
forvalue i=1/200{ //循环200次
	clear
    import excel "C:\Users\Desktop\计量助教\有效性检验\有效性检验.xlsx", firstrow  //调入数据,换path
	gen random_digit1=ceil(runiform(1,1000)) //生成1到1000随机数(可能重复)
	g new_treat=0
	sort random_digit1 //根据随机数random_digit1排序
	gen s=_n
	replace new_treat=1 if s<51  //样本容量50 /*(51-1)*/

    //合并,回归,提取系数//
	//g x = post*new_treat
	reg y x if new_treat==1  //筛选lable为1的样本部分
	g _b_new_treat = _b[x]  //提取x的回归系数
	g _se_new_treat = _se[x] //提取x的标准误
	g _t_new_treat=_b_new_treat/_se_new_treat  //计算得到p值
	g _p_new_treat = 2*ttail(e(df_r), abs(_t_new_treat))  //计算得出pvalue
	keep _b_new_treat  _se_new_treat _t_new_treat _p_new_treat
	duplicates drop _b_new_treat, force
	save placebo`i', replace  //把第i次placebo检验的系数和标准误存起来
}


//纵向合并200次的系数和标准误 
use placebo1, clear
forvalue i=2/200{
    append using placebo`i' //纵向合并200次回归的系数及标准误
}  

//t值,p值作图
gen p值=_p_new_treat
gen 估计系数=_b_new_treat
twoway scatter p值 估计系数 , color(*.5)|| kdensity 估计系数 ,tline(1.6 , lp(dash) lc(black) )  tlabel(1.6 , add  labsize(*.75)) //1.6是基准回归中的系数真值   
   
* 删除临时文件 *
forvalue i=1/200{
    erase  placebo`i'.dta 
} 

* 保存结果 *
save result2.dta,replace

代码注释已经较为详细,只要把数据路径换掉就可以跑。

结果

选取1000个观测值,第一次跑200遍,每次随机抽取50个观测值:
200遍循环
下面还有每次抽取400个,跑50次循环结果:
50遍
可以明显看出,样本容量较大时更容易发现真值,或者说从分布结果来看距离真值更近。

  • 6
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金工校尉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值