问题描述
我正在运行的对比的 p 值没有正确转换为 data.frame。这是为什么,我该如何解决?
emmeans 的控制台输出:
> pairs(emmeans(lmer.mod,~ Status*Stim*Treatment),simple = "each")
$`simple contrasts for Status`
Stim = 1,Treatment = None:
contrast estimate SE df t.ratio p.value
Control - Subclinical -0.24213 0.0571 57.5 -4.241 0.0002
Control - Clinical -0.16275 0.0571 57.5 -2.851 0.0164
Subclinical - Clinical 0.07938 0.0571 57.5 1.390 0.3526
emmeans 的 data.frame 的控制台输出:
> mod.EMM <- pairs(emmeans(lmer.mod,simple = "each")
> as.data.frame(mod.EMM)
Stim Treatment Status contrast estimate SE df t.ratio p.value
1 1 None . Control - Subclinical -0.242125000 0.05709000 57.46544 -4.24111052 3.680551e-03
2 1 None . Control - Clinical -0.162750000 0.05709000 57.46544 -2.85076195 2.721389e-01
3 1 None . Subclinical - Clinical 0.079375000 0.05709000 57.46544 1.39034857 1.000000e+00
可重现的示例:
model1 <- lm(uptake ~ Type + Treatment + conc + Type*Treatment,data=CO2)
library(emmeans)
pairs(emmeans(model1,~ Type*Treatment),simple="each")
# $`simple contrasts for Type`
# Treatment = nonchilled:
# contrast estimate SE df t.ratio p.value
# Quebec - Mississippi 9.38 1.85 79 5.068 <.0001
#
# Treatment = chilled:
# contrast estimate SE df t.ratio p.value
# Quebec - Mississippi 15.94 1.85 79 8.610 <.0001
#
#
# $`simple contrasts for Treatment`
# Type = Quebec:
# contrast estimate SE df t.ratio p.value
# nonchilled - chilled 3.58 1.85 79 1.934 0.0566
#
# Type = Mississippi:
# contrast estimate SE df t.ratio p.value
# nonchilled - chilled 10.14 1.85 79 5.477 <.0001
as.data.frame(pairs(emmeans(model1,simple="each"))
# Treatment Type contrast estimate SE df t.ratio p.value
# 1 nonchilled . Quebec - Mississippi 9.380952 1.851185 79 5.067538 1.036140e-05
# 2 chilled . Quebec - Mississippi 15.938095 1.851185 79 8.609670 2.252161e-12
# 3 . Quebec nonchilled - chilled 3.580952 1.851185 79 1.934410 2.265719e-01
# 4 . Mississippi nonchilled - chilled 10.138095 1.851185 79 5.476542 1.995066e-06
model1 <- lm(uptake ~ Type + Treatment + conc + Type*Treatment,data=CO2)
pairs(emmeans(model1,simple="each"))
# Treatment Type contrast estimate SE df t.ratio p.value
# 1 nonchilled . Quebec - Mississippi 9.380952 1.851185 79 5.067538 1.036140e-05
# 2 chilled . Quebec - Mississippi 15.938095 1.851185 79 8.609670 2.252161e-12
# 3 . Quebec nonchilled - chilled 3.580952 1.851185 79 1.934410 2.265719e-01
# 4 . Mississippi nonchilled - chilled 10.138095 1.851185 79 5.476542 1.995066e-06
来自外部帮助的更新:
“似乎pairs() 的结果本身并不是一个可以转换为数据框的emmGrid 对象,而是一个包含两个emmGrid 对象的列表。如果您从列表中按位置提取这些对象中的任何一个,请使用[[]],像这样,
pairs(emmeans(model1,simple = "each")[[2]]
然后你可以 data.frame() 每个结果,它会是正确的。您最终会得到两个不同的数据帧来保存涉及两个不同变量的对比,但这些数据帧中的每一个都包含正确的 p 值。”
我希望有人对这个问题有更好的解决方法,这样我就可以将所有对比组合到一个 data.frame 中。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)