Đây có phải là một cách chấp nhận được để phân tích các mô hình hiệu ứng hỗn hợp với lme4 trong R không?


14

Tôi có một bộ dữ liệu đo lặp lại không cân bằng được thiết lập để phân tích và tôi đã đọc rằng cách mà hầu hết các gói thống kê xử lý việc này với ANOVA (tức là tổng bình phương loại III) là sai. Do đó, tôi muốn sử dụng mô hình hiệu ứng hỗn hợp để phân tích các dữ liệu này. Tôi đã đọc rất nhiều về các mô hình hỗn hợp trong R, nhưng tôi vẫn còn rất mới Rvà các mô hình hiệu ứng hỗn hợp và không tự tin rằng tôi đang làm đúng. Lưu ý rằng tôi chưa thể hoàn toàn tự ly hôn với các phương pháp "truyền thống" và vẫn cần giá trị và các bài kiểm tra sau đại học.p

Tôi muốn biết nếu cách tiếp cận sau đây có ý nghĩa, hoặc nếu tôi đang làm điều gì đó sai lầm khủng khiếp. Đây là mã của tôi:

# load packages
library(lme4)
library(languageR)
library(LMERConvenienceFunctions)
library(coda)
library(pbkrtest)

# import data
my.data <- read.csv("data.csv")

# create separate data frames for each DV & remove NAs
region.data <- na.omit(data.frame(time=my.data$time, subject=my.data$subject, dv=my.data$dv1))

# output summary of data
data.summary <- summary(region.data)

# fit model
# "time" is a factor with three levels ("t1", "t2", "t3")
region.lmer <- lmer(dv ~ time + (1|subject), data=region.data)

# check model assumptions
mcp.fnc(region.lmer)

# remove outliers (over 2.5 standard deviations)
rm.outliers <- romr.fnc(region.lmer, region.data, trim=2.5)
region.data <- rm.outliers$data
region.lmer <- update(region.lmer)

# re-check model assumptions
mcp.fnc(region.lmer)

# compare model to null model
region.lmer.null <- lmer(dv ~ 1 + (1|subject), data=region.data)
region.krtest <- KRmodcomp(region.lmer, region.lmer.null)

# output lmer summary
region.lmer.summary <- summary(region.lmer)

# run post hoc tests
t1.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)

region.lmer <- lmer(dv ~ relevel(time,ref="t2") + (1|subject), data=region.data)
t2.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)

region.lmer <- lmer(dv ~ relevel(time,ref="t3") + (1|subject), data=region.data)
t3.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)

# Get mcmc mean and 50/95% HPD confidence intervals for graphs
# repeated three times and stored in a matrix (not shown here for brevity)
as.numeric(t1.pvals$fixed$MCMCmean)
as.numeric(t1.pvals$fixed$HPD95lower)
as.numeric(t1.pvals$fixed$HPD95upper)
HPDinterval(as.mcmc(t1.pvals$mcmc),prob=0.5)
    HPDinterval(as.mcmc(t1.pvals$mcmc),prob=0.5)

Một số câu hỏi cụ thể tôi có:

  1. Đây có phải là một cách hợp lệ để phân tích các mô hình hiệu ứng hỗn hợp? Nếu không, tôi nên làm gì thay thế.
  2. Là các chỉ trích âm mưu đầu ra bởi mcp.fnc đủ tốt để xác minh các giả định mô hình, hoặc tôi nên thực hiện các bước bổ sung.
  3. Tôi hiểu rằng để các mô hình hỗn hợp là hợp lệ, dữ liệu cần phải có các giả định tôn trọng tính quy tắc và tính đồng nhất. Làm cách nào để tôi đánh giá thế nào là "gần như bình thường" và điều gì không phải bằng cách xem xét các âm mưu chỉ trích được tạo bởi mcp.fnc? Tôi chỉ cần cảm nhận về điều này, hay là một cách làm theo quy định của họ? Làm thế nào mạnh mẽ là mô hình hỗn hợp đối với các giả định này?
  4. Tôi cần đánh giá sự khác biệt giữa ba điểm thời gian cho ~ 20 đặc điểm (dấu ấn sinh học) của các đối tượng trong mẫu của tôi. Việc phù hợp và thử nghiệm các mô hình riêng biệt cho từng mô hình có thể chấp nhận được miễn là tôi báo cáo tất cả các thử nghiệm đã thực hiện (có ý nghĩa hay không) hoặc tôi cần bất kỳ hình thức chỉnh sửa nào cho nhiều so sánh.

Để chính xác hơn một chút liên quan đến thí nghiệm, đây là một số chi tiết. Chúng tôi đã theo dõi một số người tham gia theo chiều dọc khi họ trải qua điều trị. Chúng tôi đã đo một số dấu ấn sinh học trước khi bắt đầu điều trị và tại hai thời điểm sau đó. Những gì tôi muốn thấy là nếu có sự khác biệt trong các dấu ấn sinh học giữa ba thời điểm.

