Logit z porządkowymi zmiennymi niezależnymi

18

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?

fgregg
źródło
Czy to nie zależy od oprogramowania?
1
Różne oprogramowanie może dopuszczać różne opcje, ale odpowiedź powinna być zgodna z zasadami, nie?
fgregg,
1
Ok głupi komentarz, przepraszam.

Odpowiedzi:

16

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.χ2)

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)

χ2)(1)=1.83p=0,1764M.2)=(n-1)r2)

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.

ρr

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))

β^exp(θ^)=exp(0,228)=1,256. 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 ( mod1i 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)

mod1k-1mod2mod1mod2

Możesz spróbować przypisać nowe wyniki do Alkoholu i zobaczyć, jak wpłynie to na przewidywane prawdopodobieństwo wad rozwojowych.

chl
źródło
3
(+1) bardzo dokładna odpowiedź. Dodałbym tylko, że możliwe jest uzyskanie testów, które zakładają tylko monotoniczność zależności dawka-odpowiedź bez przypisywania wyników do zmiennej porządkowej za pomocą regresji izotonicznej. Chociaż metody symulacji lub permutacji są zwykle potrzebne do uzyskania rozkładu statystyki testu poniżej zera. Patrz Salanti & Ulm 2003 dx.doi.org/10.1002/bimj.200390012 .
onestop
@onestop Dziękujemy za to odniesienie. Spojrzę na to.
chl
6

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”

dmk38
źródło
Czy uważasz, że można traktować dane porządkowe jako dane przedziałowe w modelu? Jeśli tak, jak mogę zinterpretować współczynnik, jeśli nie znam „odległości” między poziomami?
fgregg,
3
Tak. Współczynnik odzwierciedla zmianę ilorazów logarytmicznych dla każdego przyrostu zmiany w predyktorze porządkowym. Ta (bardzo powszechna) specyfikacja modelu zakłada, że ​​predyktor ma liniowy wpływ na swoje przyrosty. Aby przetestować to założenie, możesz porównać model, w którym używasz zmiennej porządkowej jako pojedynczego predyktora, z modelem, w którym dyskretyzujesz odpowiedzi i traktujesz je jako wiele predyktorów (tak jak gdyby zmienna była nominalna); jeśli ten drugi model nie zapewnia znacznie lepszego dopasowania, uzasadnione jest traktowanie każdego przyrostu jako efektu liniowego.
dmk38,
Daję ci +1, ponieważ ta odpowiedź brzmi dobrze i myślę, że @fgregg zrobiłby to samo (z wystarczającą liczbą powtórzeń).
chl
Myślę też, że jest to doskonały przykład, ponieważ zmianę szansy na log można interpretować za pomocą zmiennych porządkowych.
SmallChess