Làm thế nào để có được giá trị p (ý nghĩa kiểm tra) của hiệu ứng trong mô hình hỗn hợp lme4?


56

Tôi sử dụng lme4 trong R để phù hợp với mô hình hỗn hợp

lmer(value~status+(1|experiment)))

trong đó giá trị là liên tục, trạng thái và thử nghiệm là các yếu tố và tôi nhận được

Linear mixed model fit by REML 
Formula: value ~ status + (1 | experiment) 
  AIC   BIC logLik deviance REMLdev
 29.1 46.98 -9.548    5.911    19.1
Random effects:
 Groups     Name        Variance Std.Dev.
 experiment (Intercept) 0.065526 0.25598 
 Residual               0.053029 0.23028 
Number of obs: 264, groups: experiment, 10

Fixed effects:
            Estimate Std. Error t value
(Intercept)  2.78004    0.08448   32.91
statusD      0.20493    0.03389    6.05
statusR      0.88690    0.03583   24.76

Correlation of Fixed Effects:
        (Intr) statsD
statusD -0.204       
statusR -0.193  0.476

Làm thế nào tôi có thể biết rằng ảnh hưởng của trạng thái là đáng kể? R chỉ báo cáo giá trị và không giá trị p .tp


1
Đi theo câu trả lời cung cấp cho câu hỏi này, người ta tự hỏi trong những gì thực sự OP là quan tâm ở đây: kiểm tra hệ số chống lại một null (vani -test một trong những hiện trong hồi quy tuyến tính thông thường chống lại một null H 0 : β = β rỗng ), hoặc thử nghiệm cho giảm thiểu phương sai ( F -test chúng ta nhận được từ nhiều loại ANOVA). Hai cái đó nhắm vào những thứ khác nhau. Một câu trả lời khai sáng, trong khi không phải về các mô hình hiệu ứng hỗn hợp, được tìm thấy ở đây . tH0:β=βnullF
Firebug

Câu trả lời:


61

Có rất nhiều thông tin về chủ đề này tại Câu hỏi thường gặp về GLMM . Tuy nhiên, trong trường hợp cụ thể của bạn, tôi sẽ đề nghị sử dụng

library(nlme)
m1 <- lme(value~status,random=~1|experiment,data=mydata)
anova(m1)

bởi vì bạn không cần bất kỳ thứ gì lmercung cấp (tốc độ cao hơn, xử lý các hiệu ứng ngẫu nhiên chéo, GLMM ...). lmesẽ cung cấp cho bạn chính xác các ước tính hệ số và phương sai tương tự nhưng cũng sẽ tính toán các giá trị df và p cho bạn (điều này có ý nghĩa trong một thiết kế "cổ điển" như bạn có). Bạn cũng có thể muốn xem xét thuật ngữ ngẫu nhiên ~status|experiment(cho phép thay đổi hiệu ứng trạng thái giữa các khối hoặc tương đương bao gồm cả tương tác giữa các thử nghiệm theo trạng thái). Áp phích ở trên cũng chính xác rằng tsố liệu thống kê của bạn lớn đến mức giá trị p của bạn chắc chắn sẽ <0,05, nhưng tôi có thể tưởng tượng bạn sẽ thích giá trị p "thực".


3
Tôi không biết về câu trả lời này. lmercó thể dễ dàng báo cáo các loại giá trị p giống nhau nhưng không vì lý do hợp lệ. Tôi đoán đó là nhận xét rằng có bất kỳ giá trị p "thực" nào ở đây làm tôi khó chịu. Bạn có thể lập luận rằng bạn có thể tìm thấy một điểm cắt có thể, và bất kỳ điểm cắt hợp lý nào cũng được thông qua. Nhưng bạn không thể tranh luận rằng có một giá trị p thực sự.
Giăng

11
Đối với một thiết kế cổ điển (cân bằng, lồng nhau, v.v.) Tôi nghĩ rằng tôi thực sự có thể lập luận rằng có một p-vaue thực sự, tức là xác suất nhận được ước tính beta về cường độ quan sát hoặc lớn hơn nếu giả thuyết null (beta = 0) là sai ... tôi tin rằng lme4 không cung cấp các mẫu số df này, bởi vì nói chung khó phát hiện hơn từ cấu trúc mô hình lme4 khi mô hình được chỉ định là một trong đó một số heuristic để tính toán mẫu số cổ điển df sẽ hoạt động ...
Ben Bolker

