【问题标题】:Differences emmeans and manual comparisons when multiple pairwise interactions with common variable与公共变量的多个成对交互时的差异 emmeans 和手动比较
【发布时间】:2022-11-22 10:30:20
【问题描述】:

在计算分位数回归时,我试图提取成对差异R软件(4.2.1 版)。这埃米斯如果对中位数感兴趣,软件包(我使用的是 1.8.1-1 版)应该允许我提取这些差异,但我需要为其他百分位数计算它们,所以我想手动提取它们。但是,我无法获得与埃米斯,我无法在小插图或以前的帖子中找到解决方案埃米斯.

情况是这样的:我有三个变量。 var1 和 var2 是具有两个级别的分类(分别是 A 和 B,以及高和低)。另一个变量已按比例缩放(均值为 0,标准差为 1),因此估计值代表了对该变量进行平均时的效果。 var1 与 var2 和 var3_z 交互。然后我将估计值与输出进行了比较埃米斯,尤其是第一个,因为解释是直接的。如您所见(下面的代码),当 var2 为“Low”时,A 和 B 之间的差异为 1.36,但是埃米斯说它是 1.3(这不是一个舍入问题,在其他情况下它似乎工作得很好,这意味着我没有正确理解摘要)。

这是代码和输出。

总结结果

modelAll50 <- rq(output ~ var1 * var2 + var1 * var3_z, tau = 0.5, data = dfModelAllControl, method = "fn")
summary(modelAll50)

Call: rq(formula = output ~ var1 * var2 + var1 * var3_z, tau = 0.5, 
    data = dfModelAllControl, method = "fn")

tau: [1] 0.5

Coefficients:
               Value    Std. Error t value  Pr(>|t|)
(Intercept)     0.04322  0.01623    2.66359  0.00774
var1B           1.36359  0.19793    6.88936  0.00000
var2High        0.11678  0.04986    2.34223  0.01919
var3_z         -0.02829  0.01237   -2.28627  0.02226
var1B:var2High  6.60083  0.65356   10.09977  0.00000
var1B:var3_z   -0.18197  0.21099   -0.86245  0.38846

埃默斯结果

em <- emmeans(modelAll50, pairwise ~ var1 | var2)
pairs(em) %>%  confint()

var2 = Low:
 contrast estimate    SE    df lower.CL upper.CL
 A - B        -1.3 0.207 10023    -1.70   -0.895

var2 = High:
 contrast estimate    SE    df lower.CL upper.CL
 A - B        -7.9 0.626 10023    -9.13   -6.673

Results are averaged over the levels of: var3_z 
Confidence level used: 0.95 

当 var3 没有与 var1 交互,或者如果与 var1 以外的任何其他变量交互时,我没有这个问题。有人可以解释我做错了什么,无论是在我对摘要的理解中,还是在我的手动缩放和比较中,或者是埃米斯

【问题讨论】:

  • 您可以通过使用dput(dfModelAllControl) 提供您的数据集来发帖reproducible 吗?

标签: r regression interaction emmeans


【解决方案1】:

首先,as is documented,可选参数之一是tau,根据文档,它的默认值是

tau = "0.5"(必须与object$tau 中的条目匹配)

这允许您使用中位数以外的分位数,但您必须在拟合模型时指定所需的分位数。

其次,您显示的代码要求进行成对比较两次-- 通过公式中的 pairwise 并再次调用 pairs()。我建议您经常跳过 pairwise ~ 便利功能,并在需要时获得您想要的东西。

modelAll <- rq(output ~ var1 * var2 + var1 * var3_z, 
               tau = c(0.25, 0.5, 0.75), 
               data = dfModelAllControl, 
               method = "fn")

em25 <- emmeans(modelAll, ~ var1 | var2, tau = 0.25)
pairs(em25) |>  confint()

em50 <- emmeans(modelAll, ~ var1 | var2, tau = 0.50)
pairs(em50) |>  confint()

em75 <- emmeans(modelAll, ~ var1 | var2, tau = 0.75)
pairs(em75) |>  confint()

第三,var3_zvar1交互,这意味着var1的级别根据var3_z的值进行不同的比较。 var3_z 是一个数值预测器。如果您不指定,emmeans 选择将var3_z 设置为它的平均值。您可以使用 at 指定不同的值,例如

em75a <- emmeans(modelAll, ~ var1 | var2 * var3_z, tau = 0.75,
    at = list(var3_z = c(-1,0,1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2022-08-07
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多