# manova

## Description

A `manova`

object contains the results of a one-, two-, or N-way
MANOVA. Use the properties of a `manova`

object to determine if the vector of
means in a set of response data differs with respect to the values (levels) of a factor or
multiple factors. The object properties include information about the coefficient estimates,
MANOVA model fit to the response data, and factors used to perform the analysis. For more
information about MANOVA, see Multivariate Analysis of Variance for Repeated Measures.

## Creation

### Syntax

### Description

uses the variables in `maov`

= manova(`tbl`

,`ResponseVarNames`

)`tbl`

as factors and response variables. The
`ResponseVarNames`

argument specifies which variables contain the
response data.

specifies the MANOVA model in Wilkinson notation. The terms of
`maov`

= manova(`tbl`

,`formula`

)`formula`

use only the variable names in
`tbl`

.

specifies options using one or more name-value arguments in addition to any of the input
argument combinations in previous syntaxes. For example, you can specify which test
statistic to calculate, which factors are categorical, and the MANOVA model type. `maov`

= manova(___,`Name=Value`

)

### Input Arguments

`Y`

— Response data

numeric matrix | numeric vector

Response data, specified as a numeric matrix or numeric vector. Each column of
`Y`

corresponds to a separate response variable. You must also
specify factor values by passing the `factors`

or
`tbl`

input argument to `manova`

.
`Y`

must have the same number of rows as the input argument
containing the factor values, because `manova`

assigns factor
values to response data by row index.

The following example shows how `manova`

assigns factor
values to response data for a one-way MANOVA:

$$\begin{array}{ccccccccccc}y& =& [& {\overrightarrow{y}}_{1};& {\overrightarrow{y}}_{2};& {\overrightarrow{y}}_{3};& {\overrightarrow{y}}_{4};& {\overrightarrow{y}}_{5};& \cdots ;& {\overrightarrow{y}}_{N}& ]\\ & & & \uparrow & \uparrow & \uparrow & \uparrow & \uparrow & & \uparrow & \\ g& =& [& "A";& "A";& "C";& "B";& "B";& \cdots ;& "D"& ]\end{array}$$

In this example, *g* contains the factor values,
*y* contains the response data, and $$\begin{array}{cccccccc}{\overrightarrow{y}}_{i}& =& [& {y}_{i,1},& {y}_{i,2},& \dots ,& {y}_{i,R}& ]\end{array}$$ is a row vector of response data for the *i*th
observation. *R* is the number of response variables.

The following example shows how `manova`

assigns factor
values to response data for a three-way MANOVA:

$$\begin{array}{ccccccccccc}y& =& [& {\overrightarrow{y}}_{1};& {\overrightarrow{y}}_{2};& {\overrightarrow{y}}_{3};& {\overrightarrow{y}}_{4};& {\overrightarrow{y}}_{5};& \cdots ,& {\overrightarrow{y}}_{N}& ]\\ & & & \uparrow & \uparrow & \uparrow & \uparrow & \uparrow & & \uparrow & \\ g1& =& [& 1.25;& 3.68;& 9.11;& 5.90;& 1.47;& \cdots ;& 8.86& ]\\ g2& =& [& 1;& 2;& 1;& 3;& 1;& \cdots ;& 2& ]\\ g3& =& [& 100;& 500;& 300;& \text{200;}& 300;& \cdots ;& 400& ]\end{array}$$

In this example, *g*1, *g*2, and
*g*3 contain the values for the three factors.

**Note**

The `manova`

function ignores `NaN`

values, `<undefined>`

values, empty characters, and empty
strings in `Y`

. If `factors`

or
`tbl`

contains `NaN`

or
`<undefined>`

values, or empty characters or strings, the
function ignores the corresponding observations in `Y`

.

**Data Types: **`single`

| `double`

`factors`

— factors and factor values

numeric vector | logical vector | categorical vector | string vector | cell array of character vectors | numeric matrix

Factors and factor values for the MANOVA, specified as a numeric, logical, categorical, or string vector, a cell array of character vectors, or a numeric matrix. Factors and factor values are sometimes called grouping variables and group names, respectively.

For a one-way MANOVA, `factors`

is a column vector or cell
array of vectors in which each element represents the factor value of the response
data in the same row of `Y`

