2016-04-20 1 views
1

J'ai quelques données avec quelques valeurs manquantes pour une variable, et je veux être capable de créer des prédictions (aléatoires) pour ce qu'elles pourraient être. Voici ma première pensée:Prédictions aléatoires du modèle linéaire dans 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]) 

Cependant, si je le répète, la dernière ligne, il donne les mêmes réponses et plus - il semble donner à la moyenne prévue des réponses données que les données et le modèle. Je veux une prédiction aléatoire qui incorpore la variance, c'est-à-dire un tirage au sort de la distribution de la réponse d'une observation avec de tels prédicteurs sous le modèle donné.

Cela pourrait avoir quelque chose à voir avec l'argument pred.var, mais je ne sais pas comment l'utiliser.

Répondre

1

Supposons que nous ayons des données comme ceci:

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 

Montez à un modèle:

m1 <- MASS::glm.nb(y~x,dd,na.action=na.exclude) 

utilisent maintenant les prédictions de ce modèle pour obtenir le attendu valeur moyenne et rnbinom pour générer le hasard valeurs ...

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

(Ce g ives valeurs aléatoires pour chaque élément, pas seulement les éléments manquants, mais évidemment vous pouvez choisir ceux que vous voulez ...) Ce serait bien si la méthode simulate a fait cela, mais ce n'est pas assez flexible ...