来自 emmeans 包的 emmip 错误 - 未评估的常量

emmip error from emmeans package - unevaluated constants

直到今天我才了解到 R 的 emmeans 包。我正在制作一个类似于 emmip() 函数的 rdocumentation 的模型,但我似乎遇到了某种错误当我运行我自己的数据通过它的时候。我在我的数据和文档中的示例模型之间发现的主要区别是我使用 cbind() 作为我的二项式模型。也许这是罪魁祸首?

我不确定这个错误是什么意思,目前我还没有发现任何其他提及这些错误的地方,我也没有在帮助中看到任何说明 section/manual。关于我的数据有什么问题,或者错误可能意味着什么,有什么建议吗?

#dput of data
test<-structure(list(Mean = c(33, 91.5, 7, 68, 25.75, 101, 2, 47.75, 
                              26, 125, 6.75, 51.5), Factor1 = structure(c(2L, 2L, 1L, 1L, 2L, 
                                                                          2L, 1L, 1L, 2L, 2L, 1L, 1L), .Label = c("1400", "800"), class = "factor"), 
                     Factor2 = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
                                           2L, 1L, 2L), .Label = c("25", "31"), class = "factor")), row.names = c(NA, 
                                                                                                                  -12L), class = "data.frame")

#Creating a binomial generalized linear model of the above data
Mod_test<-glm(cbind(Mean*4, (800-(Mean*4)))  ~
                Factor1 * #Interactive effect of the factors
                Factor2,
              family = "binomial",
              data = test)

anova(Mod_test, test = "Chisq") #Confirming the factors are significant in their interaction

library(emmeans)
# On link scale: # This does create a plot, but produces an error
emmip(Mod_test, Factor1 ~ Factor2)

# On response scale: #This does not produce a plot, produces an additional error. 
emmip(Mod_test, Factor1 ~ Factor2, type = "response")

第一个命令不会产生错误,但会产生警告:“响应公式中有未计算的常量。Auto-detection 响应转换可能不正确。” 这是指模型的这一部分:

cbind(Mean*4, (800-(Mean*4)))

emmeans 不是为了处理这个参数的动态计算而构建的。只需事先计算一下:

test2 <- test
test2$Mean <- test2$Mean * 4
test2$Mean2 <- 800 - test2$Mean
Mod_test2 <- glm(
  cbind(Mean, Mean2) ~ Factor1 * Factor2,
  family = "binomial",
  data = test2
)

anova(Mod_test2, test = "Chisq")
emmip(Mod_test2, Factor1 ~ Factor2)
emmip(Mod_test2, Factor1 ~ Factor2, type = "response")

现在一切正常。