Cả hai khái niệm bạn đề cập (giá trị p và kích thước hiệu ứng của mô hình hỗn hợp tuyến tính) đều có vấn đề cố hữu. Liên quan đến kích thước hiệu ứng , trích dẫn Doug Bates, tác giả ban đầu của lme4
,
Giả sử rằng người ta muốn xác định thước đo , tôi nghĩ rằng có thể đưa ra một đối số để xử lý tổng bình phương còn lại bị phạt từ mô hình hỗn hợp tuyến tính giống như cách chúng ta xem xét tổng bình phương còn lại từ mô hình tuyến tính. Hoặc người ta có thể chỉ sử dụng tổng bình phương còn lại mà không bị phạt hoặc tổng bình phương tối thiểu có thể đạt được từ một tập hợp các thuật ngữ nhất định, tương ứng với ma trận chính xác vô hạn. Tôi thực sự không biết. Nó phụ thuộc vào những gì bạn đang cố gắng để đặc trưng.R2
Để biết thêm thông tin, bạn có thể nhìn vào chủ đề này , chủ đề này , và thông điệp này . Về cơ bản, vấn đề là không có một phương pháp nào được thống nhất để đưa vào và phân tách phương sai từ các hiệu ứng ngẫu nhiên trong mô hình. Tuy nhiên, có một vài tiêu chuẩn được sử dụng. Nếu bạn có một cái nhìn về Wiki được thiết lập cho / bởi danh sách gửi thư mô hình hỗn hợp r-sig , có một vài cách tiếp cận được liệt kê.
Một trong những phương pháp được đề xuất xem xét mối tương quan giữa các giá trị được trang bị và quan sát được. Điều này có thể được thực hiện trong R theo đề xuất của Jarrett Byrnes trong một trong những chủ đề đó:
r2.corr.mer <- function(m) {
lmfit <- lm(model.response(model.frame(m)) ~ fitted(m))
summary(lmfit)$r.squared
}
Vì vậy, ví dụ, giả sử chúng tôi ước tính mô hình hỗn hợp tuyến tính sau:
set.seed(1)
d <- data.frame(y = rnorm(250), x = rnorm(250), z = rnorm(250),
g = sample(letters[1:4], 250, replace=T) )
library(lme4)
summary(fm1 <- lmer(y ~ x + (z | g), data=d))
# Linear mixed model fit by REML ['lmerMod']
# Formula: y ~ x + (z | g)
# Data: d
# REML criterion at convergence: 744.4
#
# Scaled residuals:
# Min 1Q Median 3Q Max
# -2.7808 -0.6123 -0.0244 0.6330 3.5374
#
# Random effects:
# Groups Name Variance Std.Dev. Corr
# g (Intercept) 0.006218 0.07885
# z 0.001318 0.03631 -1.00
# Residual 1.121439 1.05898
# Number of obs: 250, groups: g, 4
#
# Fixed effects:
# Estimate Std. Error t value
# (Intercept) 0.02180 0.07795 0.280
# x 0.04446 0.06980 0.637
#
# Correlation of Fixed Effects:
# (Intr)
# x -0.005
Chúng ta có thể tính kích thước hiệu ứng bằng cách sử dụng hàm được xác định ở trên:
r2.corr.mer(fm1)
# [1] 0.0160841
Ω20
1-var(residuals(fm1))/(var(model.response(model.frame(fm1))))
# [1] 0.01173721 # Usually, it would be even closer to the value above
Đối với các giá trị p , đây là một vấn đề gây tranh cãi hơn nhiều (ít nhất là trong cộng đồng R / lme4
). Xem các cuộc thảo luận trong các câu hỏi ở đây , ở đây và ở đây trong số nhiều người khác. Tham khảo trang Wiki một lần nữa, có một vài cách tiếp cận để kiểm tra các giả thuyết về hiệu ứng trong các mô hình hỗn hợp tuyến tính. Được liệt kê từ "tệ nhất đến tốt nhất" (theo các tác giả của trang Wiki mà tôi tin bao gồm Doug Bates cũng như Ben Bolker, người đóng góp rất nhiều ở đây):
- Kiểm tra Wald Z
- Đối với các LMM cân bằng, lồng nhau trong đó df có thể được tính toán: Wald t-tests
- Kiểm tra tỷ lệ khả năng, bằng cách thiết lập mô hình sao cho tham số có thể được tách / bỏ (thông qua
anova
hoặc drop1
) hoặc thông qua các cấu hình khả năng tính toán
- MCMC hoặc khoảng tin cậy bootstrap tham số
Họ đề xuất phương pháp lấy mẫu Monte Carlo chuỗi Markov và cũng liệt kê một số khả năng để thực hiện điều này từ phương pháp giả và đầy đủ Bayes, được liệt kê dưới đây.
Giả-Bayesian:
- Lấy mẫu sau đại học, thường là (1) giả sử các linh mục phẳng và (2) bắt đầu từ MLE, có thể sử dụng ước lượng phương sai hiệp phương sai gần đúng để chọn phân phối ứng viên
- Thông qua
mcmcsamp
(nếu có sẵn cho vấn đề của bạn: tức là các LMM có hiệu ứng ngẫu nhiên đơn giản - không phải GLMM hoặc hiệu ứng ngẫu nhiên phức tạp)
Qua pvals.fnc
trong languageR
gói, một trình bao bọc cho mcmcsamp
)
- Trong AD Model Builder, có thể thông qua
glmmADMB
gói (sử dụng mcmc=TRUE
tùy chọn) hoặc R2admb
gói (viết định nghĩa mô hình của riêng bạn trong Trình tạo mô hình AD) hoặc bên ngoài R
- Thông qua
sim
chức năng từ arm
gói (chỉ mô phỏng hệ số sau cho các hệ số beta (hiệu ứng cố định)
Cách tiếp cận hoàn toàn Bayes:
- Qua
MCMCglmm
gói
- Sử dụng
glmmBUGS
(trình bao bọc WinBUGS / giao diện R của )
- Sử dụng JAGS / WinBUGS / OpenBUGS, v.v., thông qua
rjags
/ r2jags
/ R2WinBUGS
/BRugs
gói
Để minh họa cho thấy điều này có thể trông như thế nào, bên dưới là MCMCglmm
ước tính bằng cách sử dụng MCMCglmm
gói mà bạn sẽ thấy mang lại kết quả tương tự như mô hình trên và có một số loại giá trị p Bayesian:
library(MCMCglmm)
summary(fm2 <- MCMCglmm(y ~ x, random=~us(z):g, data=d))
# Iterations = 3001:12991
# Thinning interval = 10
# Sample size = 1000
#
# DIC: 697.7438
#
# G-structure: ~us(z):g
#
# post.mean l-95% CI u-95% CI eff.samp
# z:z.g 0.0004363 1.586e-17 0.001268 397.6
#
# R-structure: ~units
#
# post.mean l-95% CI u-95% CI eff.samp
# units 0.9466 0.7926 1.123 1000
#
# Location effects: y ~ x
#
# post.mean l-95% CI u-95% CI eff.samp pMCMC
# (Intercept) -0.04936 -0.17176 0.07502 1000 0.424
# x -0.07955 -0.19648 0.05811 1000 0.214
Tôi hy vọng điều này sẽ giúp phần nào. Tôi nghĩ rằng lời khuyên tốt nhất cho ai đó bắt đầu với các mô hình hỗn hợp tuyến tính và cố gắng ước tính chúng trong R là đọc các faq Wiki từ đó phần lớn thông tin này được rút ra. Nó là một nguồn tài nguyên tuyệt vời cho tất cả các loại chủ đề hiệu ứng hỗn hợp từ cơ bản đến nâng cao và từ mô hình hóa đến cốt truyện.
anova()
hàm để có được một bảng anova với các mô hình hỗn hợp tuyến tính giống như với các mô hình tuyến tính.