Znaczenie predyktora jakościowego w regresji logistycznej

19

Mam problem z interpretacją wartości Z dla zmiennych kategorialnych w regresji logistycznej. W poniższym przykładzie mam zmienną kategorialną z 3 klasami i zgodnie z wartością z, KLASA 2 może być istotna, podczas gdy inne nie.

Ale co to teraz znaczy?

Że mogę połączyć pozostałe klasy w jedną?
Czy cała zmienna może nie być dobrym predyktorem?

To tylko przykład, a rzeczywiste wartości z tutaj nie pochodzą z prawdziwego problemu, mam tylko trudności z ich interpretacją.

           Estimate    Std. Error  z value Pr(>|z|)    
CLASS0     6.069e-02  1.564e-01   0.388   0.6979    
CLASS1     1.734e-01  2.630e-01   0.659   0.5098    
CLASS2     1.597e+00  6.354e-01   2.514   0.0119 *  
użytkownik695652
źródło

Odpowiedzi:

47

Poniższe wyjaśnienie nie ogranicza się do regresji logistycznej, ale ma zastosowanie w równym stopniu do normalnej regresji liniowej i innych GLM. Zwykle Rwyklucza jeden poziom jakościowy, a współczynniki oznaczają różnicę każdej klasy w stosunku do tej klasy referencyjnej (lub czasami nazywanej klasą bazową) (nazywa się to kodowaniem pozorowanym lub kontrastami leczenia R, zobacz tutaj doskonały przegląd różnych opcji kontrastu ). Aby zobaczyć bieżące kontrasty R, wpisz options("contrasts"). Zwykle Rporządkuje poziomy zmiennej jakościowej alfabetycznie i przyjmuje pierwszą jako klasę odniesienia. Nie zawsze jest to optymalne i można je zmienić, wpisując (w tej zmiennej zmienilibyśmy klasę referencyjną na „c”)new.variable <- relevel(old.variable, ref="c"). Dla każdego współczynnika każdego poziomu zmiennej kategorialnej wykonuje się test Walda, aby sprawdzić, czy różnica par pomiędzy współczynnikiem klasy odniesienia a drugą klasą jest różna od zera, czy nie. Takie są wartości i w tabeli regresji. Jeśli tylko jedna klasa jakościowa jest znacząca, nie oznacza to, że cała zmienna jest bez znaczenia i powinna zostać usunięta z modelu. Można sprawdzić ogólny efekt zmiennej przez wykonanie testu współczynnika prawdopodobieństwa : dopasowanie dwa modele, jeden i jeden bez zmiennej i typu w (patrz przykład poniżej). Oto przykład:zpanova(model1, model2, test="LRT")R

mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")

mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Poziom rank1został pominięty, a każdy współczynnik rankoznacza różnicę między współczynnikiem rank1a odpowiednim rankpoziomem. Tak więc różnica między współczynnikiem rank1i rank2wynosiłaby . Współczynnik to po prostu punkt przecięcia. Zatem prawdziwy współczynnik wyniósłby . Testy Wald tutaj sprawdzają, czy różnica między współczynnikiem klasy odniesienia (tutaj ) a odpowiadającymi poziomami różni się od zera. W tym przypadku mamy dowody, że współczynniki wszystkich klas różnią się od współczynnika . Możesz również dopasować model bez przechwytu, dodając-0,675- 3,99 - 0,675 = - 4,67rank1rank2-3,99-0,675=-4,67rank1rank1- 1 do wzoru modelu, aby zobaczyć wszystkie współczynniki bezpośrednio:

my.mod2 <- glm(admit ~ gre + gpa + rank - 1, data = mydata, family = "binomial")

summary(my.mod2) # no intercept model

Coefficients:
       Estimate Std. Error z value Pr(>|z|)    
gre    0.002264   0.001094   2.070 0.038465 *  
gpa    0.804038   0.331819   2.423 0.015388 *  
rank1 -3.989979   1.139951  -3.500 0.000465 ***
rank2 -4.665422   1.109370  -4.205 2.61e-05 ***
rank3 -5.330183   1.149538  -4.637 3.54e-06 ***
rank4 -5.541443   1.138072  -4.869 1.12e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Zauważ, że punkt przecięcia zniknął teraz i że współczynnik rank1jest dokładnie punktem przecięcia pierwszego modelu. W tym przypadku test Walda sprawdza nie różnicę par pomiędzy współczynnikami, ale hipotezę, że każdy pojedynczy współczynnik wynosi zero. Znów mamy dowody, że każdy współczynnik rankróżni się od zera. Wreszcie, aby sprawdzić, czy cała zmienna rankpoprawia dopasowanie modelu, dopasowujemy jeden model za pomocą ( my.mod1), a drugi bez zmiennej rank( my.mod2) i przeprowadzamy test współczynnika prawdopodobieństwa. Testuje to hipotezę, że wszystkie współczynniki rankwynoszą zero:

my.mod1 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") # with rank
my.mod2 <- glm(admit ~ gre + gpa, data = mydata, family = "binomial") # without rank

anova(my.mod1, my.mod2, test="LRT")

Analysis of Deviance Table

Model 1: admit ~ gre + gpa + rank
Model 2: admit ~ gre + gpa
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       394     458.52                          
2       397     480.34 -3  -21.826 7.088e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Test współczynnika prawdopodobieństwa jest bardzo istotny i wyciągnęlibyśmy wniosek, że zmienna rankpowinna pozostać w modelu.

Ten post jest również bardzo interesujący.

COOLSerdash
źródło
Bardzo pouczająca odpowiedź! Jedno szybkie pytanie: co, jeśli mamy tylko pozycję predyktora? Dla wykonania testu LRT wartość null byłaby admit ~ 1vs admit ~ rank - 1?
NULL
1
@NULL Tak, albo null vs., admit~rankalbo admit~rank - 1są równoważne pod względem dopasowania.
COOLSerdash
Wielkie dzięki! Jeden inny szybkie pytanie: kiedy Jestem zainteresowany wykonaniem jednostronnego testu Walda współczynników zmiennej kategorycznego (bez porównania z wartościami wyjściowymi - Znaczy nie osią), to efekt innych czynników predykcyjnych jak grei gpamieć wpływ tego braku włączenie przechwytywania?
NULL
Innymi słowy, jeśli chcę wykonać jednostronny test współczynników predyktora jakościowego, kontrolując jednocześnie inne zmienne towarzyszące, czy to jest właściwy sposób? i czy miałoby to również zastosowanie do regresji liniowej?
NULL
1
rankrankp
8

z

Czy więc nieistotny współczynnik oznacza, że ​​możesz łączyć kategorie? Nie. Po pierwsze, nieistotne oznacza, że ​​nie możemy odrzucić hipotezy, że nie ma różnicy, ale to nie znaczy, że takich różnic nie ma. Brak dowodów to nie to samo, co dowód nieobecności. Po drugie, łączenie kategorii, zwłaszcza kategorii odniesienia, zmienia interpretację wszystkich innych współczynników. To, czy ma to sens, zależy od tego, co oznaczają te różne klasy.

Czy to oznacza, że ​​cała zmienna kategorialna jest „złym” (nieistotnym) predyktorem? Nie, w tym celu należy wykonać jednoczesny test dla wszystkich warunków KLASY.

Maarten Buis
źródło