Прогнозирование ответов на новые наблюдения с использованием модели, разработанной с множественным вменением через MICE

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

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

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)

Ошибка в UseMethod (предсказать): нет применимого метода для "предсказать", примененного к объекту класса c ("мира", "матрица")

pred <- predict(object = poolmodel, newdata = newdata, type = 'link', se.fit = TRUE)

Ошибка в UseMethod (предсказать): нет применимого метода для "предсказать", примененного к объекту класса c ("mipo", "mira", "matrix")

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

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


person wjchulme    schedule 14.09.2015    source источник


Ответы (1)


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

person Thaole    schedule 15.01.2017
comment
Спасибо. Я использую этот подход, когда мне не нужны стандартные ошибки, но обычно они мне нужны. - person wjchulme; 16.01.2017