如何用emmeans包执行指定对比的对比?P值异常问题问询
解决emmeans中差异之差异检验P值全部相同的问题
嘿,我来帮你搞定这个困扰:你想用emmeans做不同时间点的差异之差异检验(也就是处理组差异在两个时间点的差值),但用pairs(LF)得到的所有P值都一模一样,这确实让人头疼。
先给你拆解下原因:从你的输出能看到,每个对比的z统计量绝对值都是1.1左右——比如Baseline和1个月的差异之差异,估计值是-0.157,标准误0.142,比值刚好是-1.1;Baseline和24个月的差异之差异,估计值-4.077,标准误3.693,比值还是-1.1。z统计量完全相同,对应的P值自然就一致了,这是你模型的协方差结构特性导致的,不是代码写错了哦。
接下来给你两种能拿到单独假设检验P值(随估计值变化)的方法:
方法1:直接构造差异之差异的对比
不用先做LF再跑pairs,直接在contrast()里定义你需要的差异之差异对比,这样更直接。比如你想检验每个时间点和基线的差异之差异,或者时间点之间的差异之差异,可以这么写:
# 直接定义差异之差异的对比组 diff_diff_contrasts <- contrast(mod_em, list( "1个月 vs 基线" = c(-1, 1, 1, -1, 0, 0, 0, 0, 0, 0), "7个月 vs 基线" = c(-1, 1, 0, 0, 1, -1, 0, 0, 0, 0), "13个月 vs 基线" = c(-1, 1, 0, 0, 0, 0, 1, -1, 0, 0), "24个月 vs 基线" = c(-1, 1, 0, 0, 0, 0, 0, 0, 1, -1), "7个月 vs 1个月" = c(0, 0, -1, 1, 1, -1, 0, 0, 0, 0) )) # 查看结果,关闭多重比较调整(或者按需选调整方法) summary(diff_diff_contrasts, adjust = "none")
这里的系数逻辑是:比如"1个月 vs 基线"的系数,其实就是(TX1-TX0在基线) - (TX1-TX0在1个月),刚好对应你要的差异之差异。
方法2:修改pairs()的多重比较设置
如果你还是想用pairs(LF)的方式,只需要给它加上adjust="none"参数,关闭多重比较调整,这样每个对比就会基于单独的z检验给出对应的P值:
# 关闭多重比较调整,获得每个对比的单独检验P值 pairs(LF, adjust = "none")
⚠️ 小提醒:关闭多重比较调整会增加一类错误的概率,如果你同时检验多个对比,建议考虑用adjust="bonferroni"这类调整方法,但这样P值会根据检验数量调整,和单独检验的结果会不一样,你可以按需选择。
内容的提问来源于stack exchange,提问作者LucaS
相关产品推荐
相关产品推荐

