Я делаю линейную регрессию с данными, которые нуждаются в преобразовании, для этого я использую преобразование мощности Бокса-Кокса с последующим обратным преобразованием, чтобы написать отчет, используя исходную шкалу.Я пытался сделать это с пакетами emmeans
, и я следовал инструкциям, описанным в 1003 * виньетка пакетов , однако я обнаружил, что сводные результаты для оценочных средних не соответствуютвсе похоже на нетрансформированные данные.На самом деле, выход не преобразован вообще.
Вот воспроизводимый пример, использующий примеры из пакета emmeans
:
require(emmeans)
# Fit a model using an oddball transformation:
bctran <- make.tran("boxcox", 0.368)
warp.bc <- with(bctran,
lm(linkfun(breaks) ~ wool * tension, data = warpbreaks))
# Obtain back-transformed LS means:
emmeans(warp.bc, ~ tension | wool, type = "response")
# Fit a model without transformation:
warp <- lm(breaks ~ wool * tension, data = warpbreaks)
# Obtain LS means:
emmeans(warp, ~ tension | wool)
, который возвращает:
> emmeans(warp.bc, ~ tension | wool, type = "response")
wool = A:
tension emmean SE df lower.CL upper.CL
L 8.07 0.419 48 7.23 8.92
M 5.91 0.419 48 5.07 6.75
H 5.94 0.419 48 5.10 6.79
wool = B:
tension emmean SE df lower.CL upper.CL
L 6.45 0.419 48 5.61 7.29
M 6.53 0.419 48 5.69 7.37
H 5.22 0.419 48 4.38 6.07
Confidence level used: 0.95
> emmeans(warp, ~ tension | wool)
wool = A:
tension emmean SE df lower.CL upper.CL
L 44.6 3.65 48 37.2 51.9
M 24.0 3.65 48 16.7 31.3
H 24.6 3.65 48 17.2 31.9
wool = B:
tension emmean SE df lower.CL upper.CL
L 28.2 3.65 48 20.9 35.6
M 28.8 3.65 48 21.4 36.1
H 18.8 3.65 48 11.4 26.1
Confidence level used: 0.95
, когда на самом деле оценивается среднее значение для напряжения: L должно быть 42,37, рассчитывается по формуле:
> origin + (1 + param * pmax(eta))^(1/param)
> 0 + (1 + 0.368 * pmax(8.07))^(1/0.368)
[1] 42.37179
Есть ли что-то, что я упускаю или неправильно понимаю?