599 0

[编程问题求助] 平行趋势检验与psm倾向性得分匹配代码 [推广有奖]

  • 0关注
  • 0粉丝

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
24 小时
注册时间
2023-9-19
最后登录
2025-12-11

楼主
我想学会计量 发表于 2023-11-20 15:12:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
这是我在世界经济上找的一篇论文代码(stata小白),我大概知道他是在进行平行趋势检验和psm倾向性得分匹配,但里面的内容我看不懂,求路过的能帮帮孩子吗,帮助孩子度过迷茫期,万分感谢!!
*---正文图2
    use "E:\数据与程序\正文图2&附录附表5.dta",replace
        global event b4 b3 b2 a0 a1 a2 a3
        *正文图2 Panel A
        reghdfe lnGreA $event $Controls,absorb(year ID) cluster(ID)
        est store s1
        {
    *
        preserve
    forvalues i=2/4{
         gen b_`i' = _b[b`i']
         gen se_b_`i' = _se[b`i']
                 gen b_`i'LB = b_`i' - t * se_b_`i'
                 gen b_`i'UB = b_`i' + t * se_b_`i'
    }
        *
    forvalues i=0/3 {
         gen a_`i' = _b[a`i']
         gen se_a_`i' = _se[a`i']
                 gen a_`i'LB = a_`i' - t * se_a_`i'
                 gen a_`i'UB = a_`i' + t * se_a_`i'
    }
        *
        gen b=.
        gen LB=.
        gen UB=.
     *
    forvalues i=2/4 {
        replace b = b_`i' if b`i' == 1
    }
        *
        replace b=0 if b1 == 1
    forvalues i=0/3 {
        replace b = a_`i'  if a`i' == 1
    }
        *
        replace LB=0 if b1 == 1
    forvalues i=2/4 {
        replace LB = b_`i'LB if b`i' == 1
    }
        *
    forvalues i=0/3 {
        replace LB = a_`i'LB if a`i' == 1
    }
        *
        replace UB=0 if b1 == 1
    forvalues i=2/4 {
        replace UB = b_`i'UB if b`i' == 1
    }
        *
    forvalues i=0/3 {
        replace UB = a_`i'UB if a`i' == 1
    }
        *
        gen distance = .
        replace distance = -4 if b4 == 1
        replace distance = -3 if b3 == 1
        replace distance = -2 if b2 == 1
        replace distance = -1 if b1 == 1
        replace distance = 0 if a0 == 1
        replace distance = 1 if a1 == 1
        replace distance = 2 if a2 == 1
        replace distance = 3 if a3 == 1
         *
        keep distance b LB UB
    duplicates drop distance,force
    sort distance
        *
        twoway ///
        connected b distance,lwidth(*0.5) || ///
    (rcap LB UB distance,lcolor(navy) lp(dash) lwidth(*0.5)),   ///
        xline(-1,lcolor(black) lwidth(*0.5)) ///
        yline(0,lcolor(black)  lwidth(*0.5)) ///
    xscale(range (-4  3)) xlabel(-4 (1) 3,angle(0)) ///
    yscale(range (-0.15  0.3)) ylabel(-0.15 (0.15) 0.3,angle(0)) ///
        xlabel(-4 "-4" -3 "-3" -2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3") ///
        legend(cols(2) pos(6) order(1 2) lab(1 "回归系数") lab(2 "置信区间(90%)")) ///
    graphr(c(white)) subtitle(Panel A. 绿色专利申请数量) ///
        scheme(s2mono)               
        restore
        }
       
        *正文图2Panel B
        reghdfe GreA $event $Controls,absorb(year ID) cluster(ID)
        est store s2
        {
    *
        preserve
        gen t = invttail(e(df_r),0.05)
    forvalues i=2/4{
         gen b_`i' = _b[b`i']
         gen se_b_`i' = _se[b`i']
                 gen b_`i'LB = b_`i' - t * se_b_`i'
                 gen b_`i'UB = b_`i' + t * se_b_`i'
    }
        *
    forvalues i=0/3 {
         gen a_`i' = _b[a`i']
         gen se_a_`i' = _se[a`i']
                 gen a_`i'LB = a_`i' - t * se_a_`i'
                 gen a_`i'UB = a_`i' + t * se_a_`i'
    }
        *
        gen b=.
        gen LB=.
        gen UB=.
    *
    forvalues i=2/4 {
        replace b = b_`i' if b`i' == 1
    }
        *
        replace b=0 if b1 == 1
    forvalues i=0/3 {
        replace b = a_`i'  if a`i' == 1
    }
        *
        replace LB=0 if b1 == 1
    forvalues i=2/4 {
        replace LB = b_`i'LB if b`i' == 1
    }
        *
    forvalues i=0/3 {
        replace LB = a_`i'LB if a`i' == 1
    }
        *
        replace UB=0 if b1 == 1
    forvalues i=2/4 {
        replace UB = b_`i'UB if b`i' == 1
    }
        *
    forvalues i=0/3 {
        replace UB = a_`i'UB if a`i' == 1
    }
        *
        gen distance = .
        replace distance = -4 if b4 == 1
        replace distance = -3 if b3 == 1
        replace distance = -2 if b2 == 1
        replace distance = -1 if b1 == 1
        replace distance = 0 if a0 == 1
        replace distance = 1 if a1 == 1
        replace distance = 2 if a2 == 1
        replace distance = 3 if a3 == 1
        *
        keep distance b LB UB
    duplicates drop distance,force
    sort distance
        *
        twoway ///
        connected b distance,lwidth(*0.5) || ///
    (rcap LB UB distance,lcolor(navy) lp(dash) lwidth(*0.5)),   ///
        xline(-1,lcolor(black) lwidth(*0.5)) ///
        yline(0,lcolor(black)  lwidth(*0.5)) ///
    xscale(range (-4  3)) xlabel(-4 (1) 3,angle(0)) ///
    yscale(range (-0.04  0.08)) ylabel(-0.04 (0.04) 0.08,angle(0)) ///
        xlabel(-4 "-4" -3 "-3" -2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3") ///
        legend(cols(2) pos(6) order(1 2) lab(1 "回归系数") lab(2 "置信区间(90%)")) ///
    graphr(c(white)) subtitle(Panel B. 绿色专利申请占比) ///
        scheme(s2mono)               
        restore
        }

    *PSM
        global x Size Lev Growth Wage Roa SubRate Top1 Age Dual Soe
    psmatch2 treat $x,logit neighbor(1) common ties
    pstest $x,both       
        *正文图2 Panel C
        reghdfe lnGreA $event $Controls [pw = _weight],absorb(year ID) cluster(ID)
        est store s1
        {
    *
        preserve
    forvalues i=2/4{
         gen b_`i' = _b[b`i']
         gen se_b_`i' = _se[b`i']
                 gen b_`i'LB = b_`i' - t * se_b_`i'
                 gen b_`i'UB = b_`i' + t * se_b_`i'
    }
        *
    forvalues i=0/3 {
         gen a_`i' = _b[a`i']
         gen se_a_`i' = _se[a`i']
                 gen a_`i'LB = a_`i' - t * se_a_`i'
                 gen a_`i'UB = a_`i' + t * se_a_`i'
    }
        *
        gen b=.
        gen LB=.
        gen UB=.
     *
    forvalues i=2/4 {
        replace b = b_`i' if b`i' == 1
    }
        *
        replace b=0 if b1 == 1
    forvalues i=0/3 {
        replace b = a_`i'  if a`i' == 1
    }
        *
        replace LB=0 if b1 == 1
    forvalues i=2/4 {
        replace LB = b_`i'LB if b`i' == 1
    }
        *
    forvalues i=0/3 {
        replace LB = a_`i'LB if a`i' == 1
    }
        *
        replace UB=0 if b1 == 1
    forvalues i=2/4 {
        replace UB = b_`i'UB if b`i' == 1
    }
        *
    forvalues i=0/3 {
        replace UB = a_`i'UB if a`i' == 1
    }
        *
        gen distance = .
        replace distance = -4 if b4 == 1
        replace distance = -3 if b3 == 1
        replace distance = -2 if b2 == 1
        replace distance = -1 if b1 == 1
        replace distance = 0 if a0 == 1
        replace distance = 1 if a1 == 1
        replace distance = 2 if a2 == 1
        replace distance = 3 if a3 == 1
         *
        keep distance b LB UB
    duplicates drop distance,force
    sort distance
        *
        twoway ///
        connected b distance,lwidth(*0.5) || ///
    (rcap LB UB distance,lcolor(navy) lp(dash) lwidth(*0.5)),   ///
        xline(-1,lcolor(black) lwidth(*0.5)) ///
        yline(0,lcolor(black)  lwidth(*0.5)) ///
    xscale(range (-4  3)) xlabel(-4 (1) 3,angle(0)) ///
    yscale(range (-0.15  0.3)) ylabel(-0.15 (0.15) 0.3,angle(0)) ///
        xlabel(-4 "-4" -3 "-3" -2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3") ///
        legend(cols(2) pos(6) order(1 2) lab(1 "回归系数") lab(2 "置信区间(90%)")) ///
    graphr(c(white)) subtitle(Panel C. 绿色专利申请数量(配对后)) ///
        scheme(s2mono)               
        restore
        }
       
        *正文图2 Panel D       
        reghdfe GreA $event $Controls [pw = _weight],absorb(year ID) cluster(ID)
        est store s2
        {
    *
        preserve
        gen t = invttail(e(df_r),0.05)
    forvalues i=2/4{
         gen b_`i' = _b[b`i']
         gen se_b_`i' = _se[b`i']
                 gen b_`i'LB = b_`i' - t * se_b_`i'
                 gen b_`i'UB = b_`i' + t * se_b_`i'
    }
        *
    forvalues i=0/3 {
         gen a_`i' = _b[a`i']
         gen se_a_`i' = _se[a`i']
                 gen a_`i'LB = a_`i' - t * se_a_`i'
                 gen a_`i'UB = a_`i' + t * se_a_`i'
    }
        *
        gen b=.
        gen LB=.
        gen UB=.
    *
    forvalues i=2/4 {
        replace b = b_`i' if b`i' == 1
    }
        *
        replace b=0 if b1 == 1
    forvalues i=0/3 {
        replace b = a_`i'  if a`i' == 1
    }
        *
        replace LB=0 if b1 == 1
    forvalues i=2/4 {
        replace LB = b_`i'LB if b`i' == 1
    }
        *
    forvalues i=0/3 {
        replace LB = a_`i'LB if a`i' == 1
    }
        *
        replace UB=0 if b1 == 1
    forvalues i=2/4 {
        replace UB = b_`i'UB if b`i' == 1
    }
        *
    forvalues i=0/3 {
        replace UB = a_`i'UB if a`i' == 1
    }
        *
        gen distance = .
        replace distance = -4 if b4 == 1
        replace distance = -3 if b3 == 1
        replace distance = -2 if b2 == 1
        replace distance = -1 if b1 == 1
        replace distance = 0 if a0 == 1
        replace distance = 1 if a1 == 1
        replace distance = 2 if a2 == 1
        replace distance = 3 if a3 == 1
        *
        keep distance b LB UB
    duplicates drop distance,force
    sort distance
        *
        twoway ///
        connected b distance,lwidth(*0.5) || ///
    (rcap LB UB distance,lcolor(navy) lp(dash) lwidth(*0.5)),   ///
        xline(-1,lcolor(black) lwidth(*0.5)) ///
        yline(0,lcolor(black)  lwidth(*0.5)) ///
    xscale(range (-4  3)) xlabel(-4 (1) 3,angle(0)) ///
    yscale(range (-0.04  0.08)) ylabel(-0.04 (0.04) 0.08,angle(0)) ///
        xlabel(-4 "-4" -3 "-3" -2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3") ///
        legend(cols(2) pos(6) order(1 2) lab(1 "回归系数") lab(2 "置信区间(90%)")) ///
    graphr(c(white)) subtitle(Panel D. 绿色专利申请占比(配对后)) ///
        scheme(s2mono)       
        restore
        }


二维码

扫码加我 拉你入群

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

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

关键词:PSM 倾向性 duplicates forvalues connected stata代码看不懂

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-8 06:05