Stata | 分组回归系数差异性查验

[复制链接]
查看635 | 回复0 | 2023-8-23 11:47:49 | 显示全部楼层 |阅读模式
这篇博客先容的是在两个样本组的模子设定是一样的情形下,进行分组回归后,比力雷同变量中二者在系数巨细上是否明显差异。如果系数差异明显,则阐明二者在经济意义上明显差异。
由于我们常常利用的数据是面板数据,并且,我们常常由于控制许多固定效应,导致在进行系数差异性查验碰钉子,以是本篇博客是在基于公司面板数据为例,假设探讨薪酬鼓励(x)是否有助于提升企业业绩(y),并控制企业特征变量($z),添加了年份(year)、行业(ind)、公司(firm)固定效应,并在公司层面聚类。
主回归模子如下:
  1. reghdfe y x $z, absorb(year ind firm) vce(cluster firm)
复制代码
分组回归是探讨国有企业(state1)和非国有企业(state0)在薪酬鼓励(x)对企业业绩(y)回归系数是否有明显差异。
本文紧张先容如下几种方法:
I. 参加交乘项
II.基于 SUR 模子的查验
III.组合查验
IV.本身编写步伐
V.手动盘算
本文紧张分享过程,不具体展开原理,具体参考如下资料
1、Stata: 怎样查验分组回归后的组间系数差异?
2、同一个模子三组差别样本下,回归系数间的差异性查验
3、Stata:本身动手做组间系数差异查验-bootstrap-bdiff

  
I.参加交乘项

  1. *-I.加入交乘项
  2. //最严格的系数差异性检验:假设其他控制变量在两组之间的不存在系数差异
  3. **生成交乘项变量
  4. xtset stkcd year
  5. gen x_state = x*state
  6. **加入产权性质(state)和交乘项(x_state)进行回归
  7. reghdfe y x state x_state $z, absorb(year ind firm) vce(cluster firm)  
复制代码
II.基于 SUR 模子的查验

  1. *-II.基于 SUR 模型的检验
  2. //假设条件也比较宽松:回归时要保持二者回归变量一致,且固定效应多的时候需要去中心化(运行速度的考虑)
  3. **固定效应处理
  4. xtset stkcd year
  5. tab year,gen(y_)  // 年度固定效应
  6. tab ind,gen(i_)  // 行业固定效应
  7. foreach var of varlist y x $z i_* y_* {       
  8.         egen double `var'_0 = mean(`var'), by(firm)
  9.         replace `var' = `var'-`var'_0
  10.         drop `var'_0
  11.         }  // 企业固定效应太多维,所以在企业层面进行去中心化来控制企业固定效应,加快运行速度
  12.        
  13. **分组回归并进行差异性检验
  14. reg y x $z i_* y_*  if state==1
  15. est store SOE
  16. reg y x $z i_* y_*  if state==0
  17. est store NonSOE
  18. suest SOE NonSOE, vce (cluster firm)
  19. test [SOE_mean]x=[NonSOE_mean]x
复制代码
III.组合查验

  1. *-III.组合检验
  2. //条件最为宽松:原始样本是从母体中随机抽取的,适用于各种命令(reg、xtreg、logit、ivregress)
  3. **-方式I
  4. **固定效应处理
  5. xtset stkcd year
  6. tab year,gen(y_)  // 年度固定效应
  7. tab ind,gen(i_)  // 行业固定效应
  8. foreach var of varlist y x $z i_* y_* {       
  9.         egen double `var'_0 = mean(`var'), by(firm)
  10.         replace `var' = `var'-`var'_0
  11.         drop `var'_0
  12.         }  // 企业固定效应太多维,所以在企业层面进行去中心化来控制企业固定效应,加快运行速度
  13.        
  14. **分组回归并进行差异性检验
  15. bdiff, group(state) model(xtreg y x $z i_* y_*, cluster(firm)) reps(1000) seed(10101) first detail
  16. **-方式II
  17. xtset stkcd year
  18. bdiff, group(state) model(reghdfe y x $z, absorb(year ind firm) vce(cluster firm)) reps(1000) seed(10101) first detail
复制代码
IV.本身编写步伐

  1. *-IV.自己编写程序
  2. //基于bdiff的原理,进行撰写,可以灵活运用自己回归的方式
  3. **编写程序
  4. capture program drop bse
  5. program bse, eclass
  6. xtset stkcd year
  7. **-分组回归
  8. reghdfe y x $z if state==1, absorb(year indid firm) vce(cluster firm)
  9. scalar b1= _b[x]
  10. reghdfe  y x $z if state==0, absorb(year indid firm) vce(cluster firm)
  11. scalar b2= _b[x]
  12. **-计算组间系数差异
  13. scalar diff= b1- b2
  14. **-将组间系数差存储在矩阵中,设置列名方便调取
  15. matrix b = diff
  16. matrix colnames b = diff
  17. **-将组间系数差矩阵返回 e() 中
  18. ereturn post b
  19. ereturn display
  20. end
  21. **运行程序进行检验
  22. bse // 运行程序
  23. bootstrap _b[diff], reps(500) seed(1234) saving(diff,replace) nowarn : bse // 循环500次抽样
  24. use diff,clear
  25. count if _bs_1>0
  26. local num = r(N)
  27. local p = `num'/_N
  28. if `p'>0.5 {
  29.         local p = 1-`p'
  30.         }
  31. dis "y:`p'" // 不对diff的分布进行预先假设来检验“H0:diff=0”
复制代码
V.手动盘算

  1. *-V.手动计算
  2. **分组回归
  3. xtset stkcd year
  4. reghdfe y x $z if state==1, absorb(year indid firm) vce(cluster firm)
  5. est store SOE
  6. reghdfe  y x $z if state==0, absorb(year indid firm) vce(cluster firm)
  7. est store NonSOE
  8. **计算Z统计量
  9. Z = (β1 = β2)/(Var(β1)+Var(β2))1/2  // (这里的1/2是指对(Var(β1)+Var(β2))开根号的意思!!!)
  10. //其中β1 和 β2 是系数大小, Var(β1) 和Var(β2) 分别是两者的方差,更准确的写法是标准差(回归后系数的标准误)的平方,平方不好打出来,就用方差。
  11. // 求出Z值后查Z统计量分布表,几个常用的临界值是Z=1.65对应p<0.1,Z=1.96对应p<0.05,Z=2.58对应p<0.01。如果你计算的Z值小于1.65,那连最宽松的p<0.1都不满足,无法说明两个系数具有显著差异。
  12. //如果计算的z是负值,根据 P(-x)=1=p(x) 来
复制代码
来源:https://blog.csdn.net/Claire_chen_jia/article/details/125963657
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则