Как получить p-значения коэффициентов из модели вложенного случайного эффекта, используя lmeresampler - PullRequest
0 голосов
/ 11 октября 2019

Я оценил модель смешанного эффекта с вложенной структурой случайных эффектов (участники были в разных группах) с помощью команды lmer пакета lme4.
mixed.model <- lmer(ln.v ~ treatment*level+age+income+(1 | group/participant),data=data)
Затем я загрузил bootstrap команда из пакета lmeresampler из-за вложенной структуры. Я использовал полупараметрическую начальную загрузку.
boot.mixed.model <- bootstrap(model = mixed.model, type = "cgr", fn = extractor, B = 10000, resample=c(data$group,data$participant))
Я могу получить загруженные доверительные интервалы через boot.ci (пакет boot), но в дополнение я хочу сообщить о p-значениях коэффициентов. Выходные данные загруженной модели boot.mixed.model обеспечивают только смещение и стандартную ошибку:

Bootstrap Statistics :
         original        bias    std. error
t1*   0.658442415 -7.060056e-02  2.34685668
t2*  -0.452128438 -2.755208e-03  0.17041300
…

Каков наилучший способ вычисления значений p на основе этих значений?

1 Ответ

0 голосов
/ 12 октября 2019

Мне неизвестен пакет под названием lmeresampler, и он, похоже, был удален из cran из-за проблем совместимости (неудачные проверки крана).

Кроме того, вопрос не включает данные, и extractor не определен, поэтому пример не воспроизводим . Однако вывод такой же, как при использовании bootMer function from lme4, поэтому создайте и используйте, например, встроенную функцию.

В основном это следует примеру со страницы help(bootMer), но расширено для конкретной проблемы. Если объект, возвращаемый пакетом lmeresampler, похож, он будет содержать используемые объекты.

Воспроизводимый пример

library(lme4)
data(Dyestuff, package = "lme4")
fm01ML <- lmer(Yield ~ 1|Batch, Dyestuff, REML = FALSE)

Теперь для функции bootMer просто требуется функция, которая выводитвектор интересных параметров.

StatFun <- function(merMod){
    pars <- getME(merMod, c("fixef", "theta", "sigma"))
    c(beta = pars$fixef, theta = unname(pars$theta * pars$sigma), sigma = pars$sigma) ### <<== Error corrected
}

Мы можем выполнить нашу загрузку с помощью bootMer, который также содержит параметрические параметры в type (я предлагаю прочитать подробности на странице help(bootMer) для получения дополнительной информации)

boo01 <- bootMer(fm01ML, StatFun, nsim = 100, seed = 101)

Теперь для более точных p-значений я бы посоветовал p-значения более близкие к 1000, но по временным причинам это может оказаться невозможным при всех обстоятельствах.

Независимо от того, что выходные данные хранятся вматрица t, которую мы можем использовать для выполнения простого теста Колмогорова-Супремума:

H0 <- c(0, 0, 0)
Test <- sweep(abs(boo01$t), 2, H0, "-") <= H0 ###<<=== Error corrected
pVals <- colSums(Test)/nrow(Test)
print(pVals)
#output#
beta.(Intercept)            theta            sigma 
            0.00             0.12             0.00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...