2015-09-14 8 views
5

Ho sviluppato un modello tramite imputazione multipla utilizzando MICE. Voglio utilizzare questo modello per prevedere le risposte per nuove osservazioni (che non contengono dati mancanti), compresi gli errori standard. Passare l'oggetto del modello creato in MICE alla funzione predict() non funzionaPrevisione di risposte per nuove osservazioni utilizzando un modello sviluppato con imputazione multipla tramite MICE

Un semplice esempio che utilizza il set di dati nhanes incorporato. Di 'Ho voluto sviluppare un modello di regressione logistica con la forma age==3 ~ bmi + hyp + chl, e utilizzare questo modello per prevedere, per esempio, prob (età = 3 | IMC = 20, ip = 2 e chl = 190)

#impute missing data on bmi, hyp, chl 
library('mice') 
imp<-mice(nhanes, seed=1) 

#create model on each imputed dataset 
model <- with(imp, glm(age==3 ~ bmi + hyp + chl, family=binomial)) 

#pool models into one 
poolmodel <- pool(model) 

#new data 
newdata <- data.frame(bmi=20, hyp=2, chl=190) 

#attempt to predict response using predict() function 
pred <- predict(object=model, newdata=newdata, type='link', se.fit=TRUE) 
#Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "c('mira', 'matrix')" 

pred <- predict(object=poolmodel, newdata=newdata, type='link', se.fit=TRUE) 
#Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "c('mipo', 'mira', 'matrix')" 

Ovviamente Sarebbe semplice calcolare manualmente le risposte e gli errori previsti utilizzando i coefficienti aggregati e la matrice di covarianza raggruppata. Il problema reale tuttavia è molto più ampio e il modello si basa su poche spline e interazioni, complicando notevolmente i calcoli. Preferirei usare le funzioni esistenti che possono fare tutto questo per me.

Esiste una soluzione semplice in R che genera risposte previste per qualsiasi oggetto modello (in pool) e un determinato insieme di nuove osservazioni, senza dover apportare modifiche ingombranti al codice?

risposta

1

Un modo per eseguire questa operazione è raggruppare insieme tutti i dati associati e adattarli al modello su questo set di dati completo. Dopodiché puoi usare la funzione come previsto normalmente. Le stime dei parametri generate dal pool sono in realtà la media delle stime dei parametri quando si adatta lo stesso modello su ciascun dato imputato separatamente. Ovviamente, in questo caso, l'errore standard per ogni covariata è sottostimato.

+0

Grazie. Io uso questo approccio quando non ho bisogno di errori standard, ma di solito ne ho bisogno. – wjchulme

Problemi correlati