. For a two- or N-way MANOVA,
`factors`

is a numeric matrix in which each column corresponds to
a different factor. Each row of `factors`

contains the factor
values for the observation in the same row of `Y`

.
`factors`

and `Y`

must have the same number of
rows.

The following example shows how `manova`

assigns the
factor values to response data for a one-way MANOVA:

$$\begin{array}{ccccccccccc}y& =& [& {\overrightarrow{y}}_{1};& {\overrightarrow{y}}_{2};& {\overrightarrow{y}}_{3};& {\overrightarrow{y}}_{4};& {\overrightarrow{y}}_{5};& \cdots ;& {\overrightarrow{y}}_{N}& ]\\ & & & \uparrow & \uparrow & \uparrow & \uparrow & \uparrow & & \uparrow & \\ g& =& [& "A";& "A";& "C";& "B";& "B";& \cdots ;& "D"& ]\end{array}$$

In this example, *g* is a vector containing the
factor values, *y* is a matrix of response data, and $$\begin{array}{cccccccc}{\overrightarrow{y}}_{i}& =& [& {y}_{i,1},& {y}_{i,2},& \dots ,& {y}_{i,R}& ]\end{array}$$ is a row vector of response data for the *i*th
observation. *R* is the number of response variables.

The following example shows how `manova`

assigns factor
values to the response data for a three-way MANOVA:

$$\begin{array}{ccccccccccc}y& =& [& {\overrightarrow{y}}_{1};& {\overrightarrow{y}}_{2};& {\overrightarrow{y}}_{3};& {\overrightarrow{y}}_{4};& {\overrightarrow{y}}_{5};& \cdots ,& {\overrightarrow{y}}_{N}& ]\\ & & & \uparrow & \uparrow & \uparrow & \uparrow & \uparrow & & \uparrow & \\ g1& =& [& 1.25;& 3.68;& 9.11;& 5.90;& 1.47;& \cdots ;& 8.86& ]\\ g2& =& [& 1;& 2;& 1;& 3;& 1;& \cdots ;& 2& ]\\ g3& =& [& 100;& 500;& 300;& \text{200;}& 300;& \cdots ;& 400& ]\end{array}$$

In this example, *g*1, *g*2, and
*g*3 are columns of a numeric matrix that contain values for three
factors.

**Note**

If `factors`

or `tbl`

contains
`NaN`

values, `<undefined>`

values, empty
characters, or empty strings, the `manova`

function ignores
the corresponding observations in `Y`

.

**Example: **`[1,2,1,3,1,...,3,1]`

**Example: **`["white","red","white",...,"black","red"]`

**Example: **`stats=[height,age]; manova(stats,Y)`

;

**Data Types: **`single`

| `double`

| `logical`

| `categorical`

| `string`

| `cell`

`tbl`

— Factors, factor values, and response data

table

Factors, factor values, and response data, specified as a table. The variables of
`tbl`

can contain numeric, logical, categorical, or string
elements, or cell arrays of characters. When you specify `tbl`

, you
must also specify the response data `Y`

,
`ResponseVarNames`

, or `formula`

.

If you specify the response data in

`Y`

, the table variables represent only the factors for the MANOVA. A factor value in a variable of`tbl`

corresponds to the response data`Y`

at the same row index.`tbl`

must have the same number of rows as the length of`Y`

.If you do not specify

`Y`

, you must indicate which variables in`tbl`

contain the response data by using the`ResponseVarNames`

or`formula`

input argument. You can also choose a subset of factors in`tbl`

to use in the MANOVA by setting the name-value argument`FactorNames`

. The`manova`

function associates the values of the factor variables in`tbl`

with the response data in the same row.

**Note**

If `factors`

or `tbl`

contains
`NaN`

values, `<undefined>`

values, empty
characters, or empty strings, the `manova`

function ignores
the corresponding observations in `Y`

.

**Example: **```
mountain=table(altitude,temperature,soilpH,iron);
manova(mountain,["soilpH" "iron"])
```

**Data Types: **`table`

`ResponseVarNames`

— Names of response variables

string vector | cell array of character vectors

Names of the response variables, specified as a string vector or a cell array of
character vectors. `ResponseVarNames`

indicates which variables in
`tbl`

contain the response data. When you specify
`ResponseVarNames`

