Làm thế nào để đối phó với sự phân tách hoàn toàn trong một GLMM logistic?


8

Cập nhật : Vì bây giờ tôi biết rằng vấn đề của tôi được gọi là tách hoàn toàn, tôi đã cập nhật câu hỏi để phản ánh điều này (nhờ Aaron).


Tôi có một bộ dữ liệu từ một thử nghiệm trong đó 29 người tham gia (yếu tố code) làm việc cho một nhóm thử nghiệm và responselà 1 hoặc 0. Ngoài ra, chúng tôi đã thao tác các tài liệu để chúng tôi có ba yếu tố chéo, p.validity(hợp lệ so với không hợp lệ), type(khẳng định so với từ chối) và counterexamples(vài so với nhiều):

d.binom <- read.table("http://pastebin.com/raw.php?i=0yDpEri8")
str(d.binom)
## 'data.frame':   464 obs. of  5 variables:
##      $ code           : Factor w/ 29 levels "A04C","A14G",..: 1 1 1 1 1 1 1 1 1 1 ...
##      $ response       : int  1 1 1 1 0 1 1 1 1 1 ...
##      $ counterexamples: Factor w/ 2 levels "few","many": 2 2 1 1 2 2 2 2 1 1 ...
##      $ type           : Factor w/ 2 levels "affirmation",..: 1 2 1 2 1 2 1 2 1 2 ...
##      $ p.validity     : Factor w/ 2 levels "invalid","valid": 1 1 2 2 1 1 2 2 1 1 ...

Nhìn chung, chỉ có một số nhỏ 0s:

mean(d.binom$response)
## [1] 0.9504

Một giả thuyết cho rằng có một ảnh hưởng của validity, tuy nhiên, phân tích sơ bộ cho thấy có thể có ảnh hưởng của counterexamples. Vì tôi có dữ liệu phụ thuộc (mỗi người tham gia đã làm việc trên tất cả các thử nghiệm), tôi muốn sử dụng GLMM trên dữ liệu. Thật không may, counterexamplestách biệt hoàn toàn dữ liệu (ít nhất là cho một cấp):

with(d.binom, table(response, counterexamples))
##         counterexamples
## response few many
##        0   1   22
##        1 231  210

Điều này cũng được phản ánh trong mô hình:

require(lme4)
options(contrasts=c('contr.sum', 'contr.poly'))


m2 <- glmer(response ~ type * p.validity * counterexamples + (1|code), 
            data = d.binom, family = binomial)
summary(m2)
## [output truncated]
## Fixed effects:
##                                      Estimate Std. Error z value Pr(>|z|)
##   (Intercept)                            9.42     831.02    0.01     0.99
##   type1                                 -1.97     831.02    0.00     1.00
##   p.validity1                            1.78     831.02    0.00     1.00
##   counterexamples1                       7.02     831.02    0.01     0.99
##   type1:p.validity1                      1.97     831.02    0.00     1.00
##   type1:counterexamples1                -2.16     831.02    0.00     1.00
##   p.validity1:counterexamples1           2.35     831.02    0.00     1.00
##   type1:p.validity1:counterexamples1     2.16     831.02    0.00     1.00

Các lỗi tiêu chuẩn cho các tham số chỉ đơn giản là điên rồ. Vì mục tiêu cuối cùng của tôi là đánh giá xem các hiệu ứng nhất định có đáng kể hay không, các lỗi tiêu chuẩn không hoàn toàn không quan trọng.

  • Làm thế nào tôi có thể đối phó với sự tách biệt hoàn toàn? Điều tôi muốn là có được các ước tính từ đó tôi có thể đánh giá liệu một hiệu ứng nhất định có đáng kể hay không (ví dụ: sử dụng PRmodcomptừ gói pkrtest, nhưng đây là một bước khác không được mô tả ở đây).

Phương pháp tiếp cận sử dụng các gói khác cũng tốt.