summary(m1)thay vào đó hãy thử (tôi sử dụng gói này với gói nlme)
jena

36

Bạn có thể sử dụng gói lmerTest . Bạn chỉ cần cài đặt / tải nó và các mô hình lmer được mở rộng. Vì vậy, ví dụ

library(lmerTest)
lmm <- lmer(value~status+(1|experiment)))
summary(lmm)
anova(lmm)

sẽ cung cấp cho bạn kết quả với giá trị p. Nếu giá trị p là dấu hiệu đúng thì hơi bị tranh chấp, nhưng nếu bạn muốn có chúng, đây là cách để có được chúng.


28

Nếu bạn có thể xử lý việc từ bỏ giá trị p ( và bạn nên ), bạn có thể tính tỷ lệ khả năng đại diện cho trọng số của bằng chứng về ảnh hưởng của trạng thái thông qua:

#compute a model where the effect of status is estimated
unrestricted_fit = lmer(
    formula = value ~ (1|experiment) + status
    , REML = F #because we want to compare models on likelihood
)
#next, compute a model where the effect of status is not estimated
restricted_fit = lmer(
    formula = value ~ (1|experiment)
    , REML = F #because we want to compare models on likelihood
)
#compute the AIC-corrected log-base-2 likelihood ratio (a.k.a. "bits" of evidence)
(AIC(restricted_fit)-AIC(unrestricted_fit))*log2(exp(1))

16
Lưu ý rằng tỷ lệ khả năng là không có triệu chứng, tức là không tính đến sự không chắc chắn trong ước tính phương sai còn lại ...
Ben Bolker

5
Tôi quan tâm đến dòng cuối cùng của bạn. Giải thích kết quả là gì? Có nguồn nào tôi có thể xem qua không?
mguzmann

13

Vấn đề là việc tính toán giá trị p cho các mô hình này không phải là nhỏ, xem phần này ở đây để các tác giả của lme4gói đã chọn không bao gồm giá trị p trong đầu ra. Bạn có thể tìm thấy một phương pháp tính toán những điều này, nhưng chúng không nhất thiết phải đúng.


9

Hãy xem xét những gì bạn đang hỏi. Nếu bạn chỉ muốn biết liệu giá trị p tổng thể cho hiệu ứng của trạng thái có vượt qua một số loại giá trị ngưỡng tùy ý, như 0,05, thì điều đó thật dễ dàng. Đầu tiên, bạn muốn tìm hiểu hiệu ứng tổng thể. Bạn có thể lấy nó từ anova.

m <- lmer(...) #just run your lmer command but save the model
anova(m)

Bây giờ bạn có một giá trị F. Bạn có thể lấy nó và tìm kiếm nó trong một số bảng F. Chỉ cần chọn mệnh giá thấp nhất có thể. bậc tự do. Điểm cắt sẽ có khoảng 20. F của bạn có thể lớn hơn thế nhưng tôi có thể sai. Ngay cả khi không, hãy xem số bậc tự do từ phép tính ANOVA thông thường ở đây bằng cách sử dụng số lượng thử nghiệm bạn có. Bám sát giá trị đó trong bạn xuống còn khoảng 5 cho một lần cắt. Bây giờ bạn dễ dàng vượt qua nó trong nghiên cứu của bạn. Df 'true' cho mô hình của bạn sẽ cao hơn thế bởi vì bạn đang mô hình hóa mọi điểm dữ liệu trái ngược với các giá trị tổng hợp mà ANOVA sẽ mô hình hóa.

Nếu bạn thực sự muốn một giá trị p chính xác thì không có điều đó trừ khi bạn sẵn sàng đưa ra tuyên bố lý thuyết về nó. Nếu bạn đọc Pinheiro & Bates (2001, và có lẽ một số cuốn sách khác về chủ đề này ... hãy xem các liên kết khác trong các câu trả lời này) và bạn đưa ra một lập luận cho một df cụ thể thì bạn có thể sử dụng nó. Nhưng dù sao bạn cũng không thực sự tìm kiếm một giá trị p chính xác. Tôi đề cập đến điều này bởi vì bạn không nên báo cáo giá trị p chính xác, chỉ có điều là mức cắt của bạn được thông qua.

