R реалізація коефіцієнта часткового визначення


9

У когось є пропозиції чи пакети, які підрахують коефіцієнт часткового визначення?

Коефіцієнт часткового визначення може бути визначений як відсоток варіації, який неможливо пояснити у зменшеній моделі, але може бути пояснений предикторами, зазначеними в повній (ер) моделі. Цей коефіцієнт використовується для розуміння того, чи може бути корисним один чи більше додаткових прогнозів у більш повно заданій регресійній моделі.

Розрахунок для часткового r ^ 2 є відносно прямим після оцінки ваших двох моделей та генерації таблиць ANOVA для них. Розрахунок для часткового r ^ 2 дорівнює:

(SSEreduced - SSEfull) / SSEreduced

Я написав цю відносно просту функцію, яка обчислить це для моделі множинної лінійної регресії. Я не знайомий з іншими модельними структурами в R, де ця функція може не виконувати також:

partialR2 <- function(model.full, model.reduced){
    anova.full <- anova(model.full)
    anova.reduced <- anova(model.reduced)

    sse.full <- tail(anova.full$"Sum Sq", 1)
    sse.reduced <- tail(anova.reduced$"Sum Sq", 1)

    pR2 <- (sse.reduced - sse.full) / sse.reduced
    return(pR2)

    }

Будь-які вдячності та поради щодо більш надійних функцій для виконання цього завдання та / або більш ефективних реалізацій вищевказаного коду були б вдячні.


2
Я пропоную спробувати інші моделі і подивитися, чи працює код чи ні. R зазвичай хороший, тому anova має повертати подібні речі для різних моделей. Проблема полягає у вашій початковій формулі. Чи це стосується інших моделей? Якщо цього не відбувається, тоді немає сенсу змушувати код працювати, крім того, код повинен видавати попередження, що він використовується для моделей, де формула не відповідає.
mpiktas

Я насправді не бачу цього питання. Ви хочете функцію, яка обчислює частковий R2, але у вас вже є. Чи знаєте ви чутливість пакету (часткового R2 немає, але реалізовано ПК, що є конкретним випадком)?
Робін Жирард

@robin - прошу вибачення, якщо моє питання не було зрозумілим. Мені цікаво знайти пакет, який містить цей розрахунок (оскільки він, ймовірно, містить багато інших корисних функцій, які були б корисні) та / або пропозиції щодо вдосконалення функції, про яку я писав вище. Очевидно, відсутність перевірки помилок і може застосовуватися не для всіх типів моделі.
Чейз

Я пропоную це питання перенести до SE. В основі цього питання, здається, є проблема впровадження, а не статистична.
каракал

@caracal - все, що вважає за потрібне. Я знаю, що було проведено досить багато дискусій щодо того, де слід провести лінію в піску між SO та CV щодо питань, пов'язаних з R. Я не маю сильних переваг в будь-якому випадку. Моя робота за останній час віддалила мене від цієї конкретної проблеми, але я її переглянумо знову в найближчі тижні, щоб я міг сам знайти краще рішення. Я також добре дозволяю, щоб питання зникло в ефір ...
Чейз

Відповіді:


0

Ну, r ^ 2 - це дійсно просто коваріація, розміщена над твором дисперсій, тому ви, мабуть, могли б зробити щось на кшталт cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduced, Ytrue) / var (Ytrue ) var (YRed) незалежно від типу моделі; перевірте, щоб переконатися, що дає вам таку ж відповідь у випадку lm.

http://www.stator-afm.com/image-files/r-squared.gif

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.