对有效模型返回NULL的predict.glm

时间:2019-07-12 15:08:27

标签: r dplyr predict forcats

我想使用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。我意识到这不是一个很好的可复制示例,但是我无法提供有关我的实际数据的详细信息。感谢您的协助。

1 个答案:

答案 0 :(得分:1)

解决方案:在我最初的问题中,而不是上面的玩具示例中,我用glm()包装summary()。解决方案是确保我对object的{​​{1}}参数是通用线性模型本身,而不是摘要。我很粗心,并假设predict.glm的摘要将与glm本身等效。

glm

我感谢那些花时间尝试解决我的问题的人。