emmeans无法处理R中“ bigglm”类的对象

时间:2018-09-09 22:38:39

标签: r class bigdata glm emmeans

我在R中使用“ bigglm”功能,我也想使用“ emmeans”功能进行事后分析和绘图。但是,emmeans函数无法处理“ bigglm”类的对象。

有没有一种方法可以从“ bigglm”类构造一个“ glm”类的对象?

这是一个例子

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 :(得分:0)

事实证明,“ 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