Как рассчитывается SE в пакете emmeans в R

Я заинтересован в расчете SE для смешанной модели. Для этого сначала я поиграю с одним из наборов данных, включенных в пакет, в более простой модели.

pigs$percent <- as.factor(pigs$percent)
Doc_lm_1 <- lm(conc~percent, pigs) 
summary(Doc_lm_1)
emmeans(Doc_lm_1, pairwise~percent)$emmeans

Выход:

percent emmean   SE df lower.CL upper.CL
9         32.7 2.92 25     26.7     38.7
12        38.0 2.76 25     32.3     43.7
15        40.1 3.12 25     33.7     46.6
18        39.9 3.70 25     32.3     47.6

Когда я пытаюсь использовать сбалансированные наборы данных, SE одинакова для всех групп и не соответствует ручной SE. Я думаю, что в этом случае это не имеет никакого значения для любого фактора, но он все равно должен соответствовать ручной работы SE

Может быть, SE это SE параметра? Как мы видим из таблицы, SE разбиваются между группами, когда данные не сбалансированы. Я основываю свою гипотезу на том факте, что на веб-сайте проекта крана пакета указывается ( https://cran.r-project.org/web/packages/emmeans/vignettes/basics.html):

Расчетные предельные средние значения основаны на модели, а не на данных

Поэтому я спрашивал меня, как рассчитывается SE? и как добавление случайного фактора изменит этот расчет? Заранее спасибо.

1 ответ

Чтобы ответить на конкретный вопрос, посмотрите на сводные результаты:

> summary(Doc_lm_1)
... several lines skipped ...
Residual standard error: 8.267 on 25 degrees of freedom
Multiple R-squared:  0.134, Adjusted R-squared:  0.03011 
F-statistic:  1.29 on 3 and 25 DF,  p-value: 0.2997

... из которого мы можем сказать, что остаточный SD от модели составляет 8,267. Кроме того, нам нужно количество наблюдений на каждом уровне факторов:

> with(pigs, tapply(conc, percent, length))
 9 12 15 18 
 8  9  7  5 

Поскольку SE среднего значения представляет собой SD, деленное на квадратный корень из размера выборки, рассчитайте:

> 8.267 / sqrt(c(8,9,7,5))
[1] 2.922826 2.755667 3.124632 3.697115

И вот, они соответствуют SE, показанным в emmeans() выход. Как указано в вопросе, emmeans() использует модель, и показанная модель основана на предположении, что все четыре образца имеют одинаковое SD, и оценка этого общего SD составляет 8,267 с 25 степенями свободы. Ручные расчеты, основанные на одной выборке за раз, используют отдельные SD, и это модель, отличная от той, которая была передана emmeans(); Вот почему результаты разные.

Что касается общего вопроса о том, как emmeans() рассчитывает SE, не использует формулы ручного расчета. Он использует тот факт, что EMM являются линейными комбинациями коэффициентов регрессии. Он выясняет, какие комбинации необходимы, а затем использует матричные вычисления с использованием коэффициентов регрессии из coef()и дисперсионно-ковариационная матрица этих коэффициентов, vcov(), чтобы получить EMM и их стандартные ошибки. Для моделей, включающих более одного фактора, случайные эффекты и т. Д., Эти расчеты практически невозможно воспроизвести вручную.

Другие вопросы по тегам