Bạn thực sự nên xem xét câu trả lời của Mike Lawrence vì toàn bộ ý tưởng chỉ gắn với điểm vượt qua cho giá trị p là thông tin cuối cùng và quan trọng nhất để trích xuất từ ​​dữ liệu của bạn nói chung là sai (nhưng có thể không có trong trường hợp của bạn vì chúng tôi không ' t thực sự có đủ thông tin để biết). Mike đang sử dụng một phiên bản thú cưng của phép tính LR rất thú vị, nhưng có thể khó tìm thấy nhiều tài liệu về nó. Nếu bạn xem xét lựa chọn và giải thích mô hình bằng AIC, bạn có thể thích nó.


9

Chỉnh sửa: Phương pháp này không còn được hỗ trợ trong các phiên bản mới hơn của lme4. Sử dụng gói lmerTest như được đề xuất trong câu trả lời này của pbx101 .

Có một bài đăng trên danh sách R của tác giả lme4 về lý do tại sao giá trị p không được hiển thị. Ông đề nghị sử dụng các mẫu MCMC thay vào đó, mà bạn thực hiện bằng cách sử dụng p đạn.fnc từ gói ngôn ngữR:

library("lme4")
library("languageR")
model=lmer(...)
pvals.fnc(model)

Xem http://www2.hawaii.edu/~kdrager/MixedEffectsModels.pdf để biết ví dụ và chi tiết.


3
lme4 không còn hỗ trợ này. Bài đăng này có thể được cập nhật để những người rảnh rỗi phải tìm ra điều này giống như tôi vừa làm.
timothy.s.lau

5

Bạn có muốn biết liệu hiệu ứng kết hợp của statuscó ảnh hưởng đáng kể valuekhông? Nếu vậy, bạn có thể sử dụng Anovahàm trong cargói (không bị nhầm lẫn với anovahàm trong cơ sở R).

dat <- data.frame(
  experiment = sample(c("A","B","C","D"), 264, replace=TRUE), 
  status = sample(c("D","R","A"), 264, replace=TRUE), 
  value = runif(264)   
)
require(lme4)
(fm <- lmer(value~status+(1|experiment), data=dat))

require(car)
Anova(fm)

Có một cái nhìn ?Anovasau khi tải cargói.


Bất kỳ ý tưởng nào làm thế nào car::Anova()để tránh các vấn đề dính xung quanh tính toán giá trị p mà Michelle liên kết?
Mike Lawrence

Tôi không, nhưng tôi đoán là nó tránh được các vấn đề khó khăn bằng cách bỏ qua chúng! Đọc lại bài viết gốc, tôi cảm thấy rằng tôi có thể đã hiểu nhầm câu hỏi. Nếu OP muốn giá trị p chính xác cho các tham số hiệu ứng cố định, anh ấy sẽ gặp rắc rối. Nhưng nếu OP chỉ muốn biết liệu chúng có ý nghĩa hay không, tôi nghĩ rằng các giá trị t lớn hơn bất kỳ sự không chắc chắn nào về cách tính giá trị p chính xác. (Nói cách khác, chúng rất có ý nghĩa.)
smillig

1
Tôi nghĩ rằng đó chắc chắn là một ý tưởng tốt để chuyển hướng đến một tính toán ANOVA để tìm ra hiệu ứng tổng thể của các số liệu thống kê nhưng tôi không chắc chắn rằng giá trị p là tốt. Lệnh thông thường anovasẽ cung cấp cho bạn F.
Giăng

Tôi nghĩ rằng điều này là một chút stickier hơn rõ ràng. Chạy ANOVA là hợp lệ khi bạn muốn giảm thiểu phương sai, nhưng từ cách đặt câu hỏi tôi nghĩ OP muốn thiết lập hiệu ứng cận biên của các biến, tức là các hệ số kiểm tra đối với null.
Firebug

0

Chức năng pvals.fnckhông còn được hỗ trợ bởi lme4. Sử dụng gói lmerTest gói, có thể sử dụng phương pháp khác để tính giá trị p, chẳng hạn như các xấp xỉ của Kenward-Reller

model=lmer(value~status+1|experiment)
anova(model, ddf="Kenward-Roger")

0

Chỉ cần tải gói afex sẽ in các giá trị p trong đầu ra của hàm lmer từ gói lme4 (bạn không cần phải sử dụng afex; chỉ cần tải nó):

library(lme4)  #for mixed model
library(afex)  #for p-values

Điều này sẽ tự động thêm một cột giá trị p vào đầu ra của lmer (yourmodel) cho các hiệu ứng cố định.

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.