R中线性模型的随机预测

时间:2016-04-20 20:56:09

标签: r glm predict

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

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

1 个答案:

答案 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方法做到这一点会很好,但它是不太灵活......