Як отримати p-значення (перевірити значення) ефекту в змішаній моделі lme4?


56

Я використовую lme4 в R, щоб відповідати змішаній моделі

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

де значення безперервне, статус і експеримент - це фактори, і я отримую

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

Як я можу знати, що вплив статусу є значним? R повідомляє тільки -значення, а не -значення.рtp


1
Проходячи відповіді на це запитання, задається питанням, що насправді тут цікавить ОП: тестування коефіцієнтів на нуль (ванільний тест робиться в регулярній лінійній регресії проти нуля ) або тестування на мінімізацію дисперсії ( -тест, який ми отримуємо з багатьох типів ANOVA). Ці два спрямовані на різні речі. Повчальний відповідь, в той час як моделі не про змішаних ефектів, знаходиться тут . H 0 : β = β нульовий FtH0:β=βnullF
Firebug

Відповіді:


61

На FAQ щодо GLMM є багато інформації на цю тему . Однак у вашому конкретному випадку я б запропонував використовувати

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

тому що вам не потрібен жоден із запропонованих матеріалів lmer(більша швидкість, поводження з перехрещеними випадковими ефектами, GLMM ...). lmeмає дати вам точно такий же коефіцієнт і дисперсії оцінок , але і обчислити ДФ та р-значення для вас (які роблять сенс в «класичної» конструкції , такі , як ви , здається, є). Ви також можете розглянути випадковий термін ~status|experiment(що дозволяє змінювати ефекти стану через блоки або рівнозначно включати взаємодію за станом експерименту). Плакати вище також підтверджують, що ваша tстатистика настільки велика, що ваше значення p неодмінно буде <0,05, але я можу уявити, що ви хотіли б "справжніх" p-значень.


3
Я не знаю про цю відповідь. lmerможе так само легко повідомляти про ті самі види p-значень, але не з поважних причин. Я думаю, це коментар, що тут є якісь "справжні" p-значення. Ви можете стверджувати, що ви можете знайти одне можливе обрізання і що будь-яке розумне обрізання прийнято. Але ви не можете стверджувати, що існує справжня р-величина.
Іван

11
Що стосується класичного дизайну (збалансованого, вкладеного тощо), я думаю, що я справді можу стверджувати, що існує справжня р-вау, тобто ймовірність отримання оцінки бета спостережуваної величини або більшої, якщо нульова гіпотеза (бета = 0) були помилковими ... lme4 не дає цих знаменника df, я вважаю, тому що важче виявити в цілому структуру моделі lme4, коли вказана модель є такою, де працюватиме деякий евристичний для обчислення класичного знаменника df ...
Бен Болкер

спробуйте summary(m1)замість цього (я використовую це з пакетом nlme)
jena

36

Ви можете використовувати пакет lmerTest . Ви просто встановите / завантажте його, і моделі lmer розширяться. Так, наприклад

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

дасть результати з р-значеннями. Якщо значення p є правильним показником, це трохи сумнівно, але якщо ви хочете їх мати, це спосіб їх отримати.


28

Якщо ви можете впоратися з відмовою від p-значень ( і вам слід ), ви можете обчислити коефіцієнт ймовірності, який би представляв вагу доказів для ефекту статусу за допомогою:

#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
Зауважте, що коефіцієнти ймовірності асимптотичні, тобто не враховують невизначеності в оцінці залишкової дисперсії ...
Бен Болкер,

5
Мене цікавить ваш останній рядок. Яка інтерпретація результату? Чи є джерела, на які я можу поглянути на це?
mguzmann

13

Проблема полягає в тому, що обчислення значень р для цих моделей не є тривіальним. Дивіться тут дискусію, тому автори lme4пакету навмисно вирішили не включати р-значення у вихід. Ви можете знайти метод їх обчислення, але вони не обов'язково будуть правильними.


9

Поміркуйте, що ви просите. Якщо ви просто хочете знати, чи загальне значення p для ефекту статусу передає якесь довільне значення відсічення, наприклад, 0,05, то це просто. По-перше, ви хочете з’ясувати загальний ефект. Ви могли це отримати від anova.

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

