Указание, что модель преобразована lo git для построения трендов с обратным преобразованием - PullRequest
0 голосов
/ 30 мая 2020

Я установил модель lme в R с преобразованной реакцией lo git. Мне не удалось найти прямую команду, которая выполняет преобразование lo git, поэтому я сделал это вручную.

logitr<-log(r/1-r)

Затем я использую это как ответ в моей модели lme с взаимодействием между двумя факторами и числовой переменной.

model<-lme(logitr<-factor1*factor2*numeric,random=1|random)

Теперь, очевидно, R не знает, что эта модель git преобразовано. Как я могу указать это для R?

Я безуспешно пытался:

update(model, tran="logit")

Причина, по которой я хочу указать, что модель преобразована в lo git, состоит в том, что я хочу Постройте результаты обратного преобразования, используя функцию emmip в пакете emmeans, показывая тенденции взаимодействия между моими переменными.

Обычно (если бы у меня были только факторы) я бы просто использовал:

update_refgrid_model<-update(ref_grid(model, tran="logit"))

Но этот подход не работает, когда я хочу использовать emmip для построения графика взаимодействия между числовой переменной и факторами. Если я укажу:

emmip(update_refgrid_model, factor1~numeric|factor2, cov.reduce = range, type = "response")

, тогда я не получу никаких графиков, а только оценку среднего уровня числовой переменной.

Итак, как я могу указать lo git преобразование и построение трендов обратного преобразования модели lme с факторами, взаимодействующими с числовыми переменными?

1 Ответ

1 голос
/ 02 июня 2020

Вы не обновляете объект модели, вы обновляете опорную сетку:

rg = update(ref_grid(model, cov.reduce = range), tran = "logit")
emmip(rg, factor1~numeric|factor2, type = "response")

Можно обновить модель другими вещами, только не преобразованием; это в методе update для объектов emmGrid.

Обновление

Вот пример, показывающий, как это работает

require(emmeans)
## Loading required package: emmeans

foo = transform(fiber, p = (strength - 25)/25)
foo.lm = lm(log(p/(1-p)) ~ machine*diameter, data = foo)

emm = emmeans(foo.lm, ~diameter|machine, 
              tran = "logit", at = list(diameter = 15:32))
## Warning in ref_grid(object, ...): There are unevaluated constants in the response formula
## Auto-detection of the response transformation may be incorrect

emmip(emm, machine ~ diameter)

emmip(emm, machine ~ diameter, type = "r")

Создано 02.06.2020 пакетом REPEX (v0.3.0)

...