使用R中的ezANOVA输出进行计划的对比 [英] Planned contrasts using ezANOVA output in R
问题描述
我一直在研究使用计划的对比,而不是事后的t检验.我通常使用ezANOVA
(III型方差分析),但似乎目前不适合使用ezANOVA
进行计划的对比.
I've been looking into using planned contrasts as opposed to post-hoc t-tests. I typically use ezANOVA
(Type III ANOVA) but it seems that conducting planned contrasts using ezANOVA
is not currently catered for.
aov()
是I型ANOVA(我不想就哪种类型最适合哪种类型的设计进行辩论).直接使用aov()
进行计划的对比(用于组间设计)是很直接的,但是我想重复进行III型ANOVA,坦率地说,ezANOVA
具有更加人性化的输出.
aov()
on the other hand is a Type I ANOVA (I don't want to get into a debate about which type is best for which type of design). It is straight forward to conduct planned contrasts using aov()
(for between group designs) but I want to conduct a Type III ANOVA in a repeated measures and to be frank ezANOVA
has a much more user friendly output.
记住ezANOVA
可以选择包含return_aov = TRUE
,有人知道使用ezANOVA
提供的信息进行计划的对比的方法吗?
Bearing in mind ezANOVA
has the option to include return_aov = TRUE
does anyone know of a way to use the information provided by ezANOVA
to conduct planned contrasts?
注意: return_aov = TRUE
允许通过以下方式访问aov
的输出:
Note: return_aov = TRUE
allows access to the output of aov
via something along these lines:
summary.lm(ModelName$aov$'Participant:IndependentVariable1')
上面的
参与者是在ezANOVA
的wid
中添加的示例变量:
Participant above is an example variable added to wid
in ezANOVA
:
wid = .(Participant)
summary.lm()
通常在呈现aov
中计划的对比结果时使用,这是在方差分析组之间给予的,而不是重复进行的测量.
summary.lm()
is typically used when presenting the results of planned contrasts in aov
, granted between groups ANOVAs as opposed to repeated measures.
我对使用输出进行重复测量方差分析的计划对比特别感兴趣.
I'm particularly interested in using the output to conduct planned contrasts for repeated measures ANOVA.
赏金目标
我想通过赏金实现的目标:
Goals I would like to achieve from this bounty:
1)使用ezANOVA
的输出在重复测量方差分析中进行计划的对比.
1) Use the output of ezANOVA
to conduct planned contrasts in a repeated measures ANOVA.
1A)使用ezANOVA
的输出在受试者方差分析之间进行计划的对比(这一对比应该相对容易,因此不必索要赏金.)
1A) Use the output of ezANOVA
to conduct planned contrasts on between subjects ANOVA (this one should be relatively easy & therefore not a requisite to claim the bounty.)
任何虚拟数据都足够,但这是对ezANOVA
重复测量方差分析的格式的提醒:
Any dummy data should suffice but here is a reminder of the format for ezANOVA
repeated measures ANOVA:
ModelName <- ezANOVA(
data = DataSet,
dv = .(DependentVariable),
wid = .(Participant),
within = .(IndependentVariable1, IndependentVariable2),
type=3,
detailed = TRUE,
return_aov = TRUE)
这是具有可复制数据和代码的相关问题可以用于解决此问题.
This is a Related Question with reproducible data and code which can be used in relation to this problem.
您可以在此处找到在此处提供有关计划的一些背景信息对比及其作用.
You can find a PDF here giving some background on planned contrasts and what they do.
推荐答案
emmeans
软件包提供了适当的功能来计算aov
和aovlist
的估计边际均值(EMM)的自定义对比度/任意线性函数.对象(有关支持的完整列表,请参见此处楷模).
The emmeans
package provides the appropriate functionality to calculate custom contrasts/arbitrary linear functions of the estimates marginal means (EMMs) for aov
and aovlist
objects (see here for a full list of supported models).
在下面,我使用ez
软件包随附的ANT
数据集.
In the following I use the ANT
data set which comes with the ez
package.
首先,我们使用ezANOVA
设置混合阶乘方差分析.请注意,为了获得有意义的III型测试,需要设置正交对比(例如,参见John Fox的答案
First we set up a mixed factorial ANOVA using ezANOVA
. Note that one needs to set orthogonal contrasts in order to get meaningful Type-III tests (see, e.g., John Fox' answer here).
library("ez")
library("emmeans")
# set orthogonal contrasts
options(contrasts = c("contr.sum", "contr.poly"))
data(ANT)
rt_anova <- ezANOVA(data = ANT[ANT$error == 0, ],
dv = rt,
wid = subnum,
within = .(cue, flank),
between = group,
type = 3,
return_aov = TRUE)
然后我们可以计算出所有组-侧面组合的EMM.
We can then calculate the EMMs for, say all group-flank combinations.
emm <- emmeans(rt_anova$aov, ~ group * flank)
emm
## group flank emmean SE df lower.CL upper.CL
## Control Neutral 381.5546 1.735392 53.97 378.0753 385.0339
## Treatment Neutral 379.9286 1.735392 53.97 376.4493 383.4079
## Control Congruent 381.6363 1.735392 53.97 378.1570 385.1155
## Treatment Congruent 379.7520 1.735392 53.97 376.2727 383.2313
## Control Incongruent 466.6770 1.735392 53.97 463.1977 470.1563
## Treatment Incongruent 452.2352 1.735392 53.97 448.7559 455.7145
现在很容易计算这些EMM上的所有成对比较或任何所需的对比度.
另请参见这本书和我的回答此处,如果您需要更多有关如何从假设中得出对比度权重的详细信息.
Now it is easy to calculate all pairwise comparisons or any desired contrast on these EMMs.
See also this book chapter and my answer here if you need a bit more detail on how one can derive the contrasts weights from the hypotheses.
# all pairwise comparisons
pairs(emm, adjust = "Holm")
## contrast estimate SE df t.ratio p.value
## Control,Neutral - Treatment,Neutral 1.62594836 2.454215 53.97 0.663 1.0000
## Control,Neutral - Control,Congruent -0.08167403 2.473955 36.00 -0.033 1.0000
## Control,Neutral - Treatment,Congruent 1.80259257 2.454215 53.97 0.734 1.0000
## Control,Neutral - Control,Incongruent -85.12239797 2.473955 36.00 -34.407 <.0001
## Control,Neutral - Treatment,Incongruent -70.68062093 2.454215 53.97 -28.800 <.0001
## Treatment,Neutral - Control,Congruent -1.70762239 2.454215 53.97 -0.696 1.0000
## Treatment,Neutral - Treatment,Congruent 0.17664421 2.473955 36.00 0.071 1.0000
## Treatment,Neutral - Control,Incongruent -86.74834633 2.454215 53.97 -35.347 <.0001
## Treatment,Neutral - Treatment,Incongruent -72.30656929 2.473955 36.00 -29.227 <.0001
## Control,Congruent - Treatment,Congruent 1.88426660 2.454215 53.97 0.768 1.0000
## Control,Congruent - Control,Incongruent -85.04072394 2.473955 36.00 -34.374 <.0001
## Control,Congruent - Treatment,Incongruent -70.59894690 2.454215 53.97 -28.766 <.0001
## Treatment,Congruent - Control,Incongruent -86.92499054 2.454215 53.97 -35.419 <.0001
## Treatment,Congruent - Treatment,Incongruent -72.48321351 2.473955 36.00 -29.299 <.0001
## Control,Incongruent - Treatment,Incongruent 14.44177704 2.454215 53.97 5.884 <.0001
##
## Results are averaged over the levels of: cue
## P value adjustment: holm method for 15 tests
# custom contrasts
contrast(
emm,
list(c1 = c(1, -1, 0, 0, 0, 0), # reproduces first pairwise comparison
# emmean of row 1 - (emmean of row 1 + emmean of row 2) / 2; see EMMs table
# 381.5546 - (379.9286 + 381.6363) / 2
c2 = c(1, -0.5, -0.5, 0, 0, 0))
)
## contrast estimate SE df t.ratio p.value
## c1 1.6259484 2.454215 53.97 0.663 0.5105
## c2 0.7721372 2.136825 43.84 0.361 0.7196
纯属科目内部方差分析或科目间方差分析也是如此.
The same applies for purely within-subjects ANOVAs or between-subjects ANOVAs.
# within-subjects ANOVA
rt_anova_wi <- ezANOVA(data = ANT[ANT$error == 0, ],
dv = rt,
wid = subnum,
within = .(cue, flank),
type = 3,
return_aov = TRUE)
emm <- emmeans(rt_anova_wi$aov, ~ cue * flank)
contrast(
emm,
list(c1 = c(1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
c2 = c(1, -0.5, -0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0))
)
## contrast estimate SE df t.ratio p.value
## c1 47.31005 3.802857 170.34 12.441 <.0001
## c2 50.35320 3.293371 170.34 15.289 <.0001
# between-subjects ANOVA
rt_anova_bw <- ezANOVA(data = ANT[ANT$error == 0, ],
dv = rt,
wid = subnum,
within_full = .(cue, flank),
between = group,
type = 3,
return_aov = TRUE)
emm_bw <- emmeans(rt_anova_bw$aov, ~ group)
# custom linear function
contrast(
emm_bw,
list(c1 = c(2/3, 1/2))
)
## contrast estimate SE df t.ratio p.value
## c1 475.2899 0.8213448 18 578.673 <.0001
这篇关于使用R中的ezANOVA输出进行计划的对比的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!