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, R
kategorik 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)R
options("contrasts")
R
new.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
rank1
rank
rank1
rank
rank1
rank2
- 0.675rank1
rank2
- 3.99 - 0.675 = - 4.67rank1
rank1
. - 1
Tü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 rank1
tam 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 rank
sıfırdan farklı olduğuna dair kanıtlarımız var . Son olarak, tüm değişkenin rank
model 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 rank
sı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 rank
modelde kalması gerektiği sonucuna varacağız.
Bu yazı da çok ilginç.
admit ~ 1
vsadmit ~ rank - 1
?