drop if lncp1==.
drop if did==.
drop if lnsize==.
drop if debts==.
drop if roa==.
drop if lncap_inten==.
drop if dependent==.
drop if lntop1==.
drop if tobinq==.
drop if age==.
drop if year<2007
winsor2 lncap_inten, cut(1 99) replace

sum

Benchmark regression
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age, cl(city)
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id) cl(city)

reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(year) cl(city)
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)

Parallel trend test 
forvalues i = 14(-1)1{       
	gen pre_`i'=(pd==-`i'& treat==1)
}
gen current =(pd==0&treat==1)
forvalues j = 1(1)4{   
	gen las_`j'=(pd==`j'& treat==1)
}
replace pre_1=0

reghdfe lncp1 pre_14 pre_13 pre_12 pre_11 pre_10 pre_9 pre_8 pre_7 pre_6 pre_5 pre_4 pre_3 pre_2 current las_1 las_2 las_3 las_4 pre_1 lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) vce(cluster city)

coefplot,baselevels omitted keep(pre* current las*) vertical recast(connect) order( pre_14 pre_13 pre_12 pre_11 pre_10 pre_9 pre_8 pre_7 pre_6 pre_5 pre_4 pre_3 pre_2 pre_1 current las_1 las_2 las_3 las_4) yline(0,lp(solid) lc(black)) xline(14,lp(solid)) ytitle("Policy effect") xtitle("Policy timing") xlabel(1 "-14" 2 "-13" 3 "-12" 4 "-11" 5 "-10" 6 "-9" 7 "-8" 8 "-7" 9 "-6" 10 "-5" 11 "-4" 12 "-3" 13 "-2" 14 "-1" 15 "0" 16 "1" 17 "2" 18 "3" 19 "4" ) ciopts(recast(rcap) lc(black) lp(dash) lw(thin)) scale(1.0)

Placebo test
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
est store a1
xtset id year
didplacebo a1, treatvar(did) pbotime(1(1)5) pbounit pbomix(2 3) rep(500)

Goodman Bacon test
bacondecomp lncp1 did,ddetail
xtbalance,range(2007 2023)
bacondecomp lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age, ddetail

PSM-DID
clear

global xlist "lnsize debts roa lncap_inten dependent lntop1 tobinq age"
global regopt "absorb(id year) cluster(city) keepsing"
set seed 0000
gen norvar_1 = rnormal()
sort norvar_1

psmatch2 treat $xlist , outcome(lncp1) logit neighbor(2) ties common ate caliper(0.05)
save csdata.dta, replace

Kernel density map
pstest, both graph saving(balancing_assumption, replace)
graph export "balancing_assumption.emf", replace
psgraph, saving(common_support, replace)
graph export "common_support.emf", replace

psmatch2 treat $xlist , outcome(lncp1) logit neighbor(2) ties common ate caliper(0.05)
pstest $xlist, both
preserve
keep if _weight != .
reghdfe lncp1 treat $xlist, absorb(id year) cluster(city)
estimates store psm_fe
restore
esttab psm_fe using table_psm.rtf, replace star(* 0.1 ** 0.05 *** 0.01)
restore

The kernel density map before matching

twoway (kdensity _pscore if _treated==1, lcolor(black) lwidth(medium)) ///
       (kdensity _pscore if _treated==0, lcolor(red) lpattern(dash) lwidth(medium)), ///
legend(label(1 "Treat") label(2 "Control")) ///
xtitle("Propensity Score") ytitle("Kernel Density") ///
title("Before Matching") name(before,replace)
graph export ps_before.png, replace

Kernel density map after matching

twoway (kdensity _pscore if _treated==1 & _weight!=., lcolor(black) lwidth(medium)) ///
       (kdensity _pscore if _treated==0 & _weight!=., lcolor(red) lpattern(dash) lwidth(medium)), ///
legend(label(1 "Treat") label(2 "Control")) ///
xtitle("Propensity Score") ytitle("Kernel Density") ///
title("After Matching") name(after,replace)
graph export ps_after.png, replace

	   
Baseline Regression and Cross-Sectional PSM-DID Results
 
