我在这里问了同样的问题,但现在一周没有收到答案,可能是因为它更多的是编码而不是统计问题
我想使用固定效果模型作为 python 中的基本模型进行中介分析。我知道,您可以使用statsmodels 的中介模块进行中介分析。但是固定效应模型(据我所知)只能使用linearmodels。由于到目前为止我还没有进行中介分析,我不确定如何组合这两个模块。
我尝试了以下方法(从第 3 步开始与我的问题相关):
import pandas as pd
from linearmodels import PanelOLS
import statsmodels.api as sm2
from statsmodels.stats.mediation import Mediation
##1. direct effect: X --> Y
DV_LF = df.Y
IV_X = sm2.add_constant(df[['X', 'Control']])
fe_mod_X = PanelOLS(DV_LF, IV_X, entity_effects=True )
fe_res_X = fe_mod_X.fit(cov_type='clustered', cluster_entity=True)
print(fe_res_X)
##2. X --> M
DV_A = df.M
IV_A = sm2.add_constant(df[['X', 'Control']])
fe_mod_A = PanelOLS(DV_A, IV_A, entity_effects=True )
fe_res_A = fe_mod_A.fit(cov_type='clustered', cluster_entity=True)
print(fe_res_A)
##3. M --> Y
IV_M = sm2.add_constant(df[['M', 'Control']])
fe_mod_M = PanelOLS(DV_LF, IV_M, entity_effects=True )
fe_res_M = fe_mod_M.fit(cov_type='clustered', cluster_entity=True)
print(fe_res_M)
##4. X, M --> Y
IV_T = sm2.add_constant(df[['X', 'M', 'Control']])
fe_mod_T = PanelOLS(DV_LF, IV_T, entity_effects=True )
fe_res_T = fe_mod_T.fit(cov_type='clustered', cluster_entity=True)
print(fe_res_T)
med = Mediation(fe_res_T, fe_res_A, 'X', 'M').fit()
med.summary()
但我遇到了一个错误:
AttributeError: 'PanelEffectsResults' object has no attribute 'exog'
我的方法有意义吗?如果是这样,我如何更改代码以使 PanelOLS 和中介一起工作?
编辑:
通过将 X 对 M 的系数(第 2 步)乘以第 4 步中 M 对 Y 的系数来计算间接影响以及通过从 X 对 Y 的系数中减去间接影响(第 1 步)来计算直接影响是否有效? )? 我对那个研究海报有点困惑 ,说正常的中介分析不适用于固定效应等主题分析。如果我的方法是有效的,我将如何计算直接效应和总效应之间差异的显着性?我读到引导将是一个不错的选择,但我不确定如何在我的情况下应用它。