Bir logit modelinde, bağımsız bir sıra değişkeninin etkisini belirlemek için her seviye için kukla değişkenler kullanmaktan daha akıllı bir yol var mı?
Bir logit modelinde, bağımsız bir sıra değişkeninin etkisini belirlemek için her seviye için kukla değişkenler kullanmaktan daha akıllı bir yol var mı?
Yanıtlar:
@ Dmk38'in cevabına eklemek için, "herhangi bir skor seti , deneyin sonuçlarına danışmadan oluşturulmaları şartıyla geçerli bir test verir . Eğer skorlar kümesi zayıfsa, bunun altında yatan sayısal bir ölçeği sınıflandırma, test hassas olmayacaktır. Bu nedenle puanlar, sınıflandırmanın oluşturulma ve kullanılma şekli hakkında mevcut olan en iyi görüşü içermelidir. " (Cochran, 1954, alıntılanan Agresti, 2002, sayfa 88-89). Başka bir deyişle, sıralı bir faktörün sayısal olarak puanlanmış bir değişken olarak ele alınması sadece bir modelleme sorunudur. Mantıklı olduğu sürece, bu sadece sonucu yorumlama şeklinizi etkiler ve sıralı bir değişken için en iyi temsili nasıl seçeceğiniz konusunda kesin bir kural yoktur.
Anne alkol tüketimi ve konjenital malformasyonun varlığı veya yokluğu ile ilgili aşağıdaki örneği düşünün (Agresti, Kategorik Veri Analizi , Tablo 3.7 s.89):
0 <1 1-2 3-5 6+
Absent 17066 14464 788 126 37
Present 48 38 5 1 1
Bu özel durumda, lojistik regresyon veya basit ilişkilendirme tablosunu kullanarak sonucu modelleyebiliriz. R'de yapalım:
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)
Normal (12.08, p = 0.016751) veya LR (6.20, p = 0.184562) istatistiği (4 df ile) Alkol tüketimindeki sıralı seviyeleri hesaba katmaz.
Her iki değişkene de eşit aralıklı puanlarla sıralı olarak davranılması (malformasyon gibi ikili değişkenler için hiçbir etkisi yoktur ve taban çizgisini 0 = yok olarak seçiyoruz), doğrusal bir doğrusal doğrusal ilişkiyi test edebiliriz. Önce bu olasılık tablosunun patlatılmış bir versiyonunu oluşturalım:
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
Sonra kullanarak doğrusal bir ilişki test edebilir
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)
Görülebileceği gibi, iki değişken arasında açık bir ilişki olduğuna dair çok fazla kanıt yoktur. Agresti tarafından yapıldığı gibi, Alkol seviyelerini {0,0.5,1.5,4,7} olarak yeniden kodlamayı seçersek, varsayılan bir sürekli ölçek için orta aralık değerlerini kullanan ve son skorun tamamen keyfi olduğu sonucuna varırsak, alkol tüketiminin konjenital malformasyon gelişimi üzerine daha büyük bir etkisi:
lbl_test(malform ~ alcohol, data=tab3.7.df,
scores=list(alcohol=c(0,0.5,1.5,4,7)))
0,01037 ile ilişkili p değeri 6,57 olan bir test istatistiği verir.
GLM yaklaşımını kullanarak, aşağıdaki şekilde ilerleyeceğiz. Ama önce Alkol'ün R'de nasıl kodlandığını kontrol edin:
class(tab3.7.df$alcohol)
Bu, basit bir sıralanmamış faktördür ( "factor"
), dolayısıyla nominal bir yordayıcıdır. Şimdi, alkolü nominal, sıralı veya sürekli bir öngörücü olarak gördüğümüz üç modeldi.
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))
. Wald testi her zamanki% 5 düzeyinde anlamlı değildir. Bu durumda, tasarım matrisi sadece 2 sütun içerir: birincisi kesişme için 1'lerin sabit bir sütunudur, ikincisi, basit bir doğrusal regresyonda olduğu gibi, öngörücü için sayısal değerdir (1 ila 5). Özetle, bu model, alkolün sonuç üzerindeki (logit ölçeği) doğrusal bir etkisini test eder.
Bununla birlikte, diğer iki durumda ( mod1
ve mod2
), farklı çıktı elde ederiz, çünkü öngörücüyü modellemek için kullanılan tasarım matrisi, aşağıdakiler kullanılarak kontrol edilebileceği gibi farklılık gösterir:
model.matrix(mod1)
model.matrix(mod2)
mod1
mod2
mod1
mod2
Alkol'e yeni skorlar atamayı deneyebilir ve bunun bir malformasyonun tahmini olasılığını nasıl etkileyeceğini görebilirsiniz.
düzeyler sıralıysa, bir logit (veya OLS) regresyon modelinde kategorik bir yordayıcı kullanmak mükemmeldir. Ancak, her bir seviyeyi ayrık olarak değerlendirmek için bir nedeniniz varsa (veya aslında kategorik değişkeniniz sıradan ziyade nominal ise), kukla kodlamaya alternatif olarak, dikey kontrast kodlamayı da kullanabilirsiniz. Çok eksiksiz ve erişilebilir tartışma için bakınız Judd, CM, McClelland, GH & Ryan, CS Veri analizi: bir model karşılaştırma yaklaşımı, Edn. 2. (Routledge / Taylor ve Francis, New York, NY; 2008) veya yalnızca google "kontrast kodlama"