*- PSM-DID1（Samples with Non-Missing Weights）
reghdfe lncp1 did  $xlist if _weight != ., $regopt
*- PSM-DID2（Samples Satisfying the Common Support Assumption）
reghdfe lncp1 did  $xlist if _support == 1, $regopt
*- PSM-DID3（Use frequency-weighted regression）
gen weight = _weight * 2
replace weight = 1 if treat == 1 & _weight != .
reghdfe lncp1 did  $xlist [fweight = weight], $regopt

IV test
xtset id year
gen iv=iv1*l.did
xtivreg2 lncp1 lnsize debts roa lncap_inten dependent lntop1 tobinq age (did = iv),  fe cluster(id) first

gen iv22=iv2*l.did
xtivreg2 lncp1 lnsize debts roa lncap_inten dependent lntop1 tobinq age (did = iv22),  fe cluster(id) first	

Table 6 The explained variable replaces the test result
winsor2 lncp1 aif2  lnsize debts roa lncap_inten dependent lntop1 tobinq age,cut(1 99) replace
reghdfe lncp1 aif2  lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
gen aisi44=aisi4/10000
reghdfe lncp1 aisi44  lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
winsor2 al,cut(1 99) replace
reghdfe lncp1 al lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
winsor2 co2,cut(5 95) replace
gen co22=co2/10000
reghdfe co22 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe lncp2 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year ) cl(city)

Table 7 Excluded confounding policy interference test results
reghdfe lncp1 did did2 lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe lncp1 did did2 did3 lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year ) cl(city)
reghdfe lncp1 did did2 did3 did4 lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year ) cl(city)
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year ) cl(city)
reghdfe lncp1 did did2 did3 did4 did5 lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year ) cl(city)
reghdfe lncp1 did did2 did3 did4 did5 did6 lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year ) cl(city)
reghdfe lncp1 did did2 did3 did4 did5 did6 did7 lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year ) cl(city)

Table 8 Test results of adjusting sample time and excluding abnormal samples
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age if id3==.,a(id year) cl(city)
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(id)
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year industrycode) cl(city)
drop if year<2010
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)

Table 9 Mediating effect test
reghdfe licenvrpat did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe licenvrinvpat did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe licenvrutypat did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)

Table 10 Mediating effect
reghdfe recs did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe gtfee1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe gtfee2 did lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)

Table 11 Test results of moderating mechanism
gen tj1=ssc*did
gen tj2=cur*did
gen tj3=digit*did
gen tj4=lnhep*did
gen tj5=erp*did
reghdfe lncp1 did tj1 ssc lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe lncp1 did tj2 cur lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe lncp1 did tj3 digit lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe lncp1 did tj4 lnhep lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)
reghdfe lncp1 did tj5 erp lnsize debts roa lncap_inten dependent lntop1 tobinq age,a(id year) cl(city)

Table 12 Heterogeneity Analysis: State-Owned Enterprises
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)
reghdfe lncp1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)
reghdfe gtfee1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)
reghdfe gtfee1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)
reghdfe licenvrinvpat did lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)
reghdfe licenvrinvpat did  lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)


Table 13 Advantages of state-owned enterprises from the perspective of resource reallocation
reghdfe sa did  lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)
reghdfe sa did  lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)
gen rd1=rd/10000000
reghdfe rd1 did  lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)
reghdfe rd1 did  lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)
gen subsidies1=subsidies/10000000
reghdfe subsidies1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)
reghdfe subsidies1 did lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)

Table 14 The heterogeneity test of firm ownership with respect to the moderating variables

gen tj1=ssc*did
gen tj2=cur*did
gen tj3=digit*did
gen tj4=lnhep*did
gen tj5=erp*did
reghdfe lncp1 did tj5 erp lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)
reghdfe lncp1 did tj5 erp lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)
reghdfe lncp1 did tj2 cur lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)
reghdfe lncp1 did tj2 cur lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)
reghdfe lncp1 did tj1 ssc lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)
reghdfe lncp1 did tj1 ssc lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)

reghdfe lncp1 did tj3 digit lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==0,a(id year) cl(city)
reghdfe lncp1 did tj3 digit lnsize debts roa lncap_inten dependent lntop1 tobinq age if yz5==1,a(id year) cl(city)
