ez (version 4.4-0)

ezANOVA: Compute ANOVA

Description

This function provides easy analysis of data from factorial experiments, including purely within-Ss designs (a.k.a. “repeated measures”), purely between-Ss designs, and mixed within-and-between-Ss designs, yielding ANOVA results, generalized effect sizes and assumption checks.

Usage

ezANOVA( data , dv , wid , within = NULL , within_full = NULL , within_covariates = NULL , between = NULL , between_covariates = NULL , observed = NULL , diff = NULL , reverse_diff = FALSE , type = 2 , white.adjust = FALSE , detailed = FALSE , return_aov = FALSE )

Arguments

data
Data frame containing the data to be analyzed.
dv
Name of the column in data that contains the dependent variable. Values in this column must be numeric.
wid
Name of the column in data that contains the variable specifying the case/Ss identifier. This should be a unique value per case/Ss.
within
Names of columns in data that contain predictor variables that are manipulated (or observed) within-Ss. If a single value, may be specified by name alone; if multiple values, must be specified as a .() list.
within_full
Same as within, but intended to specify the full within-Ss design in cases where the data have not already been collapsed to means per condition specified by within and when within only specifies a subset of the full design.
within_covariates
Names of columns in data that contain predictor variables that are manipulated (or observed) within-Ss and are to serve as covariates in the analysis. If a single value, may be specified by name alone; if multiple values, must be specified as a .() list.
between
Names of columns in data that contain predictor variables that are manipulated (or observed) between-Ss. If a single value, may be specified by name alone; if multiple values, must be specified as a .() list.
between_covariates
Names of columns in data that contain predictor variables that are manipulated (or observed) between-Ss and are to serve as covariates in the analysis. If a single value, may be specified by name alone; if multiple values, must be specified as a .() list.
observed
Names of columns in data that are already specified in either within or between that contain predictor variables that are observed variables (i.e. not manipulated). If a single value, may be specified by name alone; if multiple values, must be specified as a .() list. The presence of observed variables affects the computation of the generalized eta-squared measure of effect size reported by ezANOVA.
diff
Names of any variables to collapse to a difference score. If a single value, may be specified by name alone; if multiple values, must be specified as a .() list. All supplied variables must be factors, ideally with only two levels (especially if setting the reverse_diff argument to TRUE).
reverse_diff
Logical. If TRUE, triggers reversal of the difference collapse requested by diff. Take care with variables with more than 2 levels.
type
Numeric value (either 1, 2 or 3) specifying the Sums of Squares “type” to employ when data are unbalanced (eg. when group sizes differ). type = 2 is the default because this will yield identical ANOVA results as type = 1 when data are balanced but type = 2 will additionally yield various assumption tests where appropriate. When data are unbalanced, users are warned that they should give special consideration to the value of type. type=3 will emulate the approach taken by popular commercial statistics packages like SAS and SPSS, but users are warned that this approach is not without criticism.
white.adjust
Only affects behaviour if the design contains only between-Ss predictor variables. If not FALSE, the value is passed as the white.adjust argument to Anova, which provides heteroscedasticity correction. See Anova for details on possible values.
detailed
Logical. If TRUE, returns extra information (sums of squares columns, intercept row, etc.) in the ANOVA table.
return_aov
Logical. If TRUE, computes and returns an aov object corresponding to the requested ANOVA (useful for computing post-hoc contrasts).

Value

A list containing one or more of the following components: A list containing one or more of the following components:Some column names in the output data frames are abbreviated to conserve space:
DFn
Degrees of Freedom in the numerator (a.k.a. DFeffect).
DFd
Degrees of Freedom in the denominator (a.k.a. DFerror).
SSn
Sum of Squares in the numerator (a.k.a. SSeffect).
SSd
Sum of Squares in the denominator (a.k.a. SSerror).
F
F-value.
p
p-value (probability of the data given the null hypothesis).
p<.05 <="" td="">
Highlights p-values less than the traditional alpha level of .05.
ges
Generalized Eta-Squared measure of effect size (see in references below: Bakeman, 2005).
GGe
Greenhouse-Geisser epsilon.
p[GGe]
p-value after correction using Greenhouse-Geisser epsilon.
p[GGe]<.05 <="" td="">
Highlights p-values (after correction using Greenhouse-Geisser epsilon) less than the traditional alpha level of .05.
HFe
Huynh-Feldt epsilon.
p[HFe]
p-value after correction using Huynh-Feldt epsilon.
p[HFe]<.05 <="" td="">
Highlights p-values (after correction using Huynh-Feldt epsilon) less than the traditional alpha level of .05.

