Làm thế nào tôi có thể kiểm tra xem một hiệu ứng ngẫu nhiên có ý nghĩa?


34

Tôi đang cố gắng để hiểu khi nào nên sử dụng một hiệu ứng ngẫu nhiên và khi nào không cần thiết. Ive đã nói với một quy tắc của ngón tay cái là nếu bạn có 4 nhóm / cá nhân trở lên mà tôi làm (15 con nai sừng tấm). Một số trong những con nai sừng tấm đã được thử nghiệm trên 2 hoặc 3 lần trong tổng số 29 thử nghiệm. Tôi muốn biết nếu họ cư xử khác nhau khi họ ở trong cảnh quan rủi ro cao hơn không. Vì vậy, tôi nghĩ rằng tôi sẽ đặt cá nhân là một hiệu ứng ngẫu nhiên. Tuy nhiên, bây giờ tôi được cho biết rằng không cần phải bao gồm cá nhân như một hiệu ứng ngẫu nhiên vì không có nhiều biến thể trong phản ứng của họ. Những gì tôi không thể tìm ra là làm thế nào để kiểm tra nếu thực sự có một cái gì đó được tính đến khi đặt cá nhân làm hiệu ứng ngẫu nhiên. Có thể một câu hỏi ban đầu là: Tôi có thể làm xét nghiệm / chẩn đoán nào để tìm hiểu xem Cá nhân có phải là biến giải thích tốt hay không và nó có phải là hiệu ứng cố định - lô qq không? biểu đồ? điểm phân tán? Và những gì tôi sẽ tìm kiếm trong các mẫu đó.

Tôi đã chạy mô hình với từng cá nhân như một hiệu ứng ngẫu nhiên và không có, nhưng sau đó tôi đọc http://glmm.wikidot.com/faq nơi họ nêu:

không so sánh các mô hình lmer với phù hợp lm tương ứng, hoặc glmer / glm; khả năng đăng nhập không tương xứng (nghĩa là chúng bao gồm các thuật ngữ phụ gia khác nhau)

Và ở đây tôi giả sử điều này có nghĩa là bạn không thể so sánh giữa một mô hình có hiệu ứng ngẫu nhiên hay không. Nhưng tôi thực sự sẽ không biết những gì tôi nên so sánh giữa họ.

Trong mô hình của tôi với hiệu ứng Ngẫu nhiên, tôi cũng đã cố gắng nhìn vào đầu ra để xem loại bằng chứng hoặc tầm quan trọng của RE có

lmer(Velocity ~ D.CPC.min + FD.CPC + (1|ID), REML = FALSE, family = gaussian, data = tv)

Linear mixed model fit by maximum likelihood 
Formula: Velocity ~ D.CPC.min + FD.CPC + (1 | ID) 
   Data: tv 
    AIC    BIC logLik deviance REMLdev
 -13.92 -7.087  11.96   -23.92   15.39
Random effects:
 Groups   Name        Variance Std.Dev.
 ID       (Intercept) 0.00000  0.00000 
 Residual             0.02566  0.16019 
Number of obs: 29, groups: ID, 15

Fixed effects:
              Estimate Std. Error t value
(Intercept)  3.287e-01  5.070e-02   6.483
D.CPC.min   -1.539e-03  3.546e-04  -4.341
FD.CPC       1.153e-04  1.789e-05   6.446

Correlation of Fixed Effects:
          (Intr) D.CPC.
D.CPC.min -0.010       
FD.CPC    -0.724 -0.437

Bạn thấy rằng phương sai và SD của tôi từ ID cá nhân là hiệu ứng ngẫu nhiên = 0. Làm thế nào là có thể? 0 có nghĩa là gì? Có đúng không? Vậy thì bạn tôi đã nói "vì không có biến thể sử dụng ID vì hiệu ứng ngẫu nhiên là không cần thiết" có đúng không? Vì vậy, sau đó tôi sẽ sử dụng nó như là một hiệu ứng cố định? Nhưng có phải thực tế là có quá ít biến thể có nghĩa là nó sẽ không cho chúng ta biết nhiều không?


