目录
一、写在前面
①将控制变量分为固定变量与可变变量
②固定变量即每次迭代都存在的变量。
因为根据文献需要,通常有部分控制变量不可或缺;
以下图为例,贝塔、账面市值比 机构持股比例合计为固定变量,即固定变量每次必参与迭代
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窗口显示符合条件的控制变量组合
四、更进一步-寻找中介效应的控制变量
参考《资产质量影响企业权益资本成本吗? - 中国知网》与温忠麟的中介效应的三步检验模型
此处:
股权融资成本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'"
}
}
}
}