glm w R - która wartość reprezentuje dobroć dopasowania całego modelu?

10

Używam glms w R (uogólnione modele liniowe). Myślałem, że znam wartości - dopóki nie zobaczyłem, że wywołanie podsumowania dla glm nie daje nadrzędnej wartości reprezentatywnej dla modelu jako całości - przynajmniej nie w miejscu, w którym robią to modele liniowe.

Zastanawiam się, czy podano to jako wartość dla przechwytywania u góry tabeli współczynników. Więc w poniższym przykładzie, podczas gdy Wind.speed..knots i canopy_density mogą mieć znaczenie dla modelu, skąd wiemy, czy sam model jest istotny? Skąd mam wiedzieć, czy ufać tym wartościom? Czy mam prawo zastanawiać się, czy Pr (> | z |) dla (przechwytywania) reprezentuje znaczenie modelu? Czy ten model jest znaczący? Dzięki!

Powinienem zauważyć, że uruchomienie testu F nie da wartości, ponieważ pojawia się komunikat o błędzie informujący, że uruchomienie testów F na rodzinie dwumianowej jest nieodpowiednie.

Call:
glm(formula = Empetrum_bin ~ Wind.speed..knots. + canopy_density, 
    family = binomial, data = CAIRNGORM)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.2327  -0.7167  -0.4302  -0.1855   2.3194  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)  
(Intercept)          1.8226     1.2030   1.515   0.1298  
Wind.speed..knots.  -0.5791     0.2628  -2.203   0.0276 *
canopy_density      -2.5733     1.1346  -2.268   0.0233 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 59.598  on 58  degrees of freedom
Residual deviance: 50.611  on 56  degrees of freedom
  (1 observation deleted due to missingness)
AIC: 56.611
Jaskółka oknówka
źródło
1
Jeśli dobrze pamiętam w regresji dwumianowej, powinieneś zastosować test dewiacji, czyli test logarytmu wiarygodności - który jest analogiczny do testu F stosowanego w regresji liniowej. Jest to wartość -2 * (Null LL - Saturated LL), która pasuje do rozkładu chi-kwadrat. Chociaż nie widzę modelu Prawdopodobieństwo dziennika w podsumowaniu. Czy jest w obiekcie modelu, ale nie w wyniku podsumowania?
SamPassmore,

Odpowiedzi:

10

Możesz albo wykonać asymptotyczny test chi-kwadrat (59.598-50.611) w porównaniu do chi-kwadrat z (58-56) df, albo użyć anova()na obiekcie glm (który nie wykonuje testu bezpośrednio, ale przynajmniej oblicza ( 59.598-50.611) i (58-56) dla Ciebie).

To skutecznie analiza dewiacji .

Oto rodzaj obliczeń, które możesz wykonać (na innym zestawie danych, który jest dostarczany z R):

spray1=glm(count~spray,family=poisson,data=InsectSprays)  # full model
spray0=glm(count~1,family=poisson,data=InsectSprays)      # null model
with(anova(spray0,spray1),pchisq(Deviance,Df,lower.tail=FALSE)[2]) 

Co daje wartość p dla asymptotycznej statystyki chi kwadrat opartej na dewiacji .

Lub możesz użyć funkcji deviancei, df.residualaby to zrobić:

 pchisq(deviance(spray0)-deviance(spray1),
     df.residual(spray0)-df.residual(spray1),
    lower.tail=FALSE)

-

Wiele osób użyłoby porównania między pełnym a zerowym modelem AIC (lub w niektórych przypadkach być może porównaniem interesującego modelu z modelem nasyconym), aby ustalić, czy model był lepszy niż zerowy w tym sensie.

-

Czy mam prawo zastanawiać się, czy Pr (> | z |) dla (przechwytywania) reprezentuje znaczenie modelu?

Tak nie jest. Rzeczywiście, wartość p przecięcia zwykle nie jest przedmiotem bezpośredniego zainteresowania.

Jeśli zastanawiasz się nad modelem z parametrem dyspersji, widziałem, jak niektórzy ludzie opowiadają się za wykonaniem testu F zamiast asymptotycznego chi-kwadrat; odpowiada to osobom stosującym test t zamiast az na poszczególnych współczynnikach. Nie jest to rozsądne przybliżenie w przypadku małych próbek. Nie widziałem pochodnej ani symulacji, które sugerowałyby, że F jest koniecznie odpowiednim przybliżeniem (tj. Lepszym niż wynik asymptotyczny) w przypadku ogólnie GLM. Ktoś może istnieć, ale go nie widziałem.

Glen_b - Przywróć Monikę
źródło
2
Możesz także uruchomić Anova(fit, type = 2)z carbiblioteki
Algorytmatic
3

Zakładając, że model znajduje się w obiekcie „dopasowanym”, można użyć tego kodu do wykonania testu wiarygodności dziennika na modelu dwumianowym. Jak zauważyłeś, test F nie jest odpowiedni, ale test ten sprawdzi, czy Twój model jest lepszy niż losowo.

LLR = -2 * (fit$null.deviance - fit$deviance)

Jest to wzór na test współczynnika wiarygodności logarytmicznej.

pchisq(LLR, 2, lower.tail = FALSE)

A to da ci wartość p. Chociaż nie jestem w 100% pewien, że to jest poprawne df. Jestem prawie pewien, że jest to różnica w liczbie parametrów, z których masz 2 w modelu nasyconym, a żaden w modelu Null, ergo df = 3 - 1 = 2. Ale to może być coś, co należy kontynuować.

SamPassmore
źródło
1

Jak wspomniano @SamPassmore, możesz użyć analizy dewiacji (patrz na przykład car :: Anova () dla czegoś podobnego), aby uzyskać coś w przybliżeniu równoważnego testowi , ale z . Powiązany z tym jest test współczynnika prawdopodobieństwa (porównanie twojego modelu z modelem zerowym), ale testy te działają dobrze tylko asymptotycznie.χ 2Fχ2

Alternatywnie możesz spojrzeć na AIC lub powiązane środki, takie jak BIC.

Pamiętaj jednak: w przypadku tego typu modelu trudno jest uzyskać coś w rodzaju wartości p z tych samych powodów, dla których trudno jest zdefiniować znaczącą wartość , patrz na przykład to „kazanie” Douga Batesa .R2

Livius
źródło