Kwadratowa formuła Pseudo R dla GLM


Odpowiedzi:


22

Istnieje duża liczba pseudo- S kła. Doskonała strona pomocy statystyk UCLA zawiera ich pełny przegląd tutaj . Ten, który wymieniasz, nazywa się pseudo- R 2 McFaddena . Względem typologii UCLA, to jest jak R 2 w tym sensie, że indeksy Poprawa dopasowanego modelu na model zerowej. Niektóre programy statystyczne, zwłaszcza SPSS, o ile dobrze pamiętam, domyślnie wypisują pseudonim R 2 McFaddena z wynikami niektórych analiz, takich jak regresja logistyczna, więc podejrzewam, że jest dość powszechny, chociaż pseudo Cox & Snell i Nagelkerke R 2 może być nawet bardziej. Jednak pseudo- McFaddenR2R2R2R2R2 nie ma wszystkich właściwości R 2 (bez pseudo R 2 nie). Jeśli ktoś jest zainteresowany użyciem pseudo- R 2 do zrozumienia modelu, zdecydowanie polecam przeczytanie tego doskonałego wątku CV:Którąmiarępseudo- R 2 zgłosi regresja logistyczna (Cox & Snell lub Nagelkerke)? (Na co warto, R 2 jest sam slipperier niż ludzie zdają sobie sprawę, wielki pokaz, który można zobaczyć na użytkownika @ whuber odpowiedź tutaj:Czy R 2 ? Użyteczna lub niebezpieczna) R2R2R2R2R2R2R2


Zastanawiam się, czy wszystkie te pseudo-R2 zostały zaprojektowane specjalnie tylko dla regresji logistycznej? Czy też uogólniają także na poissony i gamma-glms? Znalazłem inną formułę R2 dla każdego możliwego GLM wColin Cameron, A., & Windmeijer, F. A. (1997). An R-squared measure of goodness of fit for some common nonlinear regression models. Journal of Econometrics, 77(2), 329-342.
Jens

@Jens, niektóre z nich z pewnością wydają się specyficzne dla LR, ale inne używają dewiacji, którą można uzyskać z dowolnego GLiM.
gung - Przywróć Monikę

1
R2R2R2

Biorąc pod uwagę, że GLM są dopasowane przy użyciu iteracyjnie ponownie ważonych najmniejszych kwadratów, jak w bwlewis.github.io/GLM , jaki byłby zarzut obliczenia ważonego R2 na skali łącza GLM, przy użyciu wag 1 / wariancji jako wag (które glm zwraca w obciążnikach szczelin w dopasowanym glm)?
Tom Wenseleers,

R2

9

R daje zerowe i szczątkowe odchylenie w danych wyjściowych, aby glmmożna było dokonać dokładnie tego rodzaju porównania (patrz dwie ostatnie linie poniżej).

> x = log(1:10)

> y = 1:10

> glm(y ~ x, family = poisson)

>Call:  glm(formula = y ~ x, family = poisson)

Coefficients:
(Intercept)            x  
  5.564e-13    1.000e+00  

Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
Null Deviance:      16.64 
Residual Deviance: 2.887e-15    AIC: 37.97

Możesz również wyciągnąć te wartości z obiektu za pomocą model$null.devianceimodel$deviance


Ah, dobrze. Właśnie odpowiadałem na pytanie tak, jak napisano. Dodałbym więcej, ale nie jestem w 100% pewien, jak sam obliczam odchylenie zerowe (ma to coś wspólnego z prawdopodobieństwem logu nasyconego modelu, ale nie pamiętam wystarczająco dużo szczegółów na temat nasycenia, aby być pewnym że mogę podać dobre intuicje)
David J. Harris

Nie mam go w wyjściu glm (opcja rodzinna lub quasipoisson).
Ciekawy,

@Tomas zobacz moje zmiany. Nie wiem, czy się pomyliłem 2 lata temu, czy też domyślne wyjście zmieniło się od tego czasu.
David J. Harris,

summary.glmR2

1
Przeczytaj pytanie. Myślisz, że na to odpowiadasz? Pytanie nie brzmiało: „skąd mogę wziąć składniki formuły?”.
Ciekawy

6

Zaproponowana przez ciebie formuła została zaproponowana przez Maddala (1983) i Magee (1990) w celu oszacowania R do kwadratu na modelu logistycznym. Dlatego nie sądzę, że ma to zastosowanie do wszystkich modeli glm (patrz książka Nowoczesne metody regresji Thomasa P. Ryana na stronie 266).

Jeśli stworzysz fałszywy zestaw danych, zobaczysz, że nie docenia on kwadratu R ... dla przykładu gaussowskiego glm.

Myślę, że dla gaussowskiego glm możesz użyć podstawowej (lm) R kwadratowej formuły ...

R2gauss<- function(y,model){
    moy<-mean(y)
    N<- length(y)
    p<-length(model$coefficients)-1
    SSres<- sum((y-predict(model))^2)
    SStot<-sum((y-moy)^2)
    R2<-1-(SSres/SStot)
    Rajust<-1-(((1-R2)*(N-1))/(N-p-1))
    return(data.frame(R2,Rajust,SSres,SStot))
}

A dla logistyki (lub rodziny dwumianowej wr) użyłbym zaproponowanej przez ciebie formuły ...

    R2logit<- function(y,model){
    R2<- 1-(model$deviance/model$null.deviance)
    return(R2)
    }

Do tej pory dla poissona glm użyłem równania z tego postu.

/programming/23067475/how-do-i-obtain-pseudo-r2-measures-in-stata-when-using-glm-regression

Jest też świetny artykuł na temat pseudo R2 dostępny na bramkach badań ... oto link:

https://www.researchgate.net/publication/222802021_Pseudo_R-squared_measures_for_Poisson_regression_models_with_over-_or_underdispersion

Mam nadzieję, że ta pomoc.


Po prostu dopasuj model GLM do rodziny = gaussian (link = tożsamość) i sprawdź wartość, 1-summary(GLM)$deviance/summary(GLM)$null.deviancea zobaczysz, że R2 odpowiada wartości R2 zwykłej regresji OLS, więc powyższa odpowiedź jest poprawna! Zobacz także mój post tutaj - stats.stackexchange.com/questions/412580/…
Tom Wenseleers

3

Pakiet R modEvAoblicza D-kwadrat , jak 1 - (mod$deviance/mod$null.deviance)wymienione David J. Harris

set.seed(1)
data <- data.frame(y=rpois(n=10, lambda=exp(1 + 0.2 * x)), x=runif(n=10, min=0, max=1.5))

mod <- glm(y~x,data,family = poisson)

1- (mod$deviance/mod$null.deviance)
[1] 0.01133757
library(modEvA);modEvA::Dsquared(mod)
[1] 0.01133757

D-Squared lub wyjaśnione odchylenie modelu zostało wprowadzone w (Guisan & Zimmermann 2000) https://doi.org/10.1016/S0304-3800(00)00354-9

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.