1.数据处理

连续变量:缩尾处理(1%,99%)  from scipy.stats.mstats import winsorize

win_ESG = winsorize(ESG, limits=[0.01, 0.01]) 虚拟变量:如处理年份2012-2020 nominal_year = pd.get_dummies(year)

nominal_year.drop(columns=[2020], axis=1, inplace=True)

nominal_year.columns = ['2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019'] 描述性统计 # 打乱顺序

shuffle_data = data.sample(frac=1)

print(shuffle_data.describe()) 相关性分析 # 皮尔逊相关性分析

data_corr = data.corr(method='pearson')

print(data_corr)

# 显著性检验

for i in range(0, len(data)):

for j in range(0, i + 1):

print('{}和{}的pearson系数和p值为:{}'.format(data.columns[i], data.columns[j], scipy.stats.pearsonr(data.iloc[:, i], data.iloc[:, j])))

j += 1

i += 1

2.多元回归分析

定义OLS模型 import statsmodels.formula.api as sm

# 因变量 ~ 自变量 + 控制变量

formulation = 'ESG_R ~ INS+Size+Age+Lev+Growth+ROA+PE+Radio+Balance+DR+MKTB+SGROW'

# 控制年份

for i in range(len(list(nominal_year.columns))):

formulation += '+Q("{}")'.format(nominal_year.columns[i])

# 控制行业

nominal_industry = pd.get_dummies(industry)

nominal_industry.drop(columns=[nominal_industry.columns[-1]], axis=1, inplace=True)

for i in range(len(list(nominal_industry.columns))):

formulation += '+Q("{}")'.format(nominal_industry.columns[i])

# OLS

lm = sm.ols(formulation, data=data)

model = lm.fit()

print(model.summary())

3.稳健性检验

替换因变量固定效应模型内生性检验:滞后因变量/PSM/Heckman两阶段法/工具变量法 # PSM

待补充

# Heckman两阶段法

model = ‘自变量 ~ 工具变量 + 控制变量’

# 第一步

probit_model = sm.probit(model, data)

print(result.summary())

result = probit_model.fit()

coef = result.params

# coef 为按照model中工具变量-控制变量的顺序对应的系数

# 计算imr=coef[0]+coef[1]*工具变量+coef[2]*控制变量+...

imr = pd.Dataframe(imr)

imr.columns = ['IMR']

data = pd.concat(objs=[data, imr], axis='columns')

# 第二步

model = ‘因变量 ~ 自变量+ IMR + 控制变量’

需要注意的是,在Heckman中,如果自变量是连续变量而非0-1变量,在进行第一步probit模型时,需要额外进行转换,例如可以根据中位数以上/以下转换为1/0。

4.中介机制研究

第一步:中介机制 ~ 自变量 + 控制变量

第二步:因变量 ~ 中介机制 + 自变量 + 控制变量

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: