Aşağıdaki açıklama lojistik regresyon ile sınırlı değildir , normal doğrusal regresyon ve diğer GLM'lerde de aynı şekilde geçerlidir. Genellikle, Rkategorik bir seviyeyi hariç tutar ve katsayılar her sınıfın bu referans sınıfına (veya bazen taban çizgisi sınıfına denir) farkını gösterir (buna kukla kodlama veya tedavi kontrastları denir , farklı kontrast seçeneklerine mükemmel bir genel bakış için burayaR bakın ). Geçerli kontrastları görmek için yazın . Normalde, kategorik değişkenin seviyelerini alfabetik olarak sıralar ve ilki referans sınıfı olarak alır. Bu her zaman optimal değildir ve yazarak değiştirilebilir (burada, yeni değişkente referans sınıfını "c" olarak ayarlayacağız)Roptions("contrasts")Rnew.variable <- relevel(old.variable, ref="c"). Kategorik değişkenin her seviyesinin her katsayısı için, referans sınıfın katsayısı ile diğer sınıf arasındaki ikili farkın sıfırdan farklı olup olmadığını test etmek için bir Wald testi yapılır . Bu nedir z ve p regresyon tablosundaki-değerleri bulunmaktadır. Sadece bir kategorik sınıf anlamlı ise, bu mu değil bütün değişken anlamsız ve modelden kaldırılması gerektiğini ima. Bir gerçekleştirerek değişken genel etkisini kontrol edebilir olasılık oran testi : uygun iki model, değişken ve türü olmayan ile ve biri de (aşağıdaki örneğe bakınız). İşte bir örnek: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
rank1rankrank1rankrank1rank2- 0.675rank1rank2- 3.99 - 0.675 = - 4.67rank1rank1. - 1Tüm katsayıları doğrudan görmek için model formülüne ekleyerek modeli kesişmeden de sığdırabilirsiniz :
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
Kesişimin artık gittiğini ve katsayısının rank1tam olarak ilk modelin kesişim olduğunu unutmayın. Burada, Wald testi katsayılar arasındaki ikili farkı değil, her bir katsayının sıfır olduğu hipotezini kontrol eder . Yine, her katsayının ranksıfırdan farklı olduğuna dair kanıtlarımız var . Son olarak, tüm değişkenin rankmodel uyumunu geliştirip iyileştirmediğini kontrol etmek için , bir modele ( my.mod1) ve değişken rank( my.mod2) olmadan bir modele uyuyoruz ve bir olasılık oranı testi gerçekleştiriyoruz. Bu, tüm katsayılarının ranksıfır olduğu hipotezini test eder :
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
Olabilirlik oranı testi oldukça önemlidir ve değişkenin rankmodelde kalması gerektiği sonucuna varacağız.
Bu yazı da çok ilginç.
admit ~ 1vsadmit ~ rank - 1?