楼主: chp981003
12258 54

[stata资源分享] stata实现非线性(U型、倒U型)包含固定效应的bootstrap、sobel中介机制检验 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

7%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
25.9641
学术水平
3 点
热心指数
3 点
信用等级
3 点
经验
355 点
帖子
17
精华
0
在线时间
251 小时
注册时间
2022-8-20
最后登录
2025-10-27

楼主
chp981003 发表于 2024-5-30 15:15:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
根据林伟鹏、冯保艺两位老师发表于南开管理评论的非线性中介效应检验原理,以及up主@拿铁一定要加冰提出的带固定效应Sobel与Bootstrap代码改进方法。我对sobel的代码进行改进,实现了两位老师原文中所提到的检验方法。
以文中模型二为例,即X与M之间是线性关系而M与Y之间是非线性关系,通过构建方程(15)与方程(16)来表述,进一步检验参数IND来确认间接效应是否存在。IND是方程(1)中x的系数B1,和方程(2)中M’的系数B5的乘积生成,表示的是x通过M对Y产生曲线间接效应的强弱。因此,IND的显著性与强弱可以作为中介效应的检验。同样,为了更加准确地估计间接效应的显著性水平,建议使用 Bootstrap 方法得出参数IND 的置信区间。
M=B0+B1x (1); Y=B2+B3X+B4M+B5M*M (2); IND=B1*B5 (3)
具体操作方法如下:
1.将我修改后的do文档运行
2. sgmediation3 被解释变量, mv(中介)  mv2(中介变量的平方项) iv(解释变量) iv2(解释变量平方项) cv(控制变量)
结果默认输出控制了时间与行业固定效应的reghdfe,我在do文档中给时间与行业固定效应的命名为ind、year,具体如何按照自己的回归变量修改推荐参照@拿铁一定要加冰老师的原视频。也可以在do文档第29、36、45行自行按照需求修改。

