emmeans Не может обрабатывать объект класса «bigglm» в R - PullRequest
0 голосов
/ 10 сентября 2018

Я использую функцию "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 Ответ

0 голосов
/ 16 сентября 2018

Оказывается, что объекты "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
...