, you must also specify the
`tbl`

input argument. The names in
`ResponseVarNames`

must be names of variables in
`tbl`

.

**Example: **`"r"`

**Data Types: **`char`

| `string`

| `cell`

`formula`

— MANOVA model

string scalar | character vector

MANOVA model, specified as a string scalar or a character vector in Wilkinson notation. When you specify `formula`

, you must
also specify `tbl`

. The terms in `formula`

must
be names of variables in `tbl`

.

**Example: **`"r1-r3 ~ f1 + f1:f2:f3"`

**Data Types: **`char`

| `string`

**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.

**Example: **```
manova(factors,Y,CategoricalFactors=[1 2],FactorNames=["school"
"major" "age"],ResponseNames=["GPA" "StartYear" "GraduationYear"])
```

specifies
the first two factors in `factors`

as categorical, the factor names as
`"school"`

, `"major"`

, and `"age"`

,
and the names of the response variables as `"GPA"`

,
`"StartYear"`

, and `"GraduationYear"`

.

`CategoricalFactors`

— Factors to treat as categorical

`"all"`

(default) | numeric vector | logical vector | string vector | cell array of character vectors

Factors to treat as categorical, specified as a numeric, logical, or string
vector, or a cell array of character vectors. When
`CategoricalFactors`

is set to the default value
`"all"`

, the `manova`

function treats all
factors as categorical.

Specify `CategoricalFactors`

as one of the following:

A numeric vector with indices between 1 and

*N*, where*N*is the number of factor variables. The`manova`

function treats factors with indices in`CategoricalFactors`

as categorical. The index of a factor is the order in which it appears in the columns of`tbl`

.A logical vector of length

*N*, where a`true`

entry means that the corresponding factor is categorical.A string vector of factor names that match names in

`tbl`

or`FactorNames`

.

**Example: **```
CategoricalFactors=["Location"
"Smoker"]
```

**Example: **`CategoricalFactors=[1 3 4]`

**Data Types: **`single`

| `double`

| `logical`

| `char`

| `string`

| `cell`

`FactorNames`

— Factor names

string vector | cell array of character vectors

Factor names, specified as a string vector or a cell array of character vectors.

If you specify

`tbl`

in the call to`manova`

,`FactorNames`

must be a subset of the table variables in`tbl`

.`manova`

uses only the factors specified in`FactorNames`

. In this case, the default value of`FactorNames`

is the collection of names of the factor variables in`tbl`

.If you specify

`factors`

in the call to`manova`

, you can specify any names for`FactorNames`

. In this case, the default value of`FactorNames`

is`["Factor1","Factor2",…,"FactorN"]`

, where*N*is the number of factors.

When you specify `formula`

, `manova`

ignores `FactorNames`

.

**Example: **`FactorNames=["time","latitude"]`

**Data Types: **`char`

| `string`

| `cell`

`ModelSpecification`

— Type of MANOVA model to fit

`"linear"`

(default) | `"interactions"`

| `"purequadratic"`

| `"quadratic"`

| `"polyIJK"`

| `"full"`

| integer | string scalar | character vector | terms matrix

Type of MANOVA model to fit, specified as one of the options in the following
table or an integer, string scalar, character vector, or terms matrix. The default
value for `ModelSpecification`

is
`"linear"`

.

Option | Terms Included in MANOVA Model |
---|---|

`"linear"` (default) | Main effect (linear) terms |

`"interactions"` | Main effect and pairwise interaction terms |

`"purequadratic"` | Main effects and squared main effects. All factors must be continuous
to use this option. Set `CategoricalFactors = []` to
specify all factors as continuous. |

`"quadratic"` | Main effects, squared main effects, and pairwise interaction terms. All factors must be continuous to use this option. |

`"polyIJK"` | Polynomial terms up to degree I for the first
factor, degree J for the second factor, and so on. The
degree of an interaction term cannot exceed the maximum exponent of a main
term. You must specify a degree for each factor. |

`"full"` | Main effect and all interaction terms |

To include all main effects and interaction terms up to the
*k*th level, set `ModelSpecification`

equal to
`k`

. When `ModelSpecification`

is an integer,
the maximum level of an interaction term in the MANOVA model is the minimum between
`ModelSpecification`

