warning
∞
Với dữ liệu được tạo dọc theo dòng
x <- seq(-3, 3, by=0.1)
y <- x > 0
summary(glm(y ~ x, family=binomial))
Cảnh báo được thực hiện:
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
mà rất rõ ràng phản ánh sự phụ thuộc được xây dựng trong các dữ liệu này.
Trong R, kiểm tra Wald được tìm thấy có summary.glm
hoặc có waldtest
trong lmtest
gói. Các thử nghiệm tỷ lệ khả năng được thực hiện với anova
hoặc với lrtest
trong lmtest
gói. Trong cả hai trường hợp, ma trận thông tin đều có giá trị vô hạn và không có suy luận nào khả dụng. Thay vào đó, R không tạo ra đầu ra, nhưng bạn không thể tin tưởng được. Suy luận mà R thường tạo ra trong các trường hợp này có giá trị p rất gần với một. Điều này là do sự mất độ chính xác trong OR là các bậc có độ lớn nhỏ hơn mà mất độ chính xác trong ma trận phương sai - hiệp phương sai.
Một số giải pháp được nêu ra ở đây:
Sử dụng công cụ ước tính một bước,
Có rất nhiều lý thuyết hỗ trợ cho sự thiên vị, hiệu quả và tính khái quát thấp của các công cụ ước tính một bước. Thật dễ dàng để xác định một công cụ ước tính một bước trong R và kết quả thường rất thuận lợi cho dự đoán và suy luận. Và mô hình này sẽ không bao giờ phân kỳ, bởi vì trình vòng lặp (Newton-Raphson) đơn giản là không có cơ hội để làm như vậy!
fit.1s <- glm(y ~ x, family=binomial, control=glm.control(maxit=1))
summary(fit.1s)
Cung cấp:
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
Vì vậy, bạn có thể thấy các dự đoán phản ánh hướng của xu hướng. Và suy luận rất có tính gợi ý về các xu hướng mà chúng tôi tin là đúng.
thực hiện bài kiểm tra điểm số
Các Điểm (hoặc Rao) Thống kê khác với tỷ lệ khả năng và Wald thống kê. Nó không yêu cầu đánh giá phương sai theo giả thuyết thay thế. Chúng tôi phù hợp với mô hình theo 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
Trong cả hai trường hợp, bạn có suy luận về OR vô cực.
và sử dụng các ước tính trung bình không thiên vị cho khoảng tin cậy.
Bạn có thể tạo ra một tỷ lệ CI trung bình không thiên vị, 95% cho tỷ lệ chênh lệch vô hạn bằng cách sử dụng ước lượng không thiên vị trung vị. Gói epitools
trong R có thể làm điều này. Và tôi đưa ra một ví dụ về việc triển khai công cụ ước tính này ở đây: Khoảng tin cậy cho việc lấy mẫu Bernoulli