1

我在 R 中使用“bigglm”函数,我也想使用“emmeans”函数进行事后分析和绘图。然而,函数 em 意味着不能处理类“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)

先感谢您。

4

1 回答 1

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
于 2018-09-16T12:59:09.520 回答