and the number of factors.

If you specify `formula`

, `manova`

ignores `ModelSpecification`

.

You can also specify the terms of a MANOVA model using one of the following:

Double or single terms matrix

*T*with a column for each factor. Each term in the MANOVA model is a product corresponding to a row of*T*. The row elements are the exponents of their corresponding factors. For example,`T(i,:) = [1 2 1]`

means that term`i`

is $$(Factor1){(Factor2)}^{2}(Factor3)$$. Because the`manova`

function automatically includes a constant term in the MANOVA model, you do not need to include a row of zeros in the terms matrix.Character vector or string scalar formula in Wilkinson notation, representing one or more terms. The formula must use names contained in

`FactorNames`

,`ResponseNames`

, or table variable names (if`tbl`

is specified).

**Example: **`ModelSpecification="poly3212"`

**Example: **`ModelSpecification=3`

**Example: **`ModelSpecification="r1-r3 ~ c1*c2"`

**Example: **```
ModelSpecification=[0 0 0;1 0 0;0 1 0;0 0
1]
```

**Data Types: **`single`

| `double`

| `char`

| `string`

`ResponseNames`

— Names of response variables

1-by-*R* string vector | 1-by-*R* cell array of character vectors

Names of the response variables, specified as a 1-by-*R* string
vector or a 1-by-*R* cell array of character vectors, where
*R* is the number of response variables. If you specify
`ResponseVarNames`

or `formula`

,
`manova`

ignores
`ResponseNames`

.

**Example: **`ResponseNames=["soilpH" "plantHeight"]`

**Data Types: **`char`

| `string`

| `cell`

`TestStatistic`

— MANOVA test statistics

`"pillai"`

(default) | `"all"`

| `"hotelling"`

| `"wilks"`

| `"roy"`

MANOVA test statistics, specified as
`"all"`

or one or more of the following values.

Value | Test Name | Equation |
---|---|---|

`"pillai"` (default) | Pillai's trace | $$V=trace\left({Q}_{h}{\left({Q}_{h}+{Q}_{e}\right)}^{-1}\right)={\displaystyle \sum {\theta}_{i},}$$ where Q –
_{h}θ(Q +
_{h}Q) = 0.
_{e}Q and
_{h}Q are, respectively, the
hypotheses and the residual sum of squares product matrices. _{e} |

`"hotelling"` | Hotelling-Lawley trace | $$U=trace\left({Q}_{h}{Q}_{e}^{-1}\right)={\displaystyle \sum {\lambda}_{i}},$$ where Q –
_{h}λQ| = 0._{e} |

`"wilks"` | Wilk's lambda |
$$\Lambda =\frac{\left|{Q}_{e}\right|}{\left|{Q}_{h}+{Q}_{e}\right|}={\displaystyle \prod \frac{1}{1+{\lambda}_{i}}}.$$ |

`"roy"` | Roy's maximum root statistic |
$$\Theta =\mathrm{max}\left(eig\left({Q}_{h}{Q}_{e}^{-1}\right)\right).$$ |

If you specify `TestStatistic`

as
`"all"`

, `manova`

calculates all the test
statistics in the table above.

**Example: **`TestStatistic=["pillai" "roy"]`

**Data Types: **`char`

| `string`

| `cell`

## Properties

`CategoricalFactors`

— Indices of categorical factors

numeric vector

This property is read-only.

Indices of categorical factors, specified as a numeric vector. This property is set
by the `CategoricalFactors`

name-value argument.

**Data Types: **`double`

`Coefficients`

— Fitted MANOVA model coefficients

numeric matrix

This property is read-only.

Fitted MANOVA model coefficients, specified as a numeric matrix. Each column of the matrix corresponds to a different response variable, and each row corresponds to a different term in the MANOVA model.

For each categorical factor in the `maov`

object,
`manova`

reserves one factor value as the reference value.
`manova`

then expands each categorical factor into *F* – 1 dummy variables, where *F* is the number of values
for the factor. Each dummy variable is fit with a different coefficient during the
MANOVA. A dummy variable corresponding to a factor value is `1`

when an
observation is assigned the same factor value, `-1`

when it is assigned
the reference factor value, and `0`

otherwise. For more information,
see Dummy Variables Created with Effects Coding.

