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

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

目录 

一、写在前面

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

三、Stata代码                                                                              

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


一、写在前面

!!!!!!寻找让核心变量显著的控制变量组合!!!!!!!!!

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

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

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

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

Beta_MC 账面市值比B 机构持股比例合计 托宾Q值CBeta_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-1个组合,此时若将部分变量有依据的放至固定变量,也可以大大减少组合数

假如可变控制变量为"ROA_A","前十大股东持股比例","托宾Q值C","年换手率流通股数_log" 则可变变量组合有16种情况//oneROA_A 前十大股东持股比例 托宾Q值C 年换手率流通股数_log //twoROA_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//fourROA_A,前十大股东持股比例,托宾Q值C,年换手率流通股数_log 

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

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

import itertoolsfrom itertools import combinationss = ["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代码                                                                              

Stata代码需要根据自己的模型来调整呀,被解释变量和解释变量得换成自己的,而且可能并不是使用双向固定效应模型,大家需要结合自己的实际情况修改一下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%

④if(_se[xApply] != 0 & abs(_b[xApply]/_se[xApply]) > 1.96 ) 记得修改!

clearimport excel "C:\Users\zsllsz\Desktop\实证\汇总-合并表格\panel.xlsx", sheet("Sheet1") firstrowxtset stkcd yearwinsor2 机构持股比例合计 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) trimlocal varFixed "Beta_MC 账面市值比B 机构持股比例合计 "local varCombination "此处粘贴Python代码生成的可变列表组合"foreach eachVarList of local varCombination{local eachVarList:subinstr local eachVarList "," " ",allqui xtreg r_gls_1 xApply `varFixed' `eachVarList' i.year,fe rif(_se[xApply] != 0 & abs(_b[xApply]/_se[xApply]) > 1.96 ){display "`varFixed'" "`eachVarList'"}}

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

                                                                                                                                                    

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

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

此处:

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

xApply为核心解释变量

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

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

clearimport excel "C:\Users\zsllsz\Desktop\实证\汇总-合并表格\panel.xlsx", sheet("Sheet1") firstrowxtset stkcd yearwinsor2 机构持股比例合计 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) trimlocal varFixed "Beta_MC 账面市值比B 机构持股比例合计 "local varCombination "此处粘贴Python代码生成的可变列表组合"foreach eachVarList of local varCombination{local eachVarList:subinstr local eachVarList "," " ",allqui xtreg r_gls_1 xApply `varFixed' `eachVarList' i.year,fe rif(_se[xApply] != 0 & abs(_b[xApply]/_se[xApply]) > 1.96 ){qui xtreg SYN分市场总市值平均法 xApply `varFixed' `eachVarList' i.year,fe rif(_se[xApply] != 0 & abs(_b[xApply]/_se[xApply]) > 1.96){qui xtreg r_gls_1 SYN分市场总市值平均法 xApply  `varFixed' `eachVarList' i.year,fe rif(_se[xApply] != 0 & abs(_b[xApply]/_se[xApply]) > 1.96 & abs(_b[SYN分市场总市值平均法]/_se[SYN分市场总市值平均法]) > 1.96){display in r "`varFixed'" "`eachVarList'"}}}      }