2015-09-14 5 views
5

Я разработал модель с помощью множественного вменения с использованием MICE. Я хочу использовать эту модель для прогнозирования ответов на новые наблюдения (содержащие отсутствующие данные), включая стандартные ошибки. Передача объекта модели, созданного в MICE, для функции calculate() не работаетПрогнозирование ответов для новых наблюдений с использованием модели, разработанной с множественным вменением через MICE

Простой пример использования встроенного набора данных nhanes. Скажем, я хотел разработать модель логистической регрессии с формой age==3 ~ bmi + hyp + chl, и использовать эту модель для прогнозирования, скажем, Проб (возраст = 3 | BMI = 20, гип = 2 и хл = 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')" 

Очевидно это была бы прямой, чтобы вычислять предсказанные ответы и ошибки вручную, используя объединенные коэффициенты и объединенную матрицу ковариации. Однако реальная проблема намного больше, и модель опирается на несколько сплайнов и взаимодействий, значительно усложняя вычисления. Я предпочел бы использовать существующие функции, которые могут сделать все это для меня.

Есть ли простое решение в R, которое будет выводить предсказанные ответы для любого заданного (объединенного) объекта модели и любого заданного набора новых наблюдений, без необходимости делать громоздкие модификации кода?

ответ

1

Один из способов сделать это - собрать все вмененные данные вместе и подгонять модель на этом полном наборе данных. После этого вы можете использовать функцию предсказывать как обычно. Оценки параметров, сгенерированные пулом, на самом деле являются средним значением оценок параметров, когда вы поместили одну и ту же модель по каждому вмененным данным отдельно. Конечно, в этом случае стандартная ошибка для каждого ковариата недооценивается.

+0

Спасибо. Я использую этот подход, когда мне не нужны стандартные ошибки, но обычно они мне нужны. – wjchulme