Continuous factors have coefficients that are constant across factor values.

**Data Types: **`single`

| `double`

`DFE`

— Degrees of freedom for error

positive integer

This property is read-only.

Degrees of freedom for the error (residuals), equal to the number of observations minus the number of estimated coefficients, specified as a positive integer.

**Data Types: **`double`

`ExpandedFactorNames`

— Names of coefficients

string vector

This property is read-only.

Names of the coefficients, specified as a string vector. The
`manova`

function expands each categorical factor into *F* – 1 dummy variables, where *F* is the number of values
for the factor. The vector `ExpandedFactorNames`

contains the name of
each dummy variable. For more information, see Coefficients.

**Data Types: **`string`

`Factors`

— Names and values of factors

table

This property is read-only.

Names and values of the factors used to fit the MANOVA model, specified as a table.
The names of the table variables are the factor names, and each variable contains the
values of its corresponding factor. If the factors used to fit the model are not given
as a table, `manova`

converts them into a table with one column
per factor.

This property is set by the `tbl`

input argument, or the factors
input argument together with the `FactorNames`

name-value argument.

**Data Types: **`table`

`FactorNames`

— Names of factors

string vector

This property is read-only.

Names of the factors used to fit the MANOVA model, specified as a string vector.
This property is set by the `tbl`

input argument or the
`FactorNames`

name-value argument.

**Data Types: **`string`

`Formula`

— MANOVA model

`MultivariateLinearFormula`

object

This property is read-only.

MANOVA model, specified as a `MultivariateLinearFormula`

object. This
property is set by the `formula`

input argument or the
`ModelSpecification`

name-value argument.

`ResponseCovariance`

— Estimated covariance matrix

double matrix | single matrix

This property is read-only.

Estimated covariance matrix for the response variables, specified as a double or single matrix. For more information about covariance matrices, see Covariance.

**Data Types: **`single`

| `double`

`ResponseNames`

— Names of response variables

string vector

This property is read-only.

Names of the response variables, specified as a string vector. This property is set
by the `ResponseVarNames`

input argument or the
`ResponseNames`

name-value argument.

**Data Types: **`string`

`TestStatistic`

— Test statistics

string vector

This property is read-only.

Test statistics used to perform the MANOVA, specified as a string vector. This
property is set by the `TestStatistic`

name-value argument.

**Data Types: **`string`

`Y`

— Response data

numeric vector

This property is read-only.

Response data used to fit the MANOVA model, specified as a numeric vector. This
property is set by the `Y`

input argument, or the
`tbl`

input argument together with the
`ResponseVarNames`

input argument.

**Data Types: **`single`

| `double`

## Object Functions

`barttest` | Bartlett's test for multivariate analysis of variance (MANOVA) |

`boxchart` | Box chart (box plot) for multivariate analysis of variance (MANOVA) |

`canonvars` | Canonical variables |

`coeftest` | Linear hypothesis test on MANOVA model coefficients |

`groupmeans` | Mean response estimates for multivariate analysis of variance (MANOVA) |

`multcompare` | Multiple comparison of marginal means for multiple analysis of variance (MANOVA) |

`plotprofile` | Plot MANOVA response variable means with grouping |

`stats` | Multivariate analysis of variance (MANOVA) table |

## Examples

### Perform One-Way MANOVA

Load the `fisheriris`

data set.

`load fisheriris`

The column vector `species`

contains three iris flower species: setosa, versicolor, and virginica. The matrix `meas`

contains four types of measurements for the flower: the length and width of sepals and petals in centimeters.

Perform a one-way MANOVA to test the null hypothesis that the vector of means for the four measurements is the same across the three flower species.

maov = manova(species,meas)

maov = 1-way manova Y1,Y2,Y3,Y4 ~ 1 + Factor1 Source DF TestStatistic Value F DFNumerator DFDenominator pValue _______ ___ _____________ ______ ______ ___________ _____________ __________ Factor1 2 pillai 1.1919 53.466 8 290 9.7422e-53 Error 147 Total 149 Properties, Methods

`maov`

is a one-way `manova`

object that contains the results of the one-way MANOVA. The output displays the formula for the MANOVA model and a MANOVA table. In the formula, the flower measurements are represented by the terms `Y1`

, `Y2`

, `Y3`

