Чи є простий спосіб поєднати дві моделі glm в R?


9

У мене є дві моделі логістичної регресії в R, виготовлені з glm(). Вони обидва використовують однакові змінні, але були зроблені з використанням різних підмножин матриці. Чи є простий спосіб отримати середню модель, яка дає значення коефіцієнтів, а потім використовувати це за допомогою функції predict ()?

[Вибачте, якщо цей тип запитань слід розмістити на сайті програмування, дайте мені знати, і я опублікую його там]

Дякую


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, яку я зможу потім передбачити () пізніше в робочому процесі. Однак я вважаю, що ваша функція досить елегантна, і вам подобається, як ви можете встановити її, щоб надати ймовірності.
Андрій

@Andrew ви можете скористатися для цього об'єктно-орієнтованим програмуванням R. Покладіть свої дві моделі до списку та дайте клас, скажімо glm_2. Зателефонуйте до вищевказаної функції, predict.glm_2а потім зможете використовувати predict()на своєму об'єкті за потребою.
Hong Ooi

2
Чому доцільне усереднення коефіцієнтів? Якщо два набори даних мають різні розміри, то, безумовно, слід використовувати хоча б якусь середню середньозважену форму.
whuber

@ Hong - спасибі, я спробую це. @whuber - дякую, що вказали на це. Якщо мої два набори даних однакового розміру, це обважнює проблему (я раніше про це не думав). Якщо вони різні, чи я просто важу за співвідношенням розмірів (наприклад, якщо один вдвічі більший, то чи варто йому вдвічі більше)
Андрій

@Andrew Правильно зважувати за підрахунком даних, лише якщо значення незалежних змінних однакові в обох підмножинах. Для кращого підходу (який також теоретично справедливий), дивіться тему, на яку я посилався у коментарі до вашого питання.
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.