LRM 与 GLM 输出中的不同系数
Different coefficient in LRM vs GLM output
首先请注意,我无法在我的数据集之外的任何内容上重现此错误。但是,这是一般的想法。我有一个数据框,我正在尝试构建一个简单的逻辑回归来了解 Amount 对 IsWon 的边际效应。两个模型都表现不佳,毕竟是一个预测器,但它们产生两个不同的系数
首先是 glm 输出:
> summary(mod4)
Call:
glm(formula = as.factor(IsWon) ~ Amount, family = "binomial",
data = final_data_obj_samp)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.2578 -1.2361 1.0993 1.1066 3.7307
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.18708622416 0.03142171761 5.9540 0.000000002616 ***
Amount -0.00000315465 0.00000035466 -8.8947 < 0.00000000000000022 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 6928.69 on 4999 degrees of freedom
Residual deviance: 6790.87 on 4998 degrees of freedom
AIC: 6794.87
Number of Fisher Scoring iterations: 6
注意金额的负系数。
现在来自 rms 的 lrm 函数
Logistic Regression Model
lrm(formula = as.factor(IsWon) ~ Amount, data = final_data_obj_samp,
x = TRUE, y = TRUE)
Model Likelihood Discrimination Rank Discrim.
Ratio Test Indexes Indexes
Obs 5000 LR chi2 137.82 R2 0.036 C 0.633
0 2441 d.f. 1 g 0.300 Dxy 0.266
1 2559 Pr(> chi2) <0.0001 gr 1.350 gamma 0.288
max |deriv| 0.0007 gp 0.054 tau-a 0.133
Brier 0.242
Coef S.E. Wald Z Pr(>|Z|)
Intercept 0.1871 0.0314 5.95 <0.0001
Amount 0.0000 0.0000 -8.89 <0.0001
两个模型都做得不好,但一个估计正系数,另一个估计负系数。当然,这些值可以忽略不计,但有人可以帮助我理解这一点。
lrm 对象的情节如下所示。
> plot(Predict(mod2, fun=plogis))
该图显示预测的获胜概率与金额有非常负的关系。
似乎 lrm
正在将系数估计为最接近的 ±0.0000 值。由于系数值远低于该值,因此它只是将其四舍五入为 0.0000。因此,它看起来是积极的,但实际上可能并非如此。
您不应依赖 summary
的打印结果来检查系数。摘要 table 由 print
控制,因此总是会出现舍入问题。您是否尝试过mod4$coef
(获取glm
模型mod4
的系数)和mod2$coef
(获取lrm
模型mod2
的系数)?最好阅读 ?glm
和 ?lrm
的 "values" 部分。
首先请注意,我无法在我的数据集之外的任何内容上重现此错误。但是,这是一般的想法。我有一个数据框,我正在尝试构建一个简单的逻辑回归来了解 Amount 对 IsWon 的边际效应。两个模型都表现不佳,毕竟是一个预测器,但它们产生两个不同的系数
首先是 glm 输出:
> summary(mod4)
Call:
glm(formula = as.factor(IsWon) ~ Amount, family = "binomial",
data = final_data_obj_samp)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.2578 -1.2361 1.0993 1.1066 3.7307
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.18708622416 0.03142171761 5.9540 0.000000002616 ***
Amount -0.00000315465 0.00000035466 -8.8947 < 0.00000000000000022 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 6928.69 on 4999 degrees of freedom
Residual deviance: 6790.87 on 4998 degrees of freedom
AIC: 6794.87
Number of Fisher Scoring iterations: 6
注意金额的负系数。
现在来自 rms 的 lrm 函数
Logistic Regression Model
lrm(formula = as.factor(IsWon) ~ Amount, data = final_data_obj_samp,
x = TRUE, y = TRUE)
Model Likelihood Discrimination Rank Discrim.
Ratio Test Indexes Indexes
Obs 5000 LR chi2 137.82 R2 0.036 C 0.633
0 2441 d.f. 1 g 0.300 Dxy 0.266
1 2559 Pr(> chi2) <0.0001 gr 1.350 gamma 0.288
max |deriv| 0.0007 gp 0.054 tau-a 0.133
Brier 0.242
Coef S.E. Wald Z Pr(>|Z|)
Intercept 0.1871 0.0314 5.95 <0.0001
Amount 0.0000 0.0000 -8.89 <0.0001
两个模型都做得不好,但一个估计正系数,另一个估计负系数。当然,这些值可以忽略不计,但有人可以帮助我理解这一点。
lrm 对象的情节如下所示。
> plot(Predict(mod2, fun=plogis))
该图显示预测的获胜概率与金额有非常负的关系。
似乎 lrm
正在将系数估计为最接近的 ±0.0000 值。由于系数值远低于该值,因此它只是将其四舍五入为 0.0000。因此,它看起来是积极的,但实际上可能并非如此。
您不应依赖 summary
的打印结果来检查系数。摘要 table 由 print
控制,因此总是会出现舍入问题。您是否尝试过mod4$coef
(获取glm
模型mod4
的系数)和mod2$coef
(获取lrm
模型mod2
的系数)?最好阅读 ?glm
和 ?lrm
的 "values" 部分。