В чем разница между настройкой значений pvalues в функции «пары» и извлечением значений pvalues в вектор, а затем корректировкой, разные результаты

#r

#r

Вопрос:

Когда я корректирую значения в функции «pairs» и когда я извлекаю значения pvalues и корректирую, я получаю другой результат. Что на самом деле происходит в функции pairs? Есть ли правильный способ выполнить это?

 rm(list=ls())
id <- rep(1:5, each=3)
trt <- rep(LETTERS[1:3],5)
set.seed(1)
q1 <- runif(15)
set.seed(2)
q2 <- runif(15)
set.seed(3)
q3 <- runif(15)
 
df <- data.frame(id,trt,q1,q2,q3)
library(lme4)
lm <- lmer(formula= df[,3] ~trt   (1|id), data=df) 
Anova(lm)
emm <- emmeans(lm,"trt")
a <- pairs(emm) # no adjustment
a
 contrast estimate    SE df t.ratio p.value
 A - B      0.2085 0.134  8  1.560  0.3159 
 A - C     -0.0359 0.134  8 -0.269  0.9612 
 B - C     -0.2444 0.134  8 -1.829  0.2211 

Note: contrasts are still on the [ scale 
Degrees-of-freedom method: kenward-roger 
P value adjustment: tukey method for comparing a family of 3 estimates 

b <- pairs(emm, adjust="bonferroni") # adjust with bonferroni
b
 contrast estimate    SE df t.ratio p.value
 A - B      0.2085 0.134  8  1.560  0.4721 
 A - C     -0.0359 0.134  8 -0.269  1.0000 
 B - C     -0.2444 0.134  8 -1.829  0.3145 

Note: contrasts are still on the [ scale 
Degrees-of-freedom method: kenward-roger 
P value adjustment: bonferroni method for 3 tests 

e <- data.frame(a)
e <- e$p.value
e <- p.adjust(e, method="bonferroni") # extract p-values and adjust
e
[1] 0.9475749 1.0000000 0.6633197
  

Комментарии:

1. На выходе четко указано, что значения p в a корректируются. Используйте a <- pairs(emm, adjust = "none") , и все, как ожидалось.

2. @Roland Так рад обнаружить, что по крайней мере некоторые люди читают эти аннотации.