我想使用predict.glm
返回用于训练原始模型的相同数据集的预测,但是我一直得到NULL
作为结果。我有一个有效的模型,由于缺少值而没有删除任何行。
我的代码有很多变量,并且该项目本质上有点敏感,因此我尝试使用一个玩具示例重现我的问题。但是,由于不确定导致问题的原因,因此无法使用NULL
复制任何glm.predict(object, type = "response)
输出。我希望以前有此问题的经验的人能够推荐解决方案。
library(MASS)
library(tidyverse)
mod1 <- glm(status ~
state + sex + diag + death + T.categ + age,
family = "binomial", data = Aids2)
#> Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
#Below is caused because `death` has values that yield a status of "D" 100% of #time
head(predict.glm(mod1, type = "response"))
#> 1 2 3 4 5 6
#> 1 1 1 1 1 1
#removing `death` as predictor
mod2 <- glm(status ~
state + sex + diag + T.categ + age,
family = "binomial", data = Aids2)
head(predict.glm(mod2, type = "response"))
#> 1 2 3 4 5 6
#> 0.4690554 0.4758433 0.9820719 0.9884703 0.9292926 0.9333818
我不确定什么条件会导致上述调用产生NULL
作为predict.glm
的结果,正如我指定的那样。代码中的结果是我希望得到的,但是在我的实际项目中,即使过去为我返回了正确的值,我也得到了NULL
。我意识到这不是一个很好的可复制示例,但是我无法提供有关我的实际数据的详细信息。感谢您的协助。
答案 0 :(得分:1)
解决方案:在我最初的问题中,而不是上面的玩具示例中,我用glm()
包装summary()
。解决方案是确保我对object
的{{1}}参数是通用线性模型本身,而不是摘要。我很粗心,并假设predict.glm
的摘要将与glm
本身等效。
glm
我感谢那些花时间尝试解决我的问题的人。