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.
admit ~ 1vsadmit ~ rank - 1?