Тепер у вас є значення F. Ви можете взяти це і подивитися в деяких таблицях F. Просто виберіть найменший можливий номінал. ступенів свободи. Обрізання буде близько 20. Ваш F може бути більшим за це, але я можу помилитися. Навіть якщо це не так, подивіться кількість градусів свободи від звичайного обчислення ANOVA тут, використовуючи кількість експериментів. Додайте це значення у вас до приблизно 5 для відсікання. Тепер ви легко передаєте це у своєму дослідженні. 'Справжній' df для вашої моделі буде дещо вищим, ніж це, тому що ви моделюєте кожну точку даних, на відміну від сукупних значень, які буде моделювати ANOVA.

Якщо ви дійсно хочете точного р-значення, такого немає, якщо ви не готові зробити теоретичне твердження про це. Якщо ви читаєте Pinheiro & Bates (2001 р., А можливо, ще кілька книг на цю тему ... див. Інші посилання в цих відповідях) і ви переходите з аргументом для конкретного df, тоді ви можете це використовувати. Але ви все одно не шукаєте точного значення p. Я згадую про це, тому що ви не повинні повідомляти про точне p-значення, лише про те, що ваше скорочення передано.

Ви дійсно повинні розглянути відповідь Майка Лоуренса, оскільки вся ідея просто дотримуватися точки пропуску для p-значень як остаточної та найважливішої інформації, яку потрібно отримати з ваших даних, як правило, помилково (але, можливо, у вашому випадку це не буде, оскільки ми не ' t насправді достатньо інформації, щоб знати). Майк використовує домашню версію розрахунку LR, що цікаво, але може бути важко знайти багато документації на це. Якщо ви розглядаєте вибір та інтерпретацію моделі за допомогою AIC, вам це може сподобатися.


9

Редагувати: Цей спосіб більше не підтримується в нових версіях lme4. Використовуйте пакет lmerTest, як запропоновано у цій відповіді на адресу pbx101 .

Існує запис у списку R автором lme4 для чому не відображаються значення р. Він пропонує замість цього використовувати зразки MCMC, які ви робите за допомогою pvals.fnc з пакета languageR:

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

Див. Http://www2.hawaii.edu/~kdrager/MixedEffectsModels.pdf для прикладу та деталей.


3
lme4 більше не підтримує це. Цю публікацію можна було б оновити, щоб позбавити людей, які потребують цього, як я щойно.
timothy.s.lau

5

Вам цікаво дізнатися, чи має сукупний ефект statusсуттєвий вплив на value? Якщо так, ви можете використовувати Anovaфункцію в carпакеті (не плутати її з anovaбазовою функцією 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)

Перегляньте ?Anovaпісля завантаження carпакета.


Будь-яка ідея, як car::Anova()уникнути липких проблем, пов'язаних з обчисленням p-значень, на які посилається Мішель?
Майк Лоуренс

Я не знаю, але я здогадуюсь, що це уникає липких проблем, ігноруючи їх! Перечитавши оригінальний пост, я відчуваю, що, можливо, неправильно зрозумів питання. Якщо ОП бажає точних р-значень для параметрів фіксованих ефектів, він / він перебуває у біді. Але якщо ОП просто хоче знати, чи є вони значущими, я думаю, що значення t перевищують будь-яку невизначеність у тому, як буде розраховано точне p-значення. (Іншими словами, вони значні.)
smillig

1
Я думаю, що напевно було б гарною ідеєю перенаправити на обчислення ANOVA, щоб дізнатися загальний ефект статистики, але я не впевнений, що цінність p-значень хороша. Звичайна anovaкоманда дасть вам F.
Джон

Я думаю, що це трохи чіткіше, ніж очевидно. Запуск ANOVA є дійсним, коли ви хочете мінімізувати відхилення, але, виходячи з формулювання питання, я думаю, що ОП хоче встановити граничний ефект змінних, тобто коефіцієнтів тесту проти нуля.
Firebug

0

Функція pvals.fncбільше не підтримується lme4. Використовуючи пакет lmerTest, можна використовувати інший метод для обчислення р-значення, наприклад наближення Кенвард-Роджера

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

0

Просто завантаживши пакет afex, буде надруковано значення p у висновку функції lmer з пакету lme4 (вам не потрібно використовувати afex; просто завантажте його):

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

Це автоматично додасть стовпчик значення p до виводу lmer (вашамодель) для фіксованих ефектів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.