如何在嵌套模型的 emmeans 中使用转换后的参考网格?
How to use a transformed reference grid in emmeans from a nested model?
我一直在尝试使用对数转换的参考网格来获得 emmeans
的成对平均比率(遵循对先前问题 的建议解决方案)。
但是,我有一个嵌套模型,我不知道如何让函数 confint
和 pairs
处理从嵌套模型创建的对数转换参考网格模型。这是一个使用 emmeans messy data vignette:
中的嵌套示例的示例
cows <- data.frame (
route = factor(rep(c("injection", "oral"), c(5, 9))),
drug = factor(rep(c("Bovineumab", "Charloisazepam",
"Angustatin", "Herefordmycin", "Mollycoddle"), c(3,2, 4,2,3))),
resp = c(34, 35, 34, 44, 43, 36, 33, 36, 32, 26, 25, 25, 24, 24)
)
cows.lm <- lm(resp ~ route + drug, data = cows)
cows.lrg <- ref_grid(cows.lm, transform="log")
#NOTE: A nesting structure was detected in the fitted model:
# drug %in% route
confint(cows.lrg, type="response")
#Error in object@linfct[use.elts, , drop = FALSE] :
# (subscript) logical subscript too long
pairs(cows.lrg, type = "response", infer = c(TRUE, TRUE), adjust = "none")
#Error in x@linfct[i, , drop = FALSE] : subscript out of bounds
我做错了什么?
好的,我发现 regrid()
函数中有一个错误。如果你甚至做 summary(cows.lrg)
,你会得到一个错误。
问题是嵌套结构可能涉及参考网格中的一些“幻影”行,这些行未使用 regrid()
保留。这是一种绕过它的方法,但它并不漂亮:
cows.lrg@linfct = matrix(0, nrow = 10, ncol = 5)
cows.lrg@linfct[cows.rg@misc$display, ] = diag(5)
cows.lrg@misc$display = as.logical(cows.lrg@grid$.wgt.)
现在我们有
> summary(cows.lrg)
route drug prediction SE df
oral Angustatin 3.53 NA 9
injection Bovineumab 3.54 NA 9
injection Charloisazepam 3.77 NA 9
oral Herefordmycin 3.24 NA 9
oral Mollycoddle 3.19 NA 9
Results are given on the log (not the response) scale.
不幸的是,我们仍然没有有效的协方差值,使得 SE 全部 NA
。
我会努力解决这个问题,并在 GitHub 存储库中为 emmeans 更新它。可能需要一段时间;不幸的是,我今天早上刚刚将软件包的更新上传到 CRAN,根据墨菲的错误时机定律,它没有解决这个问题。
我一直在尝试使用对数转换的参考网格来获得 emmeans
的成对平均比率(遵循对先前问题
但是,我有一个嵌套模型,我不知道如何让函数 confint
和 pairs
处理从嵌套模型创建的对数转换参考网格模型。这是一个使用 emmeans messy data vignette:
cows <- data.frame (
route = factor(rep(c("injection", "oral"), c(5, 9))),
drug = factor(rep(c("Bovineumab", "Charloisazepam",
"Angustatin", "Herefordmycin", "Mollycoddle"), c(3,2, 4,2,3))),
resp = c(34, 35, 34, 44, 43, 36, 33, 36, 32, 26, 25, 25, 24, 24)
)
cows.lm <- lm(resp ~ route + drug, data = cows)
cows.lrg <- ref_grid(cows.lm, transform="log")
#NOTE: A nesting structure was detected in the fitted model:
# drug %in% route
confint(cows.lrg, type="response")
#Error in object@linfct[use.elts, , drop = FALSE] :
# (subscript) logical subscript too long
pairs(cows.lrg, type = "response", infer = c(TRUE, TRUE), adjust = "none")
#Error in x@linfct[i, , drop = FALSE] : subscript out of bounds
我做错了什么?
好的,我发现 regrid()
函数中有一个错误。如果你甚至做 summary(cows.lrg)
,你会得到一个错误。
问题是嵌套结构可能涉及参考网格中的一些“幻影”行,这些行未使用 regrid()
保留。这是一种绕过它的方法,但它并不漂亮:
cows.lrg@linfct = matrix(0, nrow = 10, ncol = 5)
cows.lrg@linfct[cows.rg@misc$display, ] = diag(5)
cows.lrg@misc$display = as.logical(cows.lrg@grid$.wgt.)
现在我们有
> summary(cows.lrg)
route drug prediction SE df
oral Angustatin 3.53 NA 9
injection Bovineumab 3.54 NA 9
injection Charloisazepam 3.77 NA 9
oral Herefordmycin 3.24 NA 9
oral Mollycoddle 3.19 NA 9
Results are given on the log (not the response) scale.
不幸的是,我们仍然没有有效的协方差值,使得 SE 全部 NA
。
我会努力解决这个问题,并在 GitHub 存储库中为 emmeans 更新它。可能需要一段时间;不幸的是,我今天早上刚刚将软件包的更新上传到 CRAN,根据墨菲的错误时机定律,它没有解决这个问题。