, and `Y4`

. `Factor1`

represents the flower species. The MANOVA table contains the *p*-value for the Pillai's trace test statistic. The *p*-value indicates that enough evidence exists to reject the null hypothesis at the 95% confidence level, and that the iris species has an effect on at least one of the four measurements.

### Perform Bartlett's Test for Two-Way MANOVA

Load the `carsmall`

data set.

`load carsmall`

The variable `Model_Year`

contains data for the year a car was manufactured, and the variable `Cylinders`

contains data for the number of engine cylinders in the car. The `Acceleration`

and `Displacement`

variables contain data for car acceleration and displacement.

Use the `table`

function to create a table of factor values from the data in `Model_Year`

and `Cylinders`

.

tbl = table(Model_Year,Cylinders,VariableNames=["Year" "Cylinders"]);

Create a matrix of response variables from `Acceleration`

and `Displacement`

.

y = [Acceleration Displacement];

Perform a two-way MANOVA using the factor values in `tbl`

and the response variables in `y`

.

maov = manova(tbl,y)

maov = 2-way manova Y1,Y2 ~ 1 + Year + Cylinders Source DF TestStatistic Value F DFNumerator DFDenominator pValue _________ __ _____________ ________ ______ ___________ _____________ __________ Year 2 pillai 0.084893 2.1056 4 190 0.081708 Cylinders 2 pillai 0.94174 42.27 4 190 2.5049e-25 Error 95 Total 99 Properties, Methods

`maov`

is a two-way `manova`

object that contains the results of the two-way MANOVA. The output displays the formula for the MANOVA model and a MANOVA table. In the formula, the car acceleration and displacement are represented by the variables `Y1`

and `Y2`

, respectively. The MANOVA table contains a small *p*-value corresponding to the `Cylinders`

term in the MANOVA model. The small *p*-value indicates that, at the 95% confidence level, enough evidence exists to conclude that `Cylinders`

has a statistically significant effect on the mean response vector. `Year`

has a *p*-value larger than 0.05, which indicates that not enough evidence exists to conclude that `Year`

has a statistically significant effect on the mean response vector at the 95% confidence level.

Use the `barttest`

function to determine the dimension of the space spanned by the mean response vectors corresponding to the factor `Year`

.

`barttest(maov,"Year")`

ans = 0

The output shows that the mean response vectors corresponding to `Year`

span a point, indicating that they are not statistically different from each other. This result is consistent with the large *p*-value for `Year`

.

### Get Marginal Means for Two-Way MANOVA

Load the `patients`

data set.

`load patients`

The variables `Systolic`

and `Diastolic`

contain data for patient systolic and diastolic blood pressure. The variables `Smoker`

and `SelfAssessedHealthStatus`

contain data for patient smoking status and self-assessed heath status.

Use the `table`

function to create a table of factor values from the data in `Systolic`

, `Diastolic`

, `Smoker`

, and `SelfAssessedHealthStatus`

.

tbl = table(Systolic,Diastolic,Smoker,SelfAssessedHealthStatus,VariableNames=["Systolic" "Diastolic" "Smoker" "SelfAssessed"]);

Perform a two-way MANOVA to test the null hypothesis that smoking status does not have a statistically significant effect on systolic and diastolic blood pressure, and the null hypothesis that self-assessed health status does not have an effect on systolic and diastolic blood pressure.

maov = manova(tbl,["Systolic" "Diastolic"])

maov = 2-way manova Systolic,Diastolic ~ 1 + Smoker + SelfAssessed Source DF TestStatistic Value F DFNumerator DFDenominator pValue ____________ __ _____________ ________ _______ ___________ _____________ __________ Smoker 1 pillai 0.67917 99.494 2 94 6.2384e-24 SelfAssessed 3 pillai 0.053808 0.87552 6 190 0.51392 Error 95 Total 99 Properties, Methods

`maov`

is a `manova`

object that contains the results of the two-way MANOVA. The small *p*-value for the `Smoker`

term in the MANOVA model indicates that enough evidence exists to conclude that mean response vectors are statistically different across the factor values of `Smoker`

. However, the large *p*-value for the `SelfAssessed`

term indicates that not enough evidence exists to reject the null hypothesis that the mean response vectors are statistically the same across the values for `SelfAssessed`