Warning

Prior to running (though after obtaining running ANCOVA regressions as described in the details section), dv is collapsed to a mean for each cell defined by the combination of wid and any variables supplied to within and/or between and/or diff. Users are warned that while convenient when used properly, this automatic collapsing can lead to inconsistencies if the pre-collapsed data are unbalanced (with respect to cells in the full design) and only the partial design is supplied to ezANOVA. When this is the case, use within_full to specify the full design to ensure proper automatic collapsing.

Details

ANCOVA is implemented by first regressing the DV against each covariate (after collapsing the data to the means of that covariate's levels per subject) and subtracting from the raw data the fitted values from this regression (then adding back the mean to maintain scale). These regressions are computed across Ss in the case of between-Ss covariates and computed within each Ss in the case of within-Ss covariates.

References

  • Bakeman, R. (2005). Recommended effect size statistics for repeated measures designs. Behavior Research Methods, 37 (3), 379-384.

See Also

ezBoot, ezMixed, ezPerm, ezPlot, ezStats

Examples

Run this code

#Read in the ANT data (see ?ANT).
data(ANT)
head(ANT)
ezPrecis(ANT)


#Run an ANOVA on the mean correct RT data.
rt_anova = ezANOVA(
    data = ANT[ANT$error==0,]
    , dv = rt
    , wid = subnum
    , within = .(cue,flank)
    , between = group
)

#Show the ANOVA and assumption tests.
print(rt_anova)

## Not run: 
# #Run an ANOVA on the mean correct RT data, ignoring group.
# rt_anova2 = ezANOVA(
#     data = ANT[ANT$error==0,]
#     , dv = rt
#     , wid = subnum
#     , within = .(cue,flank)
# )
# 
# #Show the ANOVA and assumption tests.
# print(rt_anova2)
# ## End(Not run)

#Run a purely between-Ss ANOVA on the mean_rt data.
#NOTE use of within_full to ensure that the data are
# collapsed properly
rt_anova3 = ezANOVA(
    data = ANT[ANT$error==0,]
    , dv = rt
    , wid = subnum
    , within_full = .(cue,flank)
    , between = group
)

#Show the ANOVA and assumption tests.
print(rt_anova3)


#add a within-Ss effect to be used as a covariate
ANT$rt2 = ANT$rt + ANT$block*1000 #additive with and independent of the other predictors!

## Not run: 
# #Run an anova that doesn't use the covariate
# rt_anova4a = ezANOVA(
#     data = ANT[ANT$error==0,]
#     , dv = rt2
#     , wid = subnum
#     , within = .(cue,flank)
#     , between = group
# )
# 
# #Show the ANOVA and assumption tests.
# # Note loss of power to observe the within effects
# print(rt_anova4a)
# ## End(Not run)

#Run an anova that does use the covariate
rt_anova4b = ezANOVA(
    data = ANT[ANT$error==0,]
    , dv = rt2
    , wid = subnum
    , within = .(cue,flank)
    , within_covariates = block
    , between = group
)

#Show the ANOVA and assumption tests.
# Note power to observe the within effects has returned
print(rt_anova4b)


#add a between-Ss effect to be used as a covariate
ANT$bc = as.numeric(as.character(ANT$subnum))%%10 #Note that the effect is balanced across groups
ANT$rt3 = ANT$rt + ANT$bc*1000 #additive with and independent of the other predictors!

## Not run: 
# #Run an anova that doesn't use the covariate
# rt_anova5a = ezANOVA(
#     data = ANT[ANT$error==0,]
#     , dv = rt2
#     , wid = subnum
#     , within = .(cue,flank)
#     , between = group
# )
# 
# #Show the ANOVA and assumption tests.
# # Note loss of power to observe the between effects
# print(rt_anova5a)
# ## End(Not run)

#Run an anova that does use the covariate
rt_anova5b = ezANOVA(
    data = ANT[ANT$error==0,]
    , dv = rt2
    , wid = subnum
    , within = .(cue,flank)
    , between = group
    , between_covariates = bc
)

#Show the ANOVA and assumption tests.
# Note power to observe the between effects has returned
print(rt_anova5b)

Run the code above in your browser using DataCamp Workspace