来自 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")
现在一切正常。
直到今天我才了解到 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")
现在一切正常。