Về việc có được một phương sai 0 chính xác của một hiệu ứng ngẫu nhiên, xem thống kê.stackexchange.com/questions/115090 .
amip nói rằng Phục hồi Monica

Câu trả lời:


21

Ước tính, IDphương sai = 0, chỉ ra rằng mức độ biến thiên giữa các nhóm là không đủ để đảm bảo kết hợp các hiệu ứng ngẫu nhiên trong mô hình; I E. mô hình của bạn đang suy thoái.

Khi bạn xác định chính xác bản thân: rất có thể, có; IDnhư một hiệu ứng ngẫu nhiên là không cần thiết. Vài điều mùa xuân đến để kiểm tra giả định này:

  1. Bạn có thể so sánh (sử dụng REML = Fluôn) AIC (hoặc IC yêu thích của bạn nói chung) giữa một mô hình có và không có hiệu ứng ngẫu nhiên và xem điều này diễn ra như thế nào.
  2. Bạn sẽ nhìn vào anova()đầu ra của hai mô hình.
  3. Bạn có thể thực hiện một bootstrap tham số bằng cách sử dụng phân phối sau được xác định bởi mô hình ban đầu của bạn.

Lưu ý rằng các lựa chọn 1 & 2 của bạn có một vấn đề: bạn đang kiểm tra một cái gì đó nằm trên ranh giới của không gian tham số để thực sự chúng không đúng về mặt kỹ thuật. Có nói rằng, tôi không nghĩ rằng bạn sẽ hiểu sai về họ và rất nhiều người sử dụng chúng (ví dụ Douglas Bates, một trong những nhà phát triển của lme4, sử dụng chúng trong cuốn sách của mình nhưng nói rõ điều này về các giá trị tham số đang được thử nghiệm trên ranh giới của tập hợp các giá trị có thể). Lựa chọn 3 là tẻ nhạt nhất trong số 3 nhưng thực sự mang đến cho bạn ý tưởng tốt nhất thực sự về những gì đang diễn ra. Một số người cũng muốn sử dụng bootstrap không tham số nhưng tôi nghĩ rằng thực tế là bạn đang đưa ra các giả định tham số để bắt đầu với bạn cũng có thể sử dụng chúng.


6
Gói RLRsim là một cách thực sự thuận tiện để kiểm tra các hiệu ứng ngẫu nhiên bằng cách sử dụng các thử nghiệm tỷ lệ khả năng dựa trên mô phỏng.
atrichornis

@atrichornis: +1. Gói thú vị; Tôi đa không biêt gi vê no. Tôi chỉ cần nhìn vào mã của nó, tôi có thể nói khá đơn giản. Tôi ước họ kết hợp nó (hoặc một cái gì đó tương tự) để lme4đặc biệt là bây giờ nó đã mcmcsamp()bị hỏng và mọi người chỉ còn lại các triển khai bootstrap ad-hoc của riêng họ để có được một số giá trị p tốt, v.v.
usεr11852 nói Phục hồi Monic

Đúng, các mô hình hỗn hợp không đơn giản trong R. Rất nhiều phép tính gần đúng và cách giải quyết ... Mặc dù tôi tập hợp SAS, v.v ... chỉ che giấu một số điều không chắc chắn tương tự? Ben Bolker là đồng tác giả trên cả hai gói, anh ta có thể có lý do của mình để không kết hợp nó. Có lẽ là thời gian!
atrichornis

4
Bootstrap trên ranh giới của không gian tham số có tập hợp các vấn đề và vấn đề riêng dẫn đến sự không nhất quán . Bootstrap không phải là thuốc chữa bách bệnh, và không nên ném vào túi một cách nhẹ nhàng với giả định rằng nó sẽ giải quyết mọi thứ.
StasK

2
Hãy xem, lập luận rất tinh tế. Theo như tôi có thể nhớ lại, thì thực tế là bạn đang thực hiện bootstrap từ một bản phân phối khác với null; và đưa ra các phân phối không chuẩn thu được trên ranh giới, các điều kiện đều đặn bị vi phạm và phân phối bootstrap không hội tụ đến mục tiêu. Tôi nghĩ bootstrap không tham số vẫn có thể được xây dựng ở đây bằng cách lấy ra các phương tiện còn lại của nhóm. Tuy nhiên, với sự vi phạm tính độc lập của các quan sát giữa các nhóm, một lớp biến chứng khác có thể phát sinh.
StasK

