คำอธิบายต่อไปนี้ไม่ได้ จำกัด อยู่ที่การถดถอยแบบลอจิสติกแต่ใช้อย่างเท่าเทียมกันในการถดถอยเชิงเส้นปกติและ GLM อื่น ๆ โดยปกติR
ไม่รวมระดับหนึ่งของหมวดหมู่และสัมประสิทธิ์แสดงถึงความแตกต่างของแต่ละคลาสในคลาสอ้างอิงนี้ (หรือบางครั้งเรียกว่าคลาสพื้นฐาน) (นี่เรียกว่าการจำลองแบบจำลองหรือการรักษาที่แตกต่างR
กันดูที่นี่สำหรับภาพรวมที่ยอดเยี่ยม ) หากต้องการดูความแตกต่างในปัจจุบันในการพิมพ์R
options("contrasts")
โดยปกติจะR
เรียงลำดับระดับของตัวแปรเด็ดขาดตามลำดับตัวอักษรและรับคลาสแรกเป็นคลาสอ้างอิง สิ่งนี้อาจไม่เหมาะสมเสมอไปและสามารถเปลี่ยนแปลงได้โดยการพิมพ์ (ที่นี่เราจะตั้งคลาสอ้างอิงเป็น "c" ในตัวแปรใหม่)new.variable <- relevel(old.variable, ref="c")
. สำหรับสัมประสิทธิ์แต่ละระดับของตัวแปรเด็ดขาดทุกระดับการทดสอบ Waldจะดำเนินการเพื่อทดสอบว่าความแตกต่างระหว่างค่าสัมประสิทธิ์ของคลาสอ้างอิงและคลาสอื่น ๆ นั้นแตกต่างจากศูนย์หรือไม่ นี่คือค่าZและพี value ในตารางการถดถอย หากคลาสคลาสเด็ดขาดเพียงคลาสเดียวมีความสำคัญสิ่งนี้ไม่ได้หมายความว่าตัวแปรทั้งหมดไม่มีความหมายและควรลบออกจากโมเดล คุณสามารถตรวจสอบผลกระทบโดยรวมของตัวแปรได้โดยทำการทดสอบอัตราส่วนความน่าจะเป็น: พอดีสองรุ่นหนึ่งอันและอีกอันหนึ่งไม่มีตัวแปรและพิมพ์anova(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.675สัมประสิทธิ์เป็นเพียงการสกัดกั้น ดังนั้นค่าสัมประสิทธิ์ที่แท้จริงของการจะเป็น-4.67 การทดสอบของ Wald ทดสอบที่นี่ว่าความแตกต่างระหว่างสัมประสิทธิ์ของคลาสอ้างอิง (ที่นี่) และระดับที่สอดคล้องกันนั้นแตกต่างจากศูนย์หรือไม่ ในกรณีนี้เรามีหลักฐานที่แสดงว่าค่าสัมประสิทธิ์ของทุกชั้นเรียนแตกต่างจากค่าสัมประสิทธิ์ของ คุณสามารถใส่โมเดลได้โดยไม่ต้องมีการสกัดกั้นด้วยการเพิ่ม- 0.675rank1
rank2
- 3.99 - 0.675 = - 4.67rank1
rank1
- 1
ไปที่สูตรโมเดลเพื่อดูค่าสัมประสิทธิ์ทั้งหมดโดยตรง:
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
โปรดทราบว่าการสกัดกั้นได้หายไปในขณะนี้และสัมประสิทธิ์rank1
เป็นจุดตัดของโมเดลแรก ที่นี่การทดสอบวอลด์ไม่ได้ตรวจสอบความแตกต่างระหว่างค่าสัมประสิทธิ์แบบคู่ แต่สมมติฐานว่าค่าสัมประสิทธิ์ของแต่ละบุคคลเป็นศูนย์ อีกครั้งเรามีหลักฐานว่าค่าสัมประสิทธิ์ของทุกคนrank
แตกต่างจากศูนย์ ในที่สุดเพื่อตรวจสอบว่าตัวแปรทั้งหมดrank
ปรับปรุงแบบให้พอดีหรือไม่เราพอดีกับแบบจำลองหนึ่งแบบด้วย ( my.mod1
) และหนึ่งแบบที่ไม่มีตัวแปรrank
( my.mod2
) และทำการทดสอบอัตราส่วนความน่าจะเป็น สิ่งนี้ทดสอบสมมติฐานที่ว่าสัมประสิทธิ์ทั้งหมดrank
เป็นศูนย์:
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
การทดสอบอัตราส่วนความน่าจะเป็นมีความสำคัญสูงและเราจะสรุปได้ว่าตัวแปรrank
ควรอยู่ในรูปแบบดังกล่าว
โพสต์นี้ก็น่าสนใจเช่นกัน
admit ~ 1
VSadmit ~ rank - 1
?