Stata实证:一键显著代码免费教程,拯救你的论文

目录 

一、写在前面

二、使用Python生成可变变量组合

三、Stata代码                                                                              

四、更进一步-寻找中介效应的控制变量


一、写在前面

①将控制变量分为固定变量可变变量

②固定变量即每次迭代都存在的变量。

因为根据文献需要,通常有部分控制变量不可或缺;                                                        

以下图为例,贝塔、账面市值比 机构持股比例合计为固定变量,即固定变量每次必参与迭代

Beta_MC 账面市值比B 机构持股比例合计 托宾Q值C
Beta_MC 账面市值比B 机构持股比例合计 财务杠杆
Beta_MC 账面市值比B 机构持股比例合计 董事会规模
Beta_MC 账面市值比B 机构持股比例合计 ROA_A 前十大股东持股比例
Beta_MC 账面市值比B 机构持股比例合计 托宾Q值C 董事会规模
Beta_MC 账面市值比B 机构持股比例合计 财务杠杆 董事会规模
Beta_MC 账面市值比B 机构持股比例合计 董事会规模 公司规模
Beta_MC 账面市值比B 机构持股比例合计 ROA_A 前十大股东持股比例 财务杠杆
Beta_MC 账面市值比B 机构持股比例合计 ROA_A 前十大股东持股比例 董事会规模
Beta_MC 账面市值比B 机构持股比例合计 前十大股东持股比例 董事会规模 公司规模

③对可变变量进行随机组合。

n个可变变量就有2**n个组合,此时若将部分变量有依据的放至固定变量,也可以大大减少组合数

假如可变控制变量为"ROA_A","前十大股东持股比例","托宾Q值C","年换手率流通股数_log" 
则可变变量组合有16种情况
//one
ROA_A 
前十大股东持股比例 
托宾Q值C 
年换手率流通股数_log 
//two
ROA_A,前十大股东持股比例 
ROA_A,托宾Q值C 
ROA_A,年换手率流通股数_log 
前十大股东持股比例,托宾Q值C 
前十大股东持股比例,年换手率流通股数_log 
托宾Q值C,年换手率流通股数_log
//three 
ROA_A,前十大股东持股比例,托宾Q值C 
ROA_A,前十大股东持股比例,年换手率流通股数_log 
ROA_A,托宾Q值C,年换手率流通股数_log 
前十大股东持股比例,托宾Q值C,年换手率流通股数_log
//four
ROA_A,前十大股东持股比例,托宾Q值C,年换手率流通股数_log 

二、使用Python生成可变变量组合

将print(result.replace(",/"," "))打印出来的内容复制到后面Stata代码里

import itertools
from itertools import combinations

s = ["Beta_MC","账面市值比B","ROA_A","前十大股东持股比例","托宾Q值C","年换手率流通股数_log","财务杠杆","董事会规模","公司规模","机构持股比例合计","ANALYST"]

result = ""
for myLen in range(len(s)):
    for eachTuple in list(combinations(s, myLen+1)):
        for each in eachTuple:
            result += each
            result += ","
        result += "/"

print(result.replace(",/"," "))

三、Stata代码                                                                              

此处以双向固定效应模型为例,被解释变量为股权融资成本GLS、核心解释变量为xApply

                        xtreg r_gls_1 xApply `varFixed' `eachVarList' i.year,fe r             

Stata代码如下:

varCombination粘贴Python代码生成的可变列表组合

②qui后按所需模型命令输入即可

③各显著水准下T值为:1.65 10%、1.96 5%、2.76 1%

