1

我运行了一个有序逻辑回归(使用R 包中的函数clmm ordinal),具有双因素交互作用和随机效应。响应是具有 5 个水平的因子(Liker 量表:1 2 3 4 5),自变量是具有 2 个水平的因子(时间)和具有 3 个水平的因子(组)

代码如下所示:

library(ordinal)

# dataset 

ID         time   group  response
person1      1      a       3
person2      1      a       5
person3      1      c       5
person4      1      b       2
person5      1      c       2
person6      1      a       4
person1      2      a       2
person2      2      a       2
person3      2      c       1
person4      2      b       4
person5      2      c       3
person6      2      a       4
...         ...    ...     ...

# model  

model <- clmm(response ~ time*group + (1|ID))

# model results

formula: response ~ time * group + (1 | ID)
data:    dataset

 link  threshold nobs logLik  AIC    niter     max.grad cond.H 
 logit flexible  168  -226.76 473.52 508(4150) 9.42e-05 1.8e+02

Random effects:
 Groups Name        Variance Std.Dev.
 ID     (Intercept) 5.18     2.276   
Number of groups:  ID 84 

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
time2                0.2837     0.5289   0.536  0.59170    
group_b              1.8746     0.6946   2.699  0.00695 ** 
group_c              4.0023     0.9383   4.265    2e-05 ***
time2:group_b       -0.5100     0.7294  -0.699  0.48447    
time2:group_c       -0.8830     0.9749  -0.906  0.36508    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Threshold coefficients:
    Estimate Std. Error z value
1|2  -2.6223     0.6440  -4.072
2|3   0.2474     0.5427   0.456
3|4   2.5384     0.5824   4.359
4|5   4.6786     0.7143   6.550

如您所见,模型结果仅显示与截距相比是否存在差异(即time1:group_a)。但是,我还感兴趣的是检查 time1:group_b 和 time2:group_b 之间的差异是否具有统计学意义,对于 group_c 也是如此。

由于我必须考虑随机效应,因此我不能使用简单的卡方检验来检查组间的统计显着差异。因此,我尝试从 R 包emmeans运行函数contrast,它使用函数emmeans的输出,请参见下面的代码:

library(emmeans)

em <- emmeans(model, ~ time | group) #calculates the estimated marginal means

contrast(em, "consec", simple = "each")

# contrast results

$`simple contrasts for time`
group = a:
 contrast estimate    SE  df z.ratio p.value
 2 - 1       0.284 0.529 Inf  0.536  0.5917 

group = b:
 contrast estimate    SE  df z.ratio p.value
 2 - 1      -0.226 0.482 Inf -0.470  0.6386 

group = c:
 contrast estimate    SE  df z.ratio p.value
 2 - 1      -0.599 0.816 Inf -0.734  0.4629 

Note: contrasts are still on the as.factor scale 

$`simple contrasts for group`
time = 1:
 contrast estimate    SE  df z.ratio p.value
 b - a        1.87 0.695 Inf 2.699   0.0137 
 c - b        2.13 0.871 Inf 2.443   0.0284 

time = 2:
 contrast estimate    SE  df z.ratio p.value
 b - a        1.36 0.687 Inf 1.986   0.0897 
 c - b        1.75 0.838 Inf 2.095   0.0695 

Note: contrasts are still on the as.factor scale 
P value adjustment: mvt method for 2 tests 

我的问题是:a)这是检查差异是否显着的正确有效方法吗?b)如果不是,那么正确的方法是什么?

当然,非常欢迎任何其他建议!非常感谢。

4

0 回答 0