Jak obliczyć dobroć dopasowania w GLM (R)

21

Mam następujący wynik działania funkcji glm.

Jak mogę zinterpretować następujące wartości:

  • Odchylenie zerowe
  • Pozostałe odchylenie
  • AIC

Czy mają coś wspólnego z dobrością dopasowania? Czy mogę obliczyć wartość dobroci dopasowania na podstawie tych wyników, takich jak kwadrat R lub jakakolwiek inna miara?

Call:
glm(formula = tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
    as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.52628  -0.24781  -0.02916   0.25581   0.48509  

Coefficients:
                     Estimate Std. Error  t value Pr(>|t|)    
(Intercept         -1.305e-01  1.391e-01   -0.938   0.3482    
tmpData$X1         -9.999e-01  1.059e-03 -944.580   <2e-16 ***
tmpData$X2         -1.001e+00  1.104e-03 -906.787   <2e-16 ***
tmpData$X3         -5.500e-03  3.220e-03   -1.708   0.0877 .  
tmpData$X4         -1.825e-05  2.716e-05   -0.672   0.5017    
tmpData$X5          1.000e+00  5.904e-03  169.423   <2e-16 ***
tmpData$X6          1.002e+00  1.452e-03  690.211   <2e-16 ***
tmpData$X7          6.128e-04  3.035e-04    2.019   0.0436 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for gaussian family taken to be 0.08496843)

    Null deviance: 109217.71  on 3006  degrees of freedom
Residual deviance:    254.82  on 2999  degrees of freedom
  (4970 observations deleted due to missingness)
AIC: 1129.8

Number of Fisher Scoring iterations: 2
uczeń
źródło
Zdaję sobie sprawę, że migracja została przeprowadzona z SO, gdzie zwykle nie szuka się informacji na temat tych warunków statystycznych. Masz tutaj świetny zasób! Na przykład zobacz, czego możesz się nauczyć z wyszukiwania niektórych terminów, takich jak AIC . Trochę czasu spędzonego na zrobieniu tego powinno albo w pełni odpowiedzieć na twoje pytanie, albo przynajmniej poprowadzić cię do zadania bardziej konkretnego.
whuber
Nie ma związku z gaussowskimi glms, ale jeśli masz bernoulli glm dopasowany do danych binarnych, nie możesz użyć resztkowego odchylenia do oceny dopasowania modelu, ponieważ okazuje się, że dane są anulowane w formule dewiacji. Teraz możesz użyć różnicy odchyleń rezydualnych w tym przypadku do porównania dwóch modeli, ale nie samego odchylenia resztkowego.
FisherDisinformation,

Odpowiedzi:

15

Domyślną rodziną błędów dla glmmodelu w (języku) R jest gaussowski, więc po przesłaniu kodu otrzymujesz zwykłą regresję liniową, gdzie jest powszechnie akceptowaną miarą „dobroci dopasowania”. Funkcja R nie zgłasza pseudonimu Nagelkerke „ ”, ale raczej AIC (Akaike Information Criterion). W przypadku modelu OLS miara GOF Nagelkerke będzie mniej więcej taka sama jak .R2glmR2R2

RGLM2=1(idi,model2)2/N(idi,null2)2/N        .=.        1SSE/n[model]SST/n[total]=ROLS2

Trwa debata na temat interpretacji takiego środka na LHS, ale tylko wtedy, gdy modele odbiegają od prostszej sytuacji Gaussa / OLS. Ale w GLM, w których funkcja link może nie być „tożsamością”, tak jak tutaj, a „błąd kwadratu” może nie mieć tej samej jasnej interpretacji, więc zgłaszane jest również Kryterium Informacyjne Akaike, ponieważ wydaje się być bardziej ogólne. W loteriach GLM GOF jest kilku innych konkurentów, bez wyraźnego zwycięzcy.

Możesz rozważyć nie zgłaszanie miary GOF, jeśli zamierzasz używać GLM z innymi strukturami błędów: Która miara pseudo- jest tą, która zgłasza regresję logistyczną (Cox & Snell lub Nagelkerke)?R2

DWin
źródło
7
Gdzie dokładnie jest „Nagelkerke-pseudo-” R2 w powyższym wyjściu?
Tom
1
Powtarzam pytanie Toma. Gdzie na wyjściu jest pseudo Nagelkerke „R2” lub jak go znaleźć? Nie szukam więcej informacji o wartości, ale raczej gdzie mogę ją znaleźć w danych wyjściowych R. W przykładowym wyjściu pytania nie ma nic, co by mi przypominało wartość dopasowania w zakresie [0–1], więc jestem zdezorientowany.
Kevin - Przywróć Monikę
Zobacz stats.stackexchange.com/questions/8511/… i stackoverflow.com/questions/6242818/ ... ... Nie widzę żadnego R ^ 2 ani w obiekcie glm, ani w wyniku podsumowania. Mogłem myśleć o zwykłych wynikach funkcji podsumowania rms, ponieważ jest to moje ulubione środowisko modelowania.
DWin
9

Użyj zerowej dewiacji i rezydualnej dewiacji, w szczególności:

1 - (Residual Deviance/Null Deviance)

Jeśli się nad tym zastanowić, próbujemy zmierzyć stosunek dewiacji w swoim modelu do wartości zerowej; o ile lepszy jest twój model (odchylenie resztkowe) niż tylko punkt przecięcia (odchylenie zerowe). Jeśli ten stosunek jest niewielki, „tłumaczysz” większość odchyleń od zera; 1 minus daje ci twój R-kwadrat.

W twoim przypadku dostaniesz 0,998.

Jeśli po prostu wywołasz model liniowy (lm) zamiast glm, to wyraźnie da ci R-kwadrat w podsumowaniu i zobaczysz, że jest to ten sam numer.

noLongerRandom
źródło
5

Jeśli prowadzisz binarny model logistyczny, możesz również uruchomić test dobroci dopasowania Hosmer Lemeshow na swoim modelu glm (). Korzystanie z biblioteki ResourceSelection.

library(ResourceSelection)

model <- glm(tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
           as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7, family = binomial)

summary(model)
hoslem.test(model$y, model$fitted)
dylanjm
źródło
Trzeba jednak pamiętać, że działa to tylko w przypadku binarnych modeli zmiennych zależnych (np. Gdyby ustawiono family = "binomialOP. Przykładem OP jest regresja liniowa.
Matthew
@Matthew To prawda, przepraszam, że mi tego brakowało. Ostatnio bardzo często korzystam z binarnych regresji logistycznych. Mój mózg właśnie poszedł dohoslem.test()
dylanjm,
Zrozumiałe :) Zasugerowałem edycję twojego postu, ale zapomniałem również zaktualizować kod R. Możesz to zmienić tylko dla jasności.
Matthew