2016-04-20 59 views
1

我有一些数据有一个变量的缺失值,我想能够创建(随机)预测这些可能是什么。这是我的第一个念头: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参数有关,但我不确定如何使用它。

回答

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) 

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