2
Để giúp bạn bắt đầu, hãy thử điều này: ats.ucla.edu/stat/mult_pkg/faq/general/ mẹo
Aaron rời Stack Overflow

@Aaron Trông thật tuyệt. Đặt câu trả lời này vào câu trả lời ít nhất sẽ mang lại cho bạn một upvote ...
Henrik

Không thực sự là một câu trả lời, nhưng cảm ơn!
Aaron rời Stack Overflow

@Henrik Bạn cũng có thể upvote bình luận.
Peter Flom

Xem bài viết này của Paul Allison. Mặc dù ông nhấn mạnh đến SAS, những điểm tương tự sẽ được áp dụng trong các ngôn ngữ khác.
Peter Flom

Câu trả lời:


8

Tôi e rằng có một lỗi đánh máy trong tiêu đề của bạn: bạn không nên cố gắng phù hợp với các mô hình hỗn hợp, chứ đừng nói đến các mô hình hỗn hợp phi tuyến, chỉ với 30 cụm. Không trừ khi bạn tin rằng bạn có thể phù hợp với phân phối bình thường đến 30 điểm bị cản trở bởi lỗi đo lường, phi tuyến tính và phân tách gần như hoàn toàn (còn gọi là dự đoán hoàn hảo).

Những gì tôi sẽ làm ở đây là chạy nó như một hồi quy logistic thông thường với sự điều chỉnh của Firth :

library(logistf)
mf <- logistf(response ~ type * p.validity * counterexamples + as.factor(code),
      data=d.binom)

Sửa lỗi của Firth bao gồm thêm một hình phạt cho khả năng, và là một hình thức thu nhỏ. Theo thuật ngữ Bayes, các ước tính kết quả là các chế độ sau của mô hình với Jeffreys trước. Theo thuật ngữ thường xuyên, hình phạt là yếu tố quyết định của ma trận thông tin tương ứng với một quan sát duy nhất và do đó biến mất một cách không có triệu chứng.


4
Trên thực tế tôi tin vào việc phù hợp với các mô hình hỗn hợp với ít hơn 30 cụm. Nhưng phân tích có vẻ vẫn đầy hứa hẹn (+1). Hay là có phương pháp của Firth cho GLMM?
Henrik

2
Đúng vậy, bạn là người đam mê các yêu cầu kích thước mẫu tối thiểu ... Hiệu chỉnh của Firth chỉ hoạt động với dữ liệu iid. Bạn có thể tin vào bất cứ điều gì, nhưng tốt hơn hết là bạn nên chạy một số mô phỏng để xem liệu có bất kỳ niềm tin nào được đưa ra trong một tình huống dữ liệu nhất định hay không. Với bộ dữ liệu cân bằng hoàn hảo và phản hồi liên tục, nó có thể hoạt động tốt. Với bộ dữ liệu bị mất cân bằng nặng nề, về mặt phản hồi, bạn chỉ thấy phần đuôi bên trái của phân phối ngẫu nhiên của các hiệu ứng ngẫu nhiên và bạn có sẵn sàng đặt cược vào phần đuôi này được xấp xỉ bởi Laplace một điểm trong *lmer??? : - \
StasK

5

Bạn có thể sử dụng tối đa Bayesian một cách tiếp cận posteriori với điểm yếu trước các hiệu ứng cố định để có được hiệu ứng tương tự. Cụ thể, gói blme cho R (là một trình bao bọc mỏng xung quanh lme4gói) thực hiện điều này, nếu bạn chỉ định các mục sư cho các hiệu ứng cố định như trong ví dụ ở đây (tìm kiếm "tách hoàn toàn"):

cmod_blme_L2 <- bglmer(predation~ttt+(1|block),data=newdat,
                       family=binomial,
                       fixef.prior = normal(cov = diag(9,4)))

tttβΣ= =9TôiN(μ= =0,σ2= =9)σ= =3

Ví dụ được liên kết cho thấy bạn cũng có thể làm điều đó với MCMCglmmgói, nếu bạn muốn đi toàn Bayesian ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.