Làm thế nào người ta có thể làm một bài kiểm tra giả thuyết MCMC trên mô hình hồi quy hiệu ứng hỗn hợp với độ dốc ngẫu nhiên?


12

Ngôn ngữ thư việnR cung cấp một phương thức (p đạn.fnc) để thực hiện kiểm tra ý nghĩa MCMC của các hiệu ứng cố định trong mô hình hồi quy hiệu ứng hỗn hợp phù hợp bằng cách sử dụng lmer. Tuy nhiên, p đạn.fnc đưa ra lỗi khi mô hình lmer bao gồm các độ dốc ngẫu nhiên.

Có cách nào để làm một bài kiểm tra giả thuyết MCMC của các mô hình như vậy không?
Nếu vậy thì thế nào? (Để được chấp nhận một câu trả lời nên có một ví dụ hoạt động trong R) Nếu không, có lý do khái niệm / tính toán tại sao không có cách nào không?

Câu hỏi này có thể liên quan đến câu hỏi này nhưng tôi không hiểu rõ nội dung ở đó đủ chắc chắn.

Chỉnh sửa 1 : Một bằng chứng về khái niệm cho thấy p tỏ.fnc () vẫn thực hiện 'một cái gì đó' với các mô hình lme4, nhưng nó không làm gì với các mô hình độ dốc ngẫu nhiên.

library(lme4)
library(languageR)
#the example from pvals.fnc
data(primingHeid) 
# remove extreme outliers
primingHeid = primingHeid[primingHeid$RT < 7.1,]
# fit mixed-effects model
primingHeid.lmer = lmer(RT ~ RTtoPrime * ResponseToPrime + Condition + (1|Subject) + (1|Word), data = primingHeid)
mcmc = pvals.fnc(primingHeid.lmer, nsim=10000, withMCMC=TRUE)
#Subjects are in both conditions...
table(primingHeid$Subject,primingHeid$Condition)
#So I can fit a model that has a random slope of condition by participant
primingHeid.lmer.rs = lmer(RT ~ RTtoPrime * ResponseToPrime + Condition + (1+Condition|Subject) + (1|Word), data = primingHeid)
#However pvals.fnc fails here...
mcmc.rs = pvals.fnc(primingHeid.lmer.rs)

Nó nói: Lỗi trong p đạn.fnc (primingHeid.lmer.rs): Lấy mẫu MCMC chưa được triển khai trong lme4_0.999375 cho các mô hình có tham số tương quan ngẫu nhiên

Câu hỏi bổ sung: pval.fnc có hoạt động như mong đợi cho mô hình chặn ngẫu nhiên không? Có nên tin tưởng đầu ra?


3
(1) Tôi ngạc nhiên khi p đạn.fnc vẫn hoạt động; Tôi nghĩ rằng mcmcsamp (mà p đạn.fnc dựa vào) đã không hoạt động trong lme4 trong một thời gian khá lâu. Phiên bản nào của lme4 bạn đang sử dụng? . khoảng thời gian được hỗ trợ nhiều hơn) (4) mối quan hệ duy nhất giữa câu hỏi này và câu hỏi khác là 'MCMC' (nghĩa là không, thực tế)
Ben Bolker

Phiên bản lme4 tôi sử dụng phụ thuộc vào máy tính tôi đang ngồi. Bảng điều khiển này có lme4_0.999375-32, nhưng tôi hiếm khi sử dụng bảng này để phân tích. Tôi đã nhận thấy vài tháng trước rằng pval.fnc () đã tách ra các kết quả lme4 sau khi phân tích - Tôi đã xây dựng một công việc xung quanh nó vào thời điểm đó, nhưng dường như nó không còn là vấn đề nữa. Tôi sẽ phải hỏi một câu hỏi khác về điểm thứ 3 của bạn trong tương lai gần.
russellpierce

Câu trả lời:


4

Có vẻ như thông báo lỗi của bạn không phải là về độ dốc khác nhau, đó là về các hiệu ứng ngẫu nhiên tương quan. Bạn có thể phù hợp với không tương thích là tốt; đó là, một mô hình hiệu ứng hỗn hợp với các hiệu ứng ngẫu nhiên độc lập:

Linear mixed model fit by REML
Formula: Reaction ~ Days + (1 | Subject) + (0 + Days | Subject)
Data: sleepstudy

từ http://www.stat.wisc.edu/~bates/IMPS2008/lme4D.pdf


8

Đây (ít nhất là hầu hết) một giải pháp với MCMCglmm.

Đầu tiên phù hợp với mô hình chỉ đánh chặn tương đương với MCMCglmm:

library(MCMCglmm)
primingHeid.MCMCglmm = MCMCglmm(fixed=RT ~ RTtoPrime * ResponseToPrime + Condition, 
                                random=~Subject+Word, data = primingHeid)

So sánh sự phù hợp giữa MCMCglmmlmer, đầu tiên lấy phiên bản bị hack của tôi về arm::coefplot:

source(url("http://www.math.mcmaster.ca/bolker/R/misc/coefplot_new.R"))
  ## combine estimates of fixed effects and variance components
pp  <- as.mcmc(with(primingHeid.MCMCglmm, cbind(Sol, VCV)))
  ## extract coefficient table
cc1 <- coeftab(primingHeid.MCMCglmm,ptype=c("fixef", "vcov"))
  ## strip fixed/vcov indicators to make names match with lmer output
rownames(cc1) <- gsub("(Sol|VCV).", "", rownames(cc1))
  ## fixed effects -- v. similar
coefplot(list(cc1[1:5,], primingHeid.lmer))
  ## variance components -- quite different.  Worth further exploration?
coefplot(list(cc1[6:8,], coeftab(primingHeid.lmer, ptype="vcov")),
         xlim=c(0,0.16), cex.pts=1.5)

Bây giờ hãy thử nó với độ dốc ngẫu nhiên:

primingHeid.rs.MCMCglmm = MCMCglmm(fixed=RT ~ RTtoPrime * ResponseToPrime + Condition,
                                   random=~Subject+Subject:Condition+Word, 
                                   data = primingHeid)        
summary(primingHeid.rs.MCMCglmm)

Điều này mang lại một số loại "giá trị p MCMC" ... bạn sẽ phải tự mình khám phá và xem liệu toàn bộ điều này có hợp lý không ...


Cảm ơn Ben rất nhiều. Điều này có vẻ như nó sẽ chỉ cho tôi đi đúng hướng. Tôi chỉ cần dành một chút thời gian để đọc qua trợ giúp và các bài viết liên quan cho MCMCglmm để xem liệu tôi có thể quấn đầu xung quanh những gì đang xảy ra không.
russellpierce

1
Liệu mô hình độ dốc ngẫu nhiên trong trường hợp này có mối tương quan giữa độ dốc ngẫu nhiên và đánh chặn ngẫu nhiên, hoặc trong khung này là một ý tưởng vô nghĩa như vậy?
russellpierce

Tôi đã điều chỉnh mã của bạn ở đây để dễ đọc hơn, @Ben; nếu bạn không thích nó, cứ thoải mái quay lại với lời xin lỗi của tôi.
gung - Phục hồi Monica
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.