Main Content

manova

Multivariate analysis of variance

Description

example

manovatbl = manova(rm) returns the results of multivariate analysis of variance (manova) for the repeated measures model rm.

example

manovatbl = manova(rm,Name,Value) also returns manova results with additional options, specified by one or more Name,Value pair arguments.

example

[manovatbl,A,C,D] = manova(___) also returns arrays A, C, and D for the hypotheses tests of the form A*B*C = D, where D is zero.

Examples

collapse all

Load the sample data.

load fisheriris

The column vector species consists of iris flowers of three different species: setosa, versicolor, virginica. The double matrix meas consists of four types of measurements on the flowers: the length and width of sepals and petals in centimeters, respectively.

Store the data in a table array.

t = table(species,meas(:,1),meas(:,2),meas(:,3),meas(:,4),...
'VariableNames',{'species','meas1','meas2','meas3','meas4'});
Meas = table([1 2 3 4]','VariableNames',{'Measurements'});

Fit a repeated measures model where the measurements are the responses and the species is the predictor variable.

rm = fitrm(t,'meas1-meas4~species','WithinDesign',Meas);

Perform multivariate analysis of variance.

manova(rm)
ans=8×9 table
     Within       Between      Statistic      Value        F       RSquare    df1    df2      pValue   
    ________    ___________    _________    _________    ______    _______    ___    ___    ___________

    Constant    (Intercept)    Pillai         0.99013    4847.5    0.99013     3     145    3.7881e-145
    Constant    (Intercept)    Wilks        0.0098724    4847.5    0.99013     3     145    3.7881e-145
    Constant    (Intercept)    Hotelling       100.29    4847.5    0.99013     3     145    3.7881e-145
    Constant    (Intercept)    Roy             100.29    4847.5    0.99013     3     145    3.7881e-145
    Constant    species        Pillai         0.96909    45.749    0.48455     6     292     2.4729e-39
    Constant    species        Wilks         0.041153    189.92    0.79714     6     290     2.3958e-97
    Constant    species        Hotelling       23.051    555.17    0.92016     6     288    4.6662e-155
    Constant    species        Roy              23.04    1121.3     0.9584     3     146    1.4771e-100

Perform multivariate anova separately for each species.

manova(rm,'By','species')
ans=12×9 table
     Within          Between          Statistic     Value        F       RSquare    df1    df2      pValue   
    ________    __________________    _________    ________    ______    _______    ___    ___    ___________

    Constant    species=setosa        Pillai         0.9823    2682.7     0.9823     3     145    9.0223e-127
    Constant    species=setosa        Wilks        0.017698    2682.7     0.9823     3     145    9.0223e-127
    Constant    species=setosa        Hotelling      55.504    2682.7     0.9823     3     145    9.0223e-127
    Constant    species=setosa        Roy            55.504    2682.7     0.9823     3     145    9.0223e-127
    Constant    species=versicolor    Pillai           0.97    1562.8       0.97     3     145    3.7058e-110
    Constant    species=versicolor    Wilks        0.029999    1562.8       0.97     3     145    3.7058e-110
    Constant    species=versicolor    Hotelling      32.334    1562.8       0.97     3     145    3.7058e-110
    Constant    species=versicolor    Roy            32.334    1562.8       0.97     3     145    3.7058e-110
    Constant    species=virginica     Pillai        0.97261    1716.1    0.97261     3     145    5.1113e-113
    Constant    species=virginica     Wilks        0.027394    1716.1    0.97261     3     145    5.1113e-113
    Constant    species=virginica     Hotelling      35.505    1716.1    0.97261     3     145    5.1113e-113
    Constant    species=virginica     Roy            35.505    1716.1    0.97261     3     145    5.1113e-113

Load the sample data.

load fisheriris

The column vector species consists of iris flowers of three different species: setosa, versicolor, virginica. The double matrix meas consists of four types of measurements on the flowers: the length and width of sepals and petals in centimeters, respectively.

Store the data in a table array.

t = table(species,meas(:,1),meas(:,2),meas(:,3),meas(:,4),...
'VariableNames',{'species','meas1','meas2','meas3','meas4'});
Meas = dataset([1 2 3 4]','VarNames',{'Measurements'});

Fit a repeated measures model where the measurements are the responses and the species is the predictor variable.

rm = fitrm(t,'meas1-meas4~species','WithinDesign',Meas);

Perform multivariate analysis of variance. Also return the arrays for constructing the hypothesis test.

[manovatbl,A,C,D] = manova(rm)
manovatbl=8×9 table
     Within       Between      Statistic      Value        F       RSquare    df1    df2      pValue   
    ________    ___________    _________    _________    ______    _______    ___    ___    ___________

    Constant    (Intercept)    Pillai         0.99013    4847.5    0.99013     3     145    3.7881e-145
    Constant    (Intercept)    Wilks        0.0098724    4847.5    0.99013     3     145    3.7881e-145
    Constant    (Intercept)    Hotelling       100.29    4847.5    0.99013     3     145    3.7881e-145
    Constant    (Intercept)    Roy             100.29    4847.5    0.99013     3     145    3.7881e-145
    Constant    species        Pillai         0.96909    45.749    0.48455     6     292     2.4729e-39
    Constant    species        Wilks         0.041153    189.92    0.79714     6     290     2.3958e-97
    Constant    species        Hotelling       23.051    555.17    0.92016     6     288    4.6662e-155
    Constant    species        Roy              23.04    1121.3     0.9584     3     146    1.4771e-100

A=2×1 cell array
    {[   1 0 0]}
    {2x3 double}

C = 4×3

     1     0     0
    -1     1     0
     0    -1     1
     0     0    -1

D = 0

Index into matrix A.

A{1}
ans = 1×3

     1     0     0

A{2}
ans = 2×3

     0     1     0
     0     0     1

Input Arguments

collapse all

Repeated measures model, returned as a RepeatedMeasuresModel object.

For properties and methods of this object, see RepeatedMeasuresModel.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: manovatbl = manova(rm,'WithinModel','separatemeans')

Model specifying the within-subjects hypothesis test, specified as one of the following:

  • 'separatemeans' — Compute a separate mean for each group, and test for equality among the means.

  • Model specification — This is a model specification in the within-subject factors. Test each term in the model. In this case, tbl contains a separate manova for each term in the formula, with the multivariate response equal to the vector of coefficients of that term.

  • An r-by-nc matrix, C, specifying nc contrasts among the r repeated measures. If Y represents the matrix of repeated measures you use in the repeated measures model rm, then the output tbl contains a separate manova for each column of Y*C.

Example: 'WithinModel','separatemeans'

Data Types: single | double | char | string

Single between-subjects factor, specified as the comma-separated pair consisting of 'By' and a character vector or string scalar. manova performs a separate test of the within-subjects model for each value of this factor.

For example, if you have a between-subjects factor, Drug, then you can specify that factor to perform manova as follows.

Example: 'By','Drug'

Data Types: char | string

Output Arguments

collapse all

Results of multivariate analysis of variance for the repeated measures model rm, returned as a table.

manova uses these methods to measure the contributions of the model terms to the overall covariance:

  • Wilks’ Lambda

  • Pillai’s trace

  • Hotelling-Lawley trace

  • Roy’s maximum root statistic

For details, see Multivariate Analysis of Variance for Repeated Measures.

manova returns the results for these tests for each group. manovatbl contains the following columns.

Column NameDefinition
WithinWithin-subject terms
BetweenBetween-subject terms
StatisticName of the statistic computed
ValueValue of the corresponding statistic
FF-statistic value
RSquareMeasure for variance explained
df1Numerator degrees of freedom
df2Denominator degrees of freedom
pValuep-value for the corresponding F-statistic value

Data Types: table

Specification based on the between-subjects model, returned as a matrix or a cell array. It permits the hypothesis on the elements within given columns of B (within time hypothesis). If manovatbl contains multiple hypothesis tests, A might be a cell array.

Data Types: single | double | cell

Specification based on the within-subjects model, returned as a matrix or a cell array. It permits the hypotheses on the elements within given rows of B (between time hypotheses). If manovatbl contains multiple hypothesis tests, C might be a cell array.

Data Types: single | double | cell

Hypothesis value, returned as 0.

Tips

  • The multivariate response for each observation (subject) is the vector of repeated measures.

  • To test a more general hypothesis A*B*C = D, use coeftest.

Version History

Introduced in R2014a