R中线性模型的随机预测

Random predictions from linear model in R

我有一些数据,其中一个变量有一些缺失值,我希望能够创建(随机)预测这些可能是什么。这是我的第一个想法:

# 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 参数有关,但我不确定如何使用它。

假设我们有这样的数据:

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)

现在使用该模型的预测来获得预期的 mean 值并 rnbinom 生成随机值 ...

p <- predict(m1,newdata=dd,type="response")
randvals <- rnbinom(length(p),mu=p,size=m1$theta)

(这会为每个元素提供随机值,而不仅仅是缺失的元素,但显然您可以只挑选出您想要的...)如果 simulate 方法能够做到这一点,那就太好了,但它不够灵活...