我有一些关于患者在遭受自我造成的枪伤后出现在急诊室的数据,这些数据存储在 R 中的数据框(“SIGSW”,即 47 个变量的约 16,000 个观察值)中。我想创建一个模型来帮助医生使用几个客观的协变量来预测自杀未遂或疏忽出院的“预测概率”。协变量主要是分类变量,但也有一些是连续的或二元的。我的结果,无论是否有自杀企图,都被编码为二元/指标变量“SI”,因此我认为二元逻辑回归是合适的工具。
为了构建我的模型,我打算在每个协变量上单独回归 SI,并使用每个模型的似然比检验的 p 值来告知应该考虑哪些协变量用于后向模型选择。
对于每个模型,SI~SEX、SI~AGE 等,我收到以下错误:
>glm(SI ~ SEX, family = binomial, data=SIGSW)
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: algorithm did not converge
一点谷歌搜索表明我可能需要增加迭代次数以允许收敛。我用以下方法做到了这一点:
>glm(SI ~ SEX, family = binomial, data=SIGSW, control = list(maxit = 50))
Call: glm(formula = SI ~ SEX, family = binomial, data = SIGSW, control = list(maxit = 50))
Coefficients:
(Intercept) SEX
-3.157e+01 -2.249e-13
Degrees of Freedom: 15986 Total (i.e. Null); 15985 Residual
Null Deviance: 0
Residual Deviance: 7.1e-12 AIC: 4
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
在谷歌搜索后,这条警告信息暗示了一个“完美的分离”,据我所知,这意味着我的预测器“太好了”。看到所有预测变量如何发生这种情况,我有点怀疑它们都“太好了”。难道我做错了什么?
编辑:根据答案,这是一个数据样本(出于空间考虑,我只选择了一些变量):
SIGSW.AGENYR_C SIGSW.SEX SIGSW.RACE_C SIGSW.SI
1 19 Male White 0
2 13 Male Other 0
3 18 Male Not Stated 0
4 15 Male White 0
5 23 Male White 0
6 11 Male Black 0
7 16 Male Not Stated 1
8 21 Male Not Stated 0
9 14 Male White 0
10 41 Male White 0
这是 SEX 和 SI 的交叉表,表明 SI 被编码为指示变量,并且有男性和女性都有 SI,因此性别不是一个完美的预测指标。
>table(SIGSW$SEX, SIGSW$SI)
0 1
Unknown 1 3
Male 11729 2121
Female 1676 457
小区大小是否代表问题?