warning
∞
ด้วยข้อมูลที่สร้างขึ้นตามสายของ
x <- seq(-3, 3, by=0.1)
y <- x > 0
summary(glm(y ~ x, family=binomial))
มีการเตือน:
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
ซึ่งเห็นได้ชัดมากสะท้อนถึงการพึ่งพาที่สร้างไว้ในข้อมูลเหล่านี้
ใน R การทดสอบ Wald พบได้ด้วยsummary.glm
หรือwaldtest
ในlmtest
แพ็คเกจ การทดสอบอัตราส่วนความน่าจะเป็นจะดำเนินการกับanova
หรือlrtest
ในlmtest
แพคเกจ ในทั้งสองกรณีเมทริกซ์ข้อมูลนั้นมีค่าไม่ จำกัด และไม่มีการอนุมาน แต่ R ไม่ผลิตออก แต่คุณไม่สามารถไว้วางใจได้ การอนุมานที่โดยทั่วไป R สร้างในกรณีเหล่านี้มีค่า p ใกล้กับค่ามาก นี่เป็นเพราะการสูญเสียความแม่นยำใน OR เป็นลำดับของขนาดที่เล็กกว่าซึ่งการสูญเสียความแม่นยำในเมทริกซ์ความแปรปรวนร่วม - ความแปรปรวนร่วม
วิธีแก้ปัญหาบางอย่างระบุไว้ที่นี่:
ใช้เครื่องมือประมาณการแบบขั้นตอนเดียว
มีทฤษฎีมากมายที่สนับสนุนอคติต่ำประสิทธิภาพและความสามารถในการสรุปทั่วไปของเครื่องมือประมาณค่าแบบขั้นตอนเดียว มันง่ายที่จะระบุตัวประมาณค่าแบบขั้นตอนเดียวใน R และผลลัพธ์มักจะเป็นที่นิยมมากสำหรับการทำนายและการอนุมาน และรุ่นนี้จะไม่เบี่ยงเบนเพราะตัววนซ้ำ (นิวตัน - ราฟสัน) ก็ไม่มีโอกาสทำเช่นนั้น!
fit.1s <- glm(y ~ x, family=binomial, control=glm.control(maxit=1))
summary(fit.1s)
ให้:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.03987 0.29569 -0.135 0.893
x 1.19604 0.16794 7.122 1.07e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
ดังนั้นคุณสามารถเห็นการคาดการณ์สะท้อนทิศทางของแนวโน้ม และการอนุมานนั้นเป็นการชี้นำอย่างสูงถึงแนวโน้มที่เราเชื่อว่าเป็นจริง
ทำการทดสอบคะแนน
คะแนน (หรือราว) สถิติที่แตกต่างจากอัตราส่วนความน่าจะเป็นและสถิติ Wald ไม่จำเป็นต้องมีการประเมินความแปรปรวนภายใต้สมมติฐานทางเลือก เราพอดีกับโมเดลภายใต้ null:
mm <- model.matrix( ~ x)
fit0 <- glm(y ~ 1, family=binomial)
pred0 <- predict(fit0, type='response')
inf.null <- t(mm) %*% diag(binomial()$variance(mu=pred0)) %*% mm
sc.null <- t(mm) %*% c(y - pred0)
score.stat <- t(sc.null) %*% solve(inf.null) %*% sc.null ## compare to chisq
pchisq(score.stat, 1, lower.tail=F)
χ2
> pchisq(scstat, df=1, lower.tail=F)
[,1]
[1,] 1.343494e-11
ในทั้งสองกรณีคุณมีการอนุมานสำหรับหรือไม่มีที่สิ้นสุด
และใช้ค่ามัธยฐานที่ไม่เอนเอียงสำหรับช่วงความเชื่อมั่น
คุณสามารถสร้างค่ามัธยฐานที่ไม่เอนเอียงและไม่มีเอกพจน์ 95% CI สำหรับอัตราส่วนอัตราต่อรองที่ไม่มีที่สิ้นสุดโดยใช้การประมาณค่ามัธยฐานแบบไม่ลำเอียง แพ็คเกจepitools
ใน R สามารถทำได้ และฉันยกตัวอย่างของการใช้ตัวประมาณนี้ที่นี่: ช่วงความเชื่อมั่นสำหรับการสุ่มตัวอย่างเบอร์นูลลี