emmeans Не может обрабатывать объект класса "bigglm" в R
Я использую функцию "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)
Заранее спасибо.
1 ответ
Решение
Оказывается, объекты "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