Есть ли простой способ объединить две модели glm в R?

9

У меня есть две модели логистической регрессии в R, сделанные с glm(). Они оба используют одни и те же переменные, но были созданы с использованием разных подмножеств матрицы. Есть ли простой способ получить среднюю модель, которая дает средние значения коэффициентов, а затем использовать ее с функцией предиката ()?

[извините, если этот тип вопроса должен быть размещен на сайте программирования, дайте мне знать, и я опубликую его там]

Спасибо

Эндрю
источник
1
Вы можете найти полезную информацию в соответствующей теме по адресу stats.stackexchange.com/q/8502/919 .
whuber
В R caretпакет имеет несколько интересных функций для объединения моделей.
screechOwl

Ответы:

2

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

Функция для выполнения любого из них будет выглядеть примерно так. Установите, avgчтобы "prob"получить первое, или что-то еще для последнего.

pred_comb <- function(mod1, mod2, dat, avg="prob", ...)
{
    xb1 <- predict(mod1, dat, type="link", ...)
    xb2 <- predict(mod2, dat, type="link", ...)
    if(avg == "prob")
        (plogis(xb1) + plogis(xb2))/2
    else plogis((xb1 + xb2)/2)
}
Хонг Оои
источник
@Hong Ooi: Спасибо! Этот код действительно полезен и поможет, но в основном я стремился к функции, которая дала бы новую модель R, которую я мог бы затем добавить в Предикат () позже в рабочем процессе. Тем не менее, я думаю, что ваша функция довольно элегантна, и вам нравится то, как вы можете настроить ее для получения вероятностей.
Андрей
@ Андрей, для этого вы можете воспользоваться объектно-ориентированным программированием R. Поместите две свои модели в список и назначьте ему класс, скажем glm_2. Вызовите вышеупомянутую функцию, predict.glm_2и вы сможете использовать ее predict()на своем объекте по мере необходимости.
Hong Ooi
2
Почему усреднение коэффициентов целесообразно? Если два набора данных имеют разные размеры, то, конечно, следует использовать хотя бы некоторую средневзвешенную форму.
whuber
@ Хонг - спасибо, попробую. @whuber - спасибо, что указал на это. Если мои два набора данных имеют одинаковый размер, то это проблема (я раньше об этом не думал). Если они различаются, могу ли я просто взвешивать по соотношению размеров (например, если один в два раза больше, я даю ему вдвое больше веса)?
Андрей
@Andrew Правильно взвешивать по количеству данных, только если значения независимых переменных одинаковы в обоих подмножествах. Для лучшего подхода (который также теоретически действителен), смотрите ветку, на которую я ссылался в комментарии к вашему вопросу.
whuber