3

Tôi không chắc rằng cách tiếp cận mà tôi sẽ đề xuất là hợp lý, vì vậy những người biết nhiều hơn về chủ đề này sẽ sửa tôi nếu tôi sai.

Đề xuất của tôi là tạo một cột bổ sung trong dữ liệu của bạn có giá trị không đổi là 1:

IDconst <- factor(rep(1, each = length(tv$Velocity)))

Sau đó, bạn có thể tạo một mô hình sử dụng cột này làm hiệu ứng ngẫu nhiên của bạn:

fm1 <- lmer(Velocity ~ D.CPC.min + FD.CPC + (1|IDconst), 
  REML = FALSE, family = gaussian, data = tv)

Tại thời điểm này, bạn có thể so sánh (AIC) mô hình ban đầu của mình với hiệu ứng ngẫu nhiên ID(hãy gọi nó fm0) với mô hình mới không tính đến IDIDconsttất cả dữ liệu của bạn đều giống nhau.

anova(fm0,fm1)

Cập nhật

user11852 đã yêu cầu một ví dụ, bởi vì theo ý kiến ​​của anh ấy / cô ấy, cách tiếp cận trên thậm chí sẽ không thực hiện. Ngược lại, tôi có thể chỉ ra rằng phương pháp này hoạt động (ít nhất là với cách lme4_0.999999-0tôi đang sử dụng).

set.seed(101)
dataset <- expand.grid(id = factor(seq_len(10)), fac1 = factor(c("A", "B"),
  levels = c("A", "B")), trial = seq_len(10))
dataset$value <- rnorm(nrow(dataset), sd = 0.5) +
      with(dataset, rnorm(length(levels(id)), sd = 0.5)[id] +
      ifelse(fac1 == "B", 1.0, 0)) + rnorm(1,.5)
    dataset$idconst <- factor(rep(1, each = length(dataset$value)))

library(lme4)
fm0 <- lmer(value~fac1+(1|id), data = dataset)
fm1 <- lmer(value~fac1+(1|idconst), data = dataset)

anova(fm1,fm0)

Đầu ra:

  Data: dataset
  Models:
  fm1: value ~ fac1 + (1 | idconst)
  fm0: value ~ fac1 + (1 | id)

      Df    AIC    BIC  logLik  Chisq Chi Df Pr(>Chisq)
  fm1  4 370.72 383.92 -181.36                      
  fm0  4 309.79 322.98 -150.89 60.936      0  < 2.2e-16 ***

Theo thử nghiệm cuối cùng này, chúng ta nên giữ hiệu ứng ngẫu nhiên vì fm0mô hình có AIC thấp nhất cũng như BIC.

Cập nhật 2

Nhân tiện, cách tiếp cận tương tự này được đề xuất bởi NW Galwey trong 'Giới thiệu về mô hình hỗn hợp: Vượt ra ngoài hồi quy và phân tích phương sai' trên trang 213-214.


Bạn đã thử nghiệm ý tưởng của bạn? Vui lòng chứng minh tôi sai nhưng tôi nghĩ ý tưởng của bạn thậm chí sẽ không thực hiện. Nếu IDconstgiống nhau cho tất cả dữ liệu của bạn thì bạn không có bất kỳ nhóm nào. Bạn cần một yếu tố nhóm để có ít nhất một cấp độ được lấy mẫu và cách bạn thiết lập mô hình không có cấp độ nào. Tôi có thể tin vào lý do sử dụng một "nhóm ngẫu nhiên" nhưng đó là một trò chơi bóng khác nhau. Kiểm tra phương pháp của bạn với một số dữ liệu giả. Tôi tin tưởng mạnh mẽ rằng với thiết lập đề xuất của bạn lmer()sẽ không chạy. (Tôi sử dụng lme4_0.99999911-1)
usεr11852 nói Phục hồi Monic

