Я использую функцию «bigglm» в R, и я также хотел бы использовать функцию «emmeans» для проведения апостериорного анализа и построения графиков. Однако функция emmeans не может обрабатывать объект класса bigglm.
Есть ли способ построить объект класса "glm" из класса "bigglm"?
Вот пример
library(biglm)
library(emmeans)
data(trees)
trees$f <- factor(rep(c("A","B"),length.out = nrow(trees)))
ff <-log(Volume)~f
a <- glm(ff,data=trees)
summary(a)
emmeans(a,~f)
b <- bigglm(ff,data=trees, chunksize=10)
summary(b)
emmeans(b,~f)
Заранее спасибо.
Идеально!! Большое тебе спасибо!!
Будьте осторожны с аргументом linfct
- его сложнее всего понять, потому что он представляет собой кодирование контраста для каждого узла в опорной сетке.
Да, я застрял в этом аргументе, потому что мне не удалось извлечь (или вывести) линейную комбинацию bhat для каждой комбинации уровней. Кроме того, я не знаю, что делать, если у меня есть непрерывная переменная-предиктор.
Может быть, подогнать ту же модель к подмножеству данных, используя lm()
, а затем получить emmeans(...)@linfct
. Но ваше подмножество должно включать все комбинации факторов.
Пожалуйста, посмотрите мой ответ для одного обходного пути. Еще одна функция - qdrg()
(быстрая и грязная справочная сетка), которую я только что добавил в пакет. Доступен с github - github.com/rvlenth/emmeans
Оказывается, объекты biglm и bigglm очень похожи на объекты lm и glm, с небольшими изменениями в их структуре. Получается, что все, что нам нужно сделать, это заставить emmeans
думать, что это один из них. Вот утилита для этого:
as.glm = function(mod) {
mod$coefficients = coef(mod)
mod$df.residual = mod$df.resid
class(mod) = c(class(mod), "glm", "lm")
mod
}
Теперь получаем:
> emmeans(as.glm(b), "f")
f emmean SE df asymp.LCL asymp.UCL
A 3.288124 0.1337527 Inf 3.025974 3.550275
B 3.256313 0.1381392 Inf 2.985565 3.527061
Confidence level used: 0.95
Возможно, функция
emmobj()
может быть использована для создания того, что вам нужно, если вы сможете получить необходимую информацию (коэффициенты, ковариации и т. д.)