[1]林伟鹏,冯保艺.管理学领域的曲线效应及统计检验方法[J].南开管理评论,2022,25(01):155-166.
[2]@拿铁一定要加冰老师:【「Stata」中介效应检验 - 带固定效应Sobel与Bootstrap】 https://www.bilibili.com/video/BV1Gs4y1M7Y8/?share_source=copy_web&vd_source=1f14f70e709a6c27cffb20b2ac13175f
  1. *- New
  2. *! version 3 -- 5/16/23 -- Updated by Shutter Zor
  3. *- Original
  4. *! version 1.11 -- 2/14/12 -- implement prefix option
  5. *! version 1.9 -- 10/28/11 -- (improve formatting)
  6. *! version 1.8 -- 10/19/11 -- (bootstrap option removed)
  7. *! version 1.7 -- 10/14/11 -- (ratio of total to direct)
  8. *! version 1.6 -- 9/27/11 -- (bug fix in sgboot.ado)
  9. *! version 1.5 -- 3/2/11
  10. *! version 1.4 -- 4/29/10 --  
  11. *! version 1.3 -- 10/3/06 -- (bug fix)
  12. *! version 1.2 -- 9/8/06 -- (bug fix)
  13. *! version 1.1.1 -- 5/17/06 --
  14. *! verion 1.0 -- 2/28/05 -- pbe
  15. cap program drop sgmediation3
  16. program define sgmediation3, rclass
  17. /* sobel-goodman mediation tests */
  18. version 9.0
  19. syntax varlist(max=1) [if] [in], iv(varlist numeric max=1) ///
  20.    mv(varlist numeric max=1) mv2(varlist numeric max=1) iv2(varlist numeric max=1) [ cv(varlist numeric) quietly ///
  21.    level(integer 95) prefix(string)]
  22. marksample touse
  23. markout `touse' `varlist' `mv' `mv2' `iv' `iv2' `cv'
  24. tempname coef emat

  25. display
  26. `quietly' {
  27. display as text "Model with dv regressed on iv2 (path c)"
  28. `prefix' reghdfe `varlist'  `iv2' `iv'  `cv' if `touse', absorb(year ind)
  29. *`prefix' xtreg `varlist' `iv' `iv2' `cv' i.year i.ind if `touse', fe
  30. local ccoef=_b[`iv2']
  31. local cse =_se[`iv2']

  32. display
  33. display "Model with mediator regressed on iv (path a)"
  34. `prefix' reghdfe `mv' `iv' `cv' if `touse', absorb(year ind)
  35. *`prefix' xtreg `mv' `iv' `cv' i.year i.ind if `touse', fe

  36. local acoef=_b[`iv']
  37. local ase  =_se[`iv']
  38. local avar =_se[`iv']^2

  39. display
  40. display "Model with dv regressed on mediator and iv (paths b and c')"
  41. `prefix' reghdfe `varlist' `mv2' `iv' `cv' `mv' if `touse', absorb(year ind)
  42. *`prefix' xtreg `varlist' `mv2' `iv' `cv' `mv' i.year i.ind if `touse', fe
  43. }

  44. local bcoef=_b[`mv2']
  45. local bse  =_se[`mv2']
  46. local bvar =_se[`mv2']^2

  47. local sobel =(`acoef'*`bcoef')
  48. local serr=sqrt((`bcoef')^2*`avar' + (`acoef')^2*`bvar')
  49. local stest=`sobel'/`serr'
  50. local g1err=sqrt((`bcoef')^2*`avar' + (`acoef')^2*`bvar' + `avar'*`bvar')
  51. local good1=`sobel'/`g1err'
  52. local g2err=sqrt((`bcoef')^2*`avar' + (`acoef')^2*`bvar' - `avar'*`bvar')
  53. local good2=`sobel'/`g2err'
  54. local direff = (`ccoef'-(`acoef'*`bcoef'))
  55. local dse    = _se[`iv']
  56. local toteff = `sobel'/`ccoef'
  57. local ratio = `sobel'/`direff'
  58. local t2d = ((`acoef'*`bcoef')+(`ccoef'-(`acoef'*`bcoef')))/`direff'

  59. display
  60. display as txt "Sobel-Goodman Mediation Tests"
  61. display
  62. display as txt "                     Coef         Std Err     Z           P>|Z|"
  63. display as txt "Sobel               " as res `sobel' _skip(4) `serr'  %8.4g ///
  64. `stest', _skip(5) 2*(1-norm(abs(`stest')))
  65. display as txt "Goodman-1 (Aroian)  " as res `sobel' _skip(4) `g1err' %8.4g ///
  66. `good1', _skip(5) 2*(1-norm(abs(`good1')))
  67. display as txt "Goodman-2           " as res `sobel' _skip(4) `g2err' %8.4g ///
  68. `good2', _skip(5) 2*(1-norm(abs(`good2')))
  69. display
  70. display as txt _col(21) "Coef" _col(31) "Std Err" _col(42) "Z" _col(53) "P>|Z|"
  71. display as txt "a coefficient   = " as res %8.0g `acoef'  "  " %8.0g `ase' "  " %8.0g `acoef'/`ase'  _col(50) %8.0g 2*(1-norm(abs(`acoef'/`ase')))
  72. display as txt "b coefficient   = " as res %8.0g `bcoef'  "  " %8.0g `bse' "  " %8.0g `bcoef'/`bse'  _col(50) %8.0g 2*(1-norm(abs(`bcoef'/`bse')))
  73. display as txt "Indirect effect = " as res %8.0g `sobel'  "  " %8.0g `serr' "  " %8.0g `stest'       _col(50) %8.0g 2*(1-norm(abs(`stest')))
  74. display as txt "  Direct effect = " as res %8.0g `direff' "  " %8.0g `dse' "  " %8.0g `direff'/`dse' _col(50) %8.0g 2*(1-norm(abs(`direff'/`dse')))
  75. display as txt "   Total effect = " as res %8.0g `ccoef'  "  " %8.0g `cse' "  " %8.0g `ccoef'/`cse'  _col(50) %8.0g 2*(1-norm(abs(`ccoef'/`cse')))
  76. display
  77. display as txt "Proportion of total effect that is mediated: ", as res `toteff'
  78. display as txt "Ratio of indirect to direct effect:          ", as res `ratio'
  79. display as txt "Ratio of total to direct effect:             ", as res `t2d'

  80. return scalar ind_eff = `sobel'
  81. return scalar dir_eff = `direff'
  82. return scalar tot_eff = `ccoef'
  83. return scalar a_coef  = `acoef'
  84. return scalar b_coef  = `bcoef'
  85. return scalar ind2tot = `toteff'
  86. return scalar ind2dir = `ratio'
  87. return scalar tot2dir = `t2d'

  88. end
复制代码
二维码

扫码加我 拉你入群

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

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

关键词:Bootstrap Bootstra boots Stata sobel

微信图片_20240530150133.png (215.78 KB)

微信图片_20240530150133.png

更改sgmedaion代码.do
下载链接: https://bbs.pinggu.org/a-4157306.html

4.15 KB

已有 3 人评分经验 学术水平 热心指数 信用等级 收起 理由
np84 + 100 精彩帖子
wwqqer + 100 精彩帖子
Sunknownay + 3 + 3 + 3 鼓励积极发帖讨论

总评分: 经验 + 200  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

沙发
chp981003 发表于 2024-5-30 15:22:38
第一次涉及代码修改相关问题,自己对照回归方程看了一遍觉得没问题就分享了出来。若有大佬看出问题还请批评指正

藤椅
chenyimmmming 发表于 2024-5-30 16:03:41
谢谢 解决了困扰我已久的问题

板凳
kkwei 发表于 2024-5-31 08:31:52
什么奇葩的思维才会想出来这样子的模型出来,都是文献看出来的学派

报纸
tianwk 发表于 2024-5-31 14:55:29
thanks for sharing

地板
happysteps 发表于 2024-6-1 02:12:29
谢谢分享!

7
babylaugh 发表于 2024-6-1 08:19:42
点赞分享

8
yangjie7759 在职认证  发表于 2024-6-1 09:40:54
thanks for sharing

9
chenjunxian5380 发表于 2024-6-2 17:41:59
刚看到大佬的帖子回复,十分感谢答主的分享!不过我想借此机会问问,倒U性关系做因果机制的时候,直接借鉴江艇的做法采用2步法,即在基础回归的基础上,加上机制变量M与核心解释变量X的一次项和平方项的进行OLS回归?

10
chenjunxian5380 发表于 2024-6-2 17:47:11
十分感谢楼主的分享,不知道上一条回复审核过了没?如果不用中介效应机制的话,用江艇的两步法可行吗?第一步是X、X的平方项与Y的回归,第二步是M与X、X的平方项回归

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 15:58