@ user11852 Xin vui lòng, xem cập nhật của tôi và cho chúng tôi biết nếu phương pháp này cũng hoạt động với lme4_0.99999911-1.
VLC

Không, nó sẽ không hoạt động. Và tôi nói, " không nên " vì về mặt khái niệm bạn không có mô hình hỗn hợp để bắt đầu. (Xin lỗi tôi có thể nghe đến mãnh liệt trong bình luận trước đây của tôi.) Tôi đoán những gì bạn muốn để cố gắng đạt được thành lập ma trận là một véc tơ đơn nhất nhưng trừ khi bạn tìm thấy một cách để dứt khoát làm điều đó trong R (tức. Viết của bạn chức năng lệch lạc của riêng bạn) bạn đã hết may mắn. Z
usεr11852 nói Phục hồi Monic

3
Vâng, tôi đã làm những gì bạn đề nghị; nó sẽ không hoạt động / tính toán. Error in lFormula(formula = value ~ fac1 + (1 | idconst), data = dataset) : grouping factors must have at least 1 sampled level. Và như tôi đã nói, về mặt khái niệm nó là sai. Nó không phải là vấn đề lừa phần mềm để đưa ra một số con số, nó là một vấn đề nếu những gì bạn nói nó hợp lý. Bạn không có mô hình hỗn hợp thứ hai để so sánh với nếu trong mô hình đó, hiệu ứng ngẫu nhiên là bằng cách xây dựng một hằng số. Bạn cũng có thể loại trừ nó và thử một mô hình tuyến tính thay thế.
usεr11852 nói Phục hồi Monic

1
Cập nhật buổi hòa nhạc xác định một biến ngẫu nhiên nhóm duy nhất trong lme4. Điều này có thể được thực hiện nếu bạn đặt tùy chọn : control=lmerControl(check.nlev.gtr.1="ignore"). Ben Bolker đề cập đến nó ở đây: github.com/lme4/lme4/issues/411 .
Robin Beaumont

1

Tôi muốn trả lời câu hỏi 'ban đầu' hơn.

Nếu bạn nghi ngờ bất kỳ loại không đồng nhất nào trong số các biến phụ thuộc do một số yếu tố, bạn nên tiếp tục và vẽ dữ liệu bằng cách sử dụng biểu đồ phân tán và hộp. Một số mẫu phổ biến để kiểm tra, tôi đặt danh sách này dưới đây từ nhiều nguồn khác nhau trên web.

Mô hình không đồng nhất

Ngoài ra, vẽ biểu đồ biến phụ thuộc của bạn theo các yếu tố / nhóm điều trị để xem liệu có phương sai không đổi. Nếu không, bạn có thể muốn khám phá các hiệu ứng ngẫu nhiên hoặc hồi quy có trọng số. Ví dụ. biểu đồ dưới đây là một ví dụ về phương sai hình phễu trong các nhóm điều trị của tôi. Vì vậy, tôi chọn đi các hiệu ứng ngẫu nhiên và kiểm tra các hiệu ứng trên độ dốc và chặn.

Boxplot để kiểm tra sự không đồng nhất

Từ đây, các câu trả lời trên phục vụ cho câu hỏi chính của bạn. Ngoài ra còn có các xét nghiệm kiểm tra độ không đồng nhất, một trong số đó là ở đây - https://dergipark.org.tr/doad/article-file/94971 . Nhưng tôi không chắc có bất kỳ thử nghiệm nào tồn tại để phát hiện sự không đồng nhất ở cấp độ nhóm hay không.


Vui lòng chỉ sử dụng trường "Câu trả lời của bạn" để cung cấp câu trả lời cho câu hỏi của OP. CV là một trang web hỏi đáp nghiêm ngặt, không phải là một diễn đàn thảo luận. Phần sau, phần in đậm của bài đăng của bạn là một câu hỏi mới, không phải là câu trả lời cho câu hỏi này. Nếu bạn có một câu hỏi mới, nhấp vào màu xám ASK QUESTIONở trên cùng và hỏi nó ở đó. Vì bạn là người mới ở đây, bạn có thể muốn tham quan chúng tôi , nơi có thông tin cho người dùng mớ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.