Обидва згаданих вами концепції (p-значення та розміри ефектів лінійних змішаних моделей) мають властиві проблеми. Що стосується розміру ефекту , цитуючи Дуга Бейтса, оригінального автора lme4
,
Припускаючи, що хочеться визначити міру , я думаю, міг би бути зроблений аргумент для трактування пенізованої залишкової суми квадратів з лінійної змішаної моделі таким же чином, як ми вважаємо залишкову суму квадратів від лінійної моделі. Або можна використовувати лише залишкову суму квадратів без штрафу або мінімальну залишкову суму квадратів, яку можна отримати за заданим набором термінів, що відповідає нескінченній матриці точності. Я не знаю, насправді. Це залежить від того, що ви намагаєтесь охарактеризувати.R2
Для отримання додаткової інформації ви можете переглянути цю тему , цю нитку та це повідомлення . По суті, проблема полягає в тому, що не існує узгодженого способу включення та розкладання дисперсії від випадкових ефектів у моделі. Однак є кілька стандартів, які використовуються. Якщо ви подивитеся на налаштування Wiki для / за списком розсилки r-sig-змішаних моделей , перелічено кілька підходів.
Один із запропонованих методів розглядає співвідношення між придатними та спостережуваними значеннями. Це може бути реалізовано в R, як це запропонував Jarrett Byrnes в одній з цих ниток:
r2.corr.mer <- function(m) {
lmfit <- lm(model.response(model.frame(m)) ~ fitted(m))
summary(lmfit)$r.squared
}
Наприклад, скажімо, ми оцінюємо наступну лінійну змішану модель:
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
Ми можемо обчислити розмір ефекту за допомогою функції, визначеної вище:
r2.corr.mer(fm1)
# [1] 0.0160841
Аналогічна альтернатива рекомендується у статті Ронгхуй Сю , що називається , і може бути обчислена в R просто:Ω20
1-var(residuals(fm1))/(var(model.response(model.frame(fm1))))
# [1] 0.01173721 # Usually, it would be even closer to the value above
Щодо p-значень , це набагато більш спірне питання (принаймні, у R / lme4
співтоваристві). Дивіться дискусії в питаннях тут , тут і тут серед багатьох інших. Знову посилаючись на сторінку Wiki, існує кілька підходів до перевірки гіпотез про ефекти в лінійних змішаних моделях. Перелічено від "найгіршого до найкращого" (на думку авторів сторінки Вікі, на яку, на мою думку, входить Дуг Бейтс, а також Бен Болкер, який робить тут великий внесок):
- Wald Z-тести
- Для збалансованих, вкладених LMM, де можна обчислити df: Wald t-тести
- Тест на коефіцієнт ймовірності або встановивши модель, щоб параметр можна було ізолювати / відкидати (через
anova
або drop1
), або за допомогою обчислення ймовірності профілів
- MCMC або параметричні інтервали довіри завантаження
Вони рекомендують ланцюжок відбору проб Монте-Карло для ланцюга Маркова, а також перераховують низку можливостей для реалізації цього методу на основі псевдо та повністю байєсівських підходів, перелічених нижче.
Псевдо-байесівський:
- Post-hoc вибірки, як правило (1) припускаючи плоскі пріори та (2), починаючи з MLE, можливо, використовуючи приблизну оцінку дисперсії-коваріації для вибору кандидата-розподілу
- Via
mcmcsamp
(якщо вони доступні для вашої проблеми: тобто LMMS з простими випадковими ефект - не GLMMs або комплексними випадковими ефектами)
Via pvals.fnc
в languageR
пакеті, обгортка для mcmcsamp
)
- У AD Model Builder, можливо, через
glmmADMB
пакет (скористайтеся mcmc=TRUE
опцією) або R2admb
пакет (напишіть своє власне визначення моделі в AD Model Builder) або поза R
- Через
sim
функцію з arm
пакета (імітує задній лише для коефіцієнтів бета (фіксованого ефекту)
Повністю байєсівські підходи:
- Через
MCMCglmm
пакет
- Використання
glmmBUGS
( інтерфейс обгортки WinBUGS / R )
- Використання JAGS / WinBUGS / OpenBUGS тощо, через пакети
rjags
/ r2jags
/ R2WinBUGS
/BRugs
Для ілюстрації, щоб показати, як це може виглядати, нижче наведено MCMCglmm
оцінку за допомогою MCMCglmm
пакету, який ви побачите, що дає подібні результати, як у вищевказаній моделі та має деякі байєсівські p-значення:
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
Я сподіваюся, що це дещо допомагає. Я думаю, що найкраща порада для когось, починаючи з лінійних змішаних моделей і намагаючись їх оцінити в R, - це прочитати файли Wiki, звідки береться більшість цієї інформації. Це прекрасний ресурс для всіляких тем змішаних ефектів від базової до розширеної та від моделювання до побудови сюжетів.
anova()
функцію, щоб отримати таблицю anova з лінійними змішаними моделями так само, як і при лінійних моделях.