.

Calculate the marginal means for the values of the factor `Smoker`

.

`groupmeans(maov,"Smoker")`

`ans=`*2×5 table*
Smoker Mean SE Lower Upper
______ ______ _______ ______ ______
false 99.203 0.45685 98.296 100.11
true 109.45 0.62574 108.21 110.7

The output shows that the marginal mean for non-smokers is lower than the marginal mean for smokers.

### Perform Three-Way MANOVA with Interaction

Load the `patients`

data set.

`load patients`

The variables `Systolic`

and `Diastolic`

contain data for patient systolic and diastolic blood pressure. The variables `Weight`

, `Height`

, and `Smoker`

contain data for patient weight, height, and smoking status.

Use the `table`

function to create a table of factor values from the data in `Systolic`

, `Diastolic`

, `Weight`

, `Height`

, and `Smoker`

.

tbl = table(Systolic,Diastolic,Smoker,Weight,Height,VariableNames=["Systolic" "Diastolic" "Smoker" "Weight" "Height"]);

Perform a three-way MANOVA to test the null hypothesis that smoking status does not have a statistically significant effect on systolic and diastolic blood pressure, and the null hypothesis that the interaction between weight and height does not have a statistically significant effect on systolic and diastolic blood pressure.

maov = manova(tbl,"Systolic,Diastolic ~ Smoker + Weight*Height",CategoricalFactors=["Smoker"])

maov = N-way manova Systolic,Diastolic ~ 1 + Smoker + Weight*Height Source DF TestStatistic Value F DFNumerator DFDenominator pValue _____________ __ _____________ ________ _______ ___________ _____________ __________ Smoker 1 pillai 0.66141 91.809 2 94 7.8511e-23 Weight 1 pillai 0.020516 0.98446 2 94 0.37746 Height 1 pillai 0.012788 0.6088 2 94 0.54613 Weight:Height 1 pillai 0.019438 0.93169 2 94 0.39749 Error 95 Total 99 Properties, Methods

`maov`

is a `manova`

object that contains the results of the three-way MANOVA. The small *p*-value for the `Smoker`

term in the MANOVA model indicates that enough evidence exists to conclude that mean response vectors are statistically different across the factor values of `Smoker`

. However, the large *p*-value for the `Weight:Height`

term indicates that not enough evidence exists to reject the null hypothesis that the mean response vectors are not statistically different across the combinations of the values for weight and height.

Display a profile plot of the means for the values of `Smoker`

.

```
plotprofile(maov,"Smoker")
legend
```

The plot shows that the mean systolic and diastolic blood pressure values are higher for smokers than non-smokers.

## More About

### Covariance

For two random variable vectors *A* and
*B*, the covariance is defined as

$$\mathrm{cov}(A,B)=\frac{1}{N-1}{\displaystyle \sum _{i=1}^{N}{({A}_{i}-{\mu}_{A})}^{*}({B}_{i}-{\mu}_{B})}$$

where *N* is the length of each column,
*μ _{A}* and

*μ*are the mean values of

_{B}*A*and

*B*, respectively, and

`*`

denotes the complex
conjugate.The covariance matrix of two random variables is the matrix of pairwise covariance calculations between each variable,

$$C=\left(\begin{array}{cc}\mathrm{cov}(A,A)& \mathrm{cov}(A,B)\\ \mathrm{cov}(B,A)& \mathrm{cov}(B,B)\end{array}\right).$$

For a matrix *X*, in which each column is a random
variable composed of observations, the covariance matrix is the pairwise covariance
calculation between each column combination. In other words, $$C(i,j)=\mathrm{cov}\left(X(:,i),X(:,j)\right)$$.

## Alternative Functionality

The `manova1`

function returns the output of the `barttest`

object function, and a subset of the `manova`

object properties. `manova1`

is limited to one-way MANOVA.

## References

[1] Krzanowski, Wojtek. J.
*Principles of Multivariate Analysis: A User's Perspective*. New York:
Oxford University Press, 1988.

[2] Morrison, Donald F.
*Multivariate Statistical Methods*. 2nd ed, McGraw-Hill,
1976.

## Version History

**Introduced in R2023b**

## Open Example

You have a modified version of this example. Do you want to open this example with your edits?

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)