2016-04-20 4 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) 

(Этот g ives случайные значения для каждого элемента, а не только недостающие, но, очевидно, вы можете выбрать только те, которые вы хотите ...) Было бы неплохо, если бы метод simulate сделал это, но он недостаточно гибкий ...

Смежные вопросы