我有一些数据,其中一个变量有一些缺失值,我希望能够为这些变量创建(随机)预测。这是我的第一个想法:
# miss indicates where the observations with missing response are
library(MASS)
model <- glm.nb(data[-miss,4] ~ ., data=data[-miss,-4])
predict(model, newdata=data[miss,-4])
但是,如果我重复最后一行,它会一遍又一遍地给出相同的答案 - 它似乎给出了数据和模型给出的预测响应平均值。我想要一个随机预测,其中包含方差,即在给定模型下观察与这些预测变量的响应分布的随机抽取。
它可能与pred.var参数有关,但我不确定如何使用它。
答案 0 :(得分:1)
假设我们有这样的数据:
set.seed(101)
dd <- data.frame(x=(1:20)*0.1)
dd$y <- rnbinom(20,mu=exp(dd$x),size=1)
## make some missing values
miss <- c(2,3,5)
dd$y[miss] <- NA
现在适合模特:
m1 <- MASS::glm.nb(y~x,dd,na.action=na.exclude)
现在使用该模型中的预测来获得预期的平均值值,并rnbinom
生成随机值...
p <- predict(m1,newdata=dd,type="response")
randvals <- rnbinom(length(p),mu=p,size=m1$theta)
(这给出了每个元素的随机值,而不仅仅是缺失的元素,但显然你可以选择你想要的那些...)如果simulate
方法做到这一点会很好,但它是不太灵活......