Tôi đang dựa trên hầu hết những gì tôi đang làm ở đây trong hướng dẫn này , nhưng đã thực hiện một số thay đổi dựa trên nhu cầu của tôi và những thứ tôi đọc được. Những thay đổi tôi đã thực hiện là:

  1. xem lại hệ số "thời gian" để có được các so sánh t1-t2, t2-t3 và t1-t3 với p đạn.fnc (từ gói ngôn ngữR)
  2. so sánh mô hình hỗn hợp của tôi với mô hình null bằng cách sử dụng thử nghiệm F gần đúng dựa trên cách tiếp cận của Kenward-Reller (sử dụng gói pbkrtest) thay vì thử nghiệm tỷ lệ khả năng (vì tôi đã đọc, rằng Kenward-Roger được đánh giá tốt hơn ngay bây giờ)
  3. Sử dụng gói LMERConvenienceFifts để kiểm tra các giả định và xóa các ngoại lệ (vì tôi đọc rằng các mô hình hỗn hợp rất nhạy cảm với các ngoại lệ)

1
(+1) (Các) câu hỏi được xây dựng chính xác (nhiều).
chl

Câu trả lời:


22

(Các) câu hỏi của bạn hơi "lớn", vì vậy tôi sẽ bắt đầu với một số nhận xét và mẹo chung.

Một số gói đọc và nền hữu ích

Có lẽ bạn nên xem qua một số giới thiệu hướng dẫn sử dụng các mô hình hỗn hợp, tôi khuyên bạn nên bắt đầu với Baayen et al (2008) - Baayen là tác giả của languageR. Barr et al (2013) thảo luận về một số vấn đề với cấu trúc hiệu ứng ngẫu nhiên và Ben Bolker là một trong những nhà phát triển hiện tại của lme4. Baayen et al đặc biệt tốt cho các câu hỏi của bạn vì họ dành nhiều thời gian để thảo luận về việc sử dụng các bài kiểm tra bootstrapping / hoán vị (những thứ phía sau mcp.fnc).

Văn chương

Florian Jaeger cũng có một loạt các công cụ về mặt thực tế của các mô hình hỗn hợp trên blog của phòng thí nghiệm của mình .

Ngoài ra còn có một số gói R hữu ích để trực quan hóa và thử nghiệm các mô hình hỗn hợp, như lmerTesteffects. Các effectsgói đặc biệt tốt đẹp bởi vì nó cho phép bạn vẽ hồi quy và sự tự tin khoảng thời gian tuyến tính đang diễn ra đằng sau hậu trường.

Mức độ phù hợp và so sánh các mô hình

plmerTest

anova()merχ2χ2p-giá trị để so sánh trực tiếp hai mô hình. Nhược điểm của điều này là nó không rõ ràng ngay mức độ phù hợp của bạn.

tsummary()|t|>2fixef()

Bạn cũng nên đảm bảo rằng không có hiệu ứng cố định nào của bạn có tương quan quá mạnh - tính đa hình vi phạm các giả định mô hình. Florian Jaeger đã viết một chút về điều này, cũng như một vài giải pháp có thể.

Nhiều so sánh

Tôi sẽ giải quyết câu hỏi của bạn # 4 một chút trực tiếp. Câu trả lời về cơ bản giống như thực hành tốt với ANOVA truyền thống, thật không may, đây dường như là một nơi có rất nhiều sự không chắc chắn cho hầu hết các nhà nghiên cứu. (Nó giống như ANOVA truyền thống vì cả hai mô hình hiệu ứng hỗn hợp tuyến tính và ANOVA đều dựa trên mô hình tuyến tính chung, chỉ là các mô hình hỗn hợp có thêm một thuật ngữ cho các hiệu ứng ngẫu nhiên.) Nếu bạn cho rằng các cửa sổ thời gian tạo ra một khác biệt và muốn so sánh ảnh hưởng của thời gian, bạn nên đưa thời gian vào mô hình của mình. Điều này, tình cờ, cũng sẽ cung cấp một cách thuận tiện để bạn đánh giá liệu thời gian có tạo ra sự khác biệt hay không: có hiệu ứng chính (cố định) cho thời gian không? Nhược điểm của việc đi tuyến đường này là mô hình của bạn sẽ phức tạp hơn rất nhiều và "siêu" duy nhất mô hình với thời gian là một paramater có thể sẽ mất nhiều thời gian hơn để tính toán hơn ba mô hình nhỏ hơn mà không có thời gian như một paramater. Thật vậy, ví dụ hướng dẫn cổ điển cho các mô hình hỗn hợp làsleepstudy trong đó sử dụng thời gian như một paramater.

tforeachlme4χ2

Nếu đặc điểm của bạn là biến phụ thuộc, thì bạn sẽ phải tính các mô hình khác nhau, và sau đó bạn có thể sử dụng AIC và BIC để so sánh kết quả.


Cảm ơn đã phản ứng chi tiết! Tôi đã đọc một số tài liệu tham khảo được cung cấp, nhưng chắc chắn sẽ xem xét những người khác. Theo như tôi hiểu về sự xấu xa của giá trị p, các nhà phê bình không may thường nghĩ khác (ít nhất là bây giờ). Theo khuyến cáo của Bates, tôi đang sử dụng lấy mẫu mcmc, từ hiểu biết của tôi đã vượt qua một phần của vấn đề (nghĩa là không thể ước tính chính xác mức độ tự do cho một mô hình lmer). Các đặc điểm là một DV, tôi sẽ thêm một số thông tin để làm rõ.
ダ ン ボ
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.