LogisticRegression 完全准分离

LogisticRegression complete quasi-separation

提问人:Chris 提问时间:11/1/2023 最后编辑:mkrieger1Chris 更新时间:11/2/2023 访问量:65

问:

为了计算倾向分数,我想估计横截面二元响应回归模型 使用 statsmodel LogisticRegression 逐年计算。作为解释变量,我考虑了公司特征,治疗组说明了是否在样本中。估计结果令人困惑,表明可能完全准分离。

如何解决模型评估指标不佳和完全准分离的问题?

df = pd.read_excel("Posthoc/PSM_firms_combined.xlsx")
X_year = df[df['Year'] == 2015][['Total Assets', 'Growth', 'Price to Book Value per Share', 'Total Debt to Common Equity']]
y_year = df[df['Year'] == 2015]['Treatment']
logit_model = sm.Logit(y_year, X_year)
results = logit_model.fit()
print(results.summary())

# Obtain the chi-squared statistic
chi_squared = results.llr
print("Chi-Squared Statistic:", chi_squared)
# Calculate McFadden's R-squared
log_likelihood_model = results.llf  # Log-likelihood of the model
log_likelihood_null = results.llnull  # Log-likelihood of a null model
mcfadden_r2 = 1 - (log_likelihood_model / log_likelihood_null)
print("McFadden's R-squared:", mcfadden_r2)
# Obtain AUC-ROC
y_pred_prob = results.predict(X_year)
auc_roc = roc_auc_score(y_year, y_pred_prob)
print("AUC-ROC:", auc_roc)

Logit 回归结果

我尝试了没有成功和 FirthLogisticRegression。logit_model.fit(method = 'bfgs')

Python 逻辑回归倾向 得分匹配

评论

0赞 Josef 11/1/2023
对于倾向得分或预测概率,参数的不识别并不是真正的问题。对于任何估计参数,预测概率将为 0 或 1(或接近它们)。然而,对于倾向评分方法,我们需要在 x 范围内处理和未处理的重叠,这要求概率必须远离 0 和 1。(通常建议删除倾向得分太接近 0 或 1 的观测值。
0赞 Chris 11/2/2023
2015年,有8家公司属于治疗组。他们的大多数倾向得分都在 e^-8 左右,因此接近 0。在非治疗组中,我也有许多接近 0 的观察结果。如果我将非治疗组的观察结果降至接近 0,我会在倾向得分匹配方面遇到问题吗?
0赞 Josef 11/2/2023
我对倾向得分匹配文献不够熟悉。在逆倾向加权中,不能包括具有边界概率的观测值。在匹配时,您可能只是没有找到任何足够接近的匹配。但是,必须忽略 60% 的数据可能会产生很大的选择效应。(几乎)肯定治疗和(几乎)肯定未治疗的人不会有相应的个人/公司接受相反的治疗。
0赞 Josef 11/2/2023
简短的谷歌搜索:ncbi.nlm.nih.gov/pmc/articles/PMC6714558/....
0赞 Chris 11/3/2023
感谢您的评论。使用当前值,我能够在未处理的组中找到接近的匹配项,因为在这两个组中都有许多接近 0 的值。但是由于倾向得分接近 0 的大小,我认为错误可能出在以前的逻辑回归代码中,或者我没有考虑什么?因为模型评估指标很差。

答: 暂无答案