clear																																										
import excel "C:\Users\zsllsz\Desktop\实证\汇总-合并表格\panel.xlsx", sheet("Sheet1") firstrow
xtset stkcd year
winsor2 机构持股比例合计 ANALYST r_gls_1  Beta_MC Beta_TMV ROAResset ROA_A ROA_B ROEResset ROE_A ROE_B SYN分市场总市值平均法 SYN分市场流通市值平均法 SYN分市场等权平均法 SYN综合市场总市值平均法 SYN综合市场流通市值平均法 SYN综合市场等权平均法   r_oj_003 r_oj_005 r_oj_007 r_peg  公司规模 分市场年Beta值 前十大股东持股比例 年换手率流通股数_log 托宾Q值A 托宾Q值B 托宾Q值C 托宾Q值D 投资者情绪指数标准化剔除宏观经济因素 独立董事占比 第一大股东持股比率 综合市场年Beta值  董事会规模 董事长与总经理兼任情况 财务杠杆 账面市值比A 账面市值比B , replace cuts(1 99) trim


local varFixed "Beta_MC 账面市值比B 机构持股比例合计 "																									
local varCombination "此处粘贴Python代码生成的可变列表组合"

foreach eachVarList of local varCombination{
	local eachVarList:subinstr local eachVarList "," " ",all
	qui xtreg r_gls_1 xApply `varFixed' `eachVarList' i.year,fe r
	
	if(_se[xApply] != 0 & abs(_b[xApply]/_se[xApply]) > 1.96 ){
							
			display "`varFixed'" "`eachVarList'"
	}				
}																		

  结果:代码运行结束后会在Stata窗口显示符合条件的控制变量组合

      Stata实证:一键显著代码免费教程,拯救你的论文                                                                                                                                              

四、更进一步-寻找中介效应的控制变量

参考《资产质量影响企业权益资本成本吗? - 中国知网》与温忠麟的中介效应的三步检验模型

此处:

股权融资成本GLS为被解释变量

xApply为核心解释变量

SYN分市场总市值平均法为中介变量

代码如下(运行后同样会把符合条件的控制变量打印出来):

clear																																										
import excel "C:\Users\zsllsz\Desktop\实证\汇总-合并表格\panel.xlsx", sheet("Sheet1") firstrow
xtset stkcd year
winsor2 机构持股比例合计 ANALYST r_gls_1  Beta_MC Beta_TMV ROAResset ROA_A ROA_B ROEResset ROE_A ROE_B SYN分市场总市值平均法 SYN分市场流通市值平均法 SYN分市场等权平均法 SYN综合市场总市值平均法 SYN综合市场流通市值平均法 SYN综合市场等权平均法   r_oj_003 r_oj_005 r_oj_007 r_peg  公司规模 分市场年Beta值 前十大股东持股比例 年换手率流通股数_log 托宾Q值A 托宾Q值B 托宾Q值C 托宾Q值D 投资者情绪指数标准化剔除宏观经济因素 独立董事占比 第一大股东持股比率 综合市场年Beta值  董事会规模 董事长与总经理兼任情况 财务杠杆 账面市值比A 账面市值比B , replace cuts(1 99) trim


local varFixed "Beta_MC 账面市值比B 机构持股比例合计 "																									
local varCombination "此处粘贴Python代码生成的可变列表组合"

foreach eachVarList of local varCombination{
	local eachVarList:subinstr local eachVarList "," " ",all

	qui xtreg r_gls_1 xApply `varFixed' `eachVarList' i.year,fe r
	
	if(_se[xApply] != 0 & abs(_b[xApply]/_se[xApply]) > 1.96 ){
		qui xtreg SYN分市场总市值平均法 xApply `varFixed' `eachVarList' i.year,fe r
		if(_se[xApply] != 0 & abs(_b[xApply]/_se[xApply]) > 1.96){
			qui xtreg r_gls_1 SYN分市场总市值平均法 xApply  `varFixed' `eachVarList' i.year,fe r
			if(_se[xApply] != 0 & abs(_b[xApply]/_se[xApply]) > 1.96 & abs(_b[SYN分市场总市值平均法]/_se[SYN分市场总市值平均法]) > 1.96){
				display in r "`varFixed'" "`eachVarList'"
			}
		}
	}        	                                                                                                                                          			
}

                                      

上一篇:秃鸡队--【团队名称-冲刺日志(第七天)】


下一篇:100天实现自我提升的45个技巧