Realizacja współczynnika częściowego wyznaczenia

9

Czy ktoś ma sugestie lub pakiety, które obliczą współczynnik częściowego określenia?

Współczynnik częściowego wyznaczenia można zdefiniować jako procent zmienności, którego nie można wyjaśnić w modelu zredukowanym, ale można go wyjaśnić za pomocą predyktorów określonych w modelu pełnym (er). Ten współczynnik służy do uzyskania wglądu, czy jeden lub więcej dodatkowych predyktorów może być użytecznych w bardziej w pełni określonym modelu regresji.

Obliczenie dla częściowego r ^ 2 jest stosunkowo proste po oszacowaniu dwóch modeli i wygenerowaniu dla nich tabel ANOVA. Obliczenie dla częściowego r ^ 2 wynosi:

(SSEreduced - SSEfull) / SSEreduced

Napisałem tę stosunkowo prostą funkcję, która obliczy to dla modelu wielokrotnej regresji liniowej. Nie znam innych struktur modelu w R, w których ta funkcja może również nie działać:

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)

    }

Wszelkie sugestie lub wskazówki dotyczące bardziej niezawodnych funkcji umożliwiających wykonanie tego zadania i / lub bardziej wydajnych implementacji powyższego kodu będą mile widziane.

Gonić
źródło
2
Sugeruję wypróbowanie innych modeli i sprawdzenie, czy kod działa, czy nie. R jest zwykle niezły, więc anova powinna zwrócić podobne rzeczy dla różnych modeli. Problem dotyczy początkowej formuły. Czy to dotyczy innych modeli? Jeśli tak się nie stanie, to nie ma sensu uruchamiać kodu, ponadto kod powinien wydawać ostrzeżenie, że jest używany w modelach, w których formuła nie działa.
mpiktas
Naprawdę nie widzę pytania. Chcesz funkcji, która oblicza częściowe R2, ale już ją masz. Czy znasz wrażliwość pakietu (nie ma częściowego R2, ale zaimplementowano pcc, który jest szczególnym przypadkiem)?
robin girard
@robin - przepraszam, jeśli moje pytanie nie było jasne. Jestem zainteresowany znalezieniem pakietu, który zawiera te obliczenia (ponieważ prawdopodobnie zawiera wiele innych przydatnych funkcji, które byłyby przydatne) i / lub sugestie, jak ulepszyć funkcję, którą napisałem powyżej. Oczywiście nie ma żadnej kontroli błędów i może nie mieć zastosowania do wszystkich typów modeli.
Chase
Sugeruję migrację tego pytania do SE. Sednem tego pytania wydaje się być problem z wdrożeniem, a nie problem statystyczny.
karakal
@caracal - cokolwiek uznasz za stosowne. Wiem, że odbyła się spora dyskusja na temat tego, gdzie należy narysować linię na piasku między SO i CV w odniesieniu do pytań związanych z R. Tak czy inaczej, nie mam silnych preferencji. Moja praca oderwała mnie od tego konkretnego problemu na ostatnią chwilę, ale w najbliższych tygodniach ponownie go omówię, aby sam mógł znaleźć lepsze rozwiązanie. Nic mi nie jest, pozwalając, by pytanie zniknęło w eterze ...
Chase

Odpowiedzi:

0

Cóż, r ^ 2 jest tak naprawdę tylko kowariancją do kwadratu nad iloczynem wariancji, więc prawdopodobnie możesz zrobić coś takiego jak cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduced, Ytrue) / var (Ytrue ) var (YRed) niezależnie od typu modelu; zaznacz, aby sprawdzić, czy daje to tę samą odpowiedź w przypadku lm.

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

Patrick McCann
źródło