Czy w modelu logit jest lepszy sposób na określenie wpływu niezależnej zmiennej porządkowej niż użycie zmiennych zastępczych dla każdego poziomu?
Czy w modelu logit jest lepszy sposób na określenie wpływu niezależnej zmiennej porządkowej niż użycie zmiennych zastępczych dla każdego poziomu?
Odpowiedzi:
Aby dodać do odpowiedzi @ dmk38, „dowolny zestaw wyników daje prawidłowy test, pod warunkiem, że są one konstruowane bez konsultacji z wynikami eksperymentu. Jeśli zestaw wyników jest słaby, to źle zniekształca skalę numeryczną, która naprawdę leży u podstaw uporządkowana klasyfikacja, test nie będzie wrażliwy. Dlatego wyniki powinny zawierać najlepszy możliwy wgląd w sposób, w jaki klasyfikacja została zbudowana i zastosowana. ” (Cochran, 1954, cytowany przez Agresti, 2002, s. 88–89). Innymi słowy, traktowanie uporządkowanego czynnika jako zmiennej punktowanej jest jedynie kwestią modelowania. Pod warunkiem, że ma to sens, wpłynie to tylko na sposób interpretacji wyniku i nie ma ostatecznej reguły wyboru najlepszego reprezentacji zmiennej porządkowej.
Rozważ następujący przykład dotyczący spożycia alkoholu przez matkę oraz obecności wrodzonych wad rozwojowych lub ich braku (Agresti, analiza danych kategorycznych , tabela 3.7, str. 89):
0 <1 1-2 3-5 6+
Absent 17066 14464 788 126 37
Present 48 38 5 1 1
W tym konkretnym przypadku możemy modelować wynik za pomocą regresji logistycznej lub prostej tabeli asocjacji. Zróbmy to w R:
tab3.7 <- matrix(c(17066,48,14464,38,788,5,126,1,37,1), nr=2,
dimnames=list(c("Absent","Present"),
c("0","<1","1-2","3-5","6+")))
library(vcd)
assocstats(tab3.7)
Zwykła statystyka (12,08, p = 0,016751) lub LR (6,20, p = 0,184562) (z 4 df) nie uwzględnia uporządkowanych poziomów spożycia alkoholu.
Traktując obie zmienne jako porządkowe z równomiernie rozmieszczonymi wynikami (nie ma to wpływu na zmienne binarne, takie jak zniekształcenie, i wybieramy linię bazową jako 0 = nieobecna), moglibyśmy przetestować liniowy przez asocjację liniową. Najpierw stwórzmy rozłożoną wersję tej tabeli awaryjnej:
library(reshape)
tab3.7.df <- untable(data.frame(malform=gl(2,1,10,labels=0:1),
alcohol=gl(5,2,10,labels=colnames(tab3.7))),
c(tab3.7))
# xtabs(~malform+alcohol, tab3.7.df) # check
Następnie możemy przetestować połączenie liniowe za pomocą
library(coin)
#lbl_test(as.table(tab3.7))
lbl_test(malform ~ alcohol, data=tab3.7.df)
cor(sapply(tab3.7.df, as.numeric))[1,2]^2*(32574-1)
Jak widać, niewiele jest dowodów na wyraźne powiązanie między tymi dwiema zmiennymi. Jak uczyniło Agresti, jeśli zdecydujemy się przekodować poziomy alkoholu na {0,0,5,1,5,4,7}, czyli wykorzystujemy wartości średnie dla hipotetycznej skali ciągłej, przy czym ostatni wynik jest nieco arbitralny, to doszlibyśmy do wniosku na większy wpływ spożywania alkoholu przez matkę na rozwój wrodzonych wad rozwojowych:
lbl_test(malform ~ alcohol, data=tab3.7.df,
scores=list(alcohol=c(0,0.5,1.5,4,7)))
daje statystykę testową 6,57 z powiązaną wartością p 0,01037.
Stosując podejście GLM, postępowalibyśmy w następujący sposób. Ale najpierw sprawdź, jak alkohol jest kodowany w R:
class(tab3.7.df$alcohol)
Jest to prosty nieuporządkowany czynnik ( "factor"
), stąd nominalny predyktor. Oto trzy modele, w których uważamy alkohol za predyktor nominalny, porządkowy lub ciągły.
summary(mod1 <- glm(malform ~ alcohol, data=tab3.7.df,
family=binomial))
summary(mod2 <- glm(malform ~ ordered(alcohol), data=tab3.7.df,
family=binomial))
summary(mod3 <- glm(malform ~ as.numeric(alcohol), data=tab3.7.df,
family=binomial))
. Test Walda nie jest istotny na zwykłym poziomie 5%. W tym przypadku macierz projektowa zawiera tylko 2 kolumny: pierwsza to stała kolumna 1 dla punktu przecięcia, druga to wartość liczbowa (1 do 5) dla predyktora, jak w prostej regresji liniowej. Podsumowując, ten model sprawdza liniowy wpływ alkoholu na wynik (w skali logit).
Jednak w dwóch innych przypadkach ( mod1
i mod2
) otrzymujemy różne dane wyjściowe, ponieważ macierz projektowa zastosowana do modelowania predyktora jest różna, co można sprawdzić za pomocą:
model.matrix(mod1)
model.matrix(mod2)
mod1
mod2
mod1
mod2
Możesz spróbować przypisać nowe wyniki do Alkoholu i zobaczyć, jak wpłynie to na przewidywane prawdopodobieństwo wad rozwojowych.
doskonale jest używać predyktora jakościowego w modelu regresji logit (lub OLS), jeśli poziomy są porządkowe. Ale jeśli masz powód, aby traktować każdy poziom jako dyskretny (lub jeśli w rzeczywistości twoja zmienna kategorialna jest nominalna, a nie porządkowa), to jako alternatywę dla kodowania pozornego możesz również użyć ortogonalnego kodowania kontrastowego. Aby uzyskać bardzo kompletną i dostępną dyskusję, patrz Judd, CM, McClelland, GH & Ryan, CS Analiza danych: metoda porównywania modeli, Edn. 2. miejsce (Routledge / Taylor and Francis, New York, NY; 2008), lub po prostu Google „kodowanie kontrastowe”