Accelerating the pace of engineering and science

fitrm

Fit repeated measures model

Syntax

• rm = fitrm(t,modelspec) example
• rm = fitrm(t,modelspec,Name,Value) example

Description

example

rm = fitrm(t,modelspec) returns a repeated measures model, specified by modelspec, fitted to the variables in the table or dataset array t.

example

rm = fitrm(t,modelspec,Name,Value) returns a repeated measures model, with additional options specified by one or more Name,Value pair arguments.

For example, you can specify the hypothesis for the within-subject factors.

Examples

expand all

Fit a Repeated Measures Model

Load the sample data.

`load fisheriris`

The column vector speciesconsists of iris flowers of three different species: setosa, versicolor, and 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)`
```rm =

RepeatedMeasuresModel with properties:

Between Subjects:
BetweenDesign: [150x5 table]
ResponseNames: {'meas1'  'meas2'  'meas3'  'meas4'}
BetweenFactorNames: {'species'}
BetweenModel: '1 + species'

Within Subjects:
WithinDesign: [4x1 table]
WithinFactorNames: {'Measurements'}
WithinModel: 'separatemeans'

Estimates:
Coefficients: [3x4 table]
Covariance: [4x4 table]```

Display the coefficients.

`rm.Coefficients`
```ans =

meas1       meas2      meas3      meas4
________    ________    ______    ________

(Intercept)             5.8433      3.0573     3.758      1.1993
species_setosa        -0.83733     0.37067    -2.296    -0.95333
species_versicolor    0.092667    -0.28733     0.502     0.12667
```

fitrm uses the 'effects' contrasts which means that the coefficients sum to 0. The rm.DesignMatrix has one column of 1s for the intercept, and two other columns species_setosa and species_versicolor, which are as follows:

$\text{species_setosa}=\left\{\begin{array}{c}1,\text{ }if\text{\hspace{0.17em}}setosa\text{ }\text{ }\\ 0,\text{ }if\text{\hspace{0.17em}}versicolor\\ -1,\text{ }if\text{\hspace{0.17em}}virginica\text{ }\end{array}\text{ }\text{and}\text{ }\text{species_versicolor}=\left\{\begin{array}{c}0,\text{\hspace{0.17em}}\text{ }if\text{\hspace{0.17em}}setosa\text{\hspace{0.17em}}\text{ }\\ 1,\text{ }if\text{\hspace{0.17em}}versicolor\\ -1,\text{ }if\text{\hspace{0.17em}}virginica\text{ }\end{array}$

Display the covariance matrix.

`rm.Covariance`
```ans =

meas1       meas2       meas3       meas4
________    ________    ________    ________

meas1     0.26501    0.092721     0.16751    0.038401
meas2    0.092721     0.11539    0.055244     0.03271
meas3     0.16751    0.055244     0.18519    0.042665
meas4    0.038401     0.03271    0.042665    0.041882```

Specify the Within-Subject Hypothesis

Navigate to the folder containing sample data.

```cd(matlabroot)
cd('help/toolbox/stats/examples')
```

Load the sample data.

`load('longitudinalData')`

The matrix Y contains response data for 16 individuals. The response is the blood level of a drug measured at five time points (time = 0, 2, 4, 6, and 8). Each row of Y corresponds to an individual, and each column corresponds to a time point. The first eight subjects are female, and the second eight subjects are male. This is simulated data.

Define a variable that stores gender information.

`Gender = ['F' 'F' 'F' 'F' 'F' 'F' 'F' 'F' 'M' 'M' 'M' 'M' 'M' 'M' 'M' 'M']';`

Store the data in a proper table array format to conduct repeated measures analysis.

```t = table(Gender,Y(:,1),Y(:,2),Y(:,3),Y(:,4),Y(:,5),...
'VariableNames',{'Gender','t0','t2','t4','t6','t8'});
```

Define the within-subjects variable.

`Time = [0 2 4 6 8]';`

Fit a repeated measures model, where blood levels are the responses and gender is the predictor variable. Also define the hypothesis for within-subject factors.

`rm = fitrm(t,'t0-t8 ~ Gender','WithinDesign',Time,'WithinModel','orthogonalcontrasts')`
```rm =

RepeatedMeasuresModel with properties:

Between Subjects:
BetweenDesign: [16x6 table]
ResponseNames: {'t0'  't2'  't4'  't6'  't8'}
BetweenFactorNames: {'Gender'}
BetweenModel: '1 + Gender'

Within Subjects:
WithinDesign: [5x1 table]
WithinFactorNames: {'Time'}
WithinModel: 'orthogonalcontrasts'

Estimates:
Coefficients: [2x5 table]
Covariance: [5x5 table]```

Fit a Model with Covariates

Load the sample data.

`load repeatedmeas`

The table between includes the eight repeated measurements y1y8 as responses and the between-subject factors Group, Gender , IQ, and Age. IQ and Age as continuous variables. The table within includes the within-subject factors w1 and w2.

Fit a repeated measures model, where age, IQ, and group, gender are the predictor variables, and the model includes the interaction effect of group and gender. Also define the within-subject factors.

`rm = fitrm(between,'y1-y8 ~ Group*Gender+Age+IQ','WithinDesign',within)`
```rm =

RepeatedMeasuresModel with properties:

Between Subjects:
BetweenDesign: [30x12 table]
ResponseNames: {'y1'  'y2'  'y3'  'y4'  'y5'  'y6'  'y7'  'y8'}
BetweenFactorNames: {'Age'  'IQ'  'Group'  'Gender'}
BetweenModel: '1 + Age + IQ + Group*Gender'

Within Subjects:
WithinDesign: [8x2 table]
WithinFactorNames: {'w1'  'w2'}
WithinModel: 'separatemeans'

Estimates:
Coefficients: [8x8 table]
Covariance: [8x8 table]```

Display the coefficients.

`rm.Coefficients`
```ans =

y1         y2         y3         y4          y5           y6         y7          y8
________    _______    _______    _______    _________    ________    _______    ________

(Intercept)                141.38     195.25     9.8663    -49.154       157.77     0.23762    -42.462      76.111
Age                       0.32042    -4.7672    -1.2748     0.6216      -1.0621     0.89927     1.2569    -0.38328
IQ                        -1.2671    -1.1653    0.05862     0.4288      -1.4518    -0.25501    0.22867    -0.72548
Group_A                   -1.2195    -9.6186     22.532     15.303       12.602      12.886     10.911      11.487
Group_B                    2.5186      1.417    -2.2501    0.50181       8.0907      3.1957     11.591      9.9188
Gender_Female              5.3957    -3.9719     8.5225     9.3403       6.0909       1.642    -2.1212      4.8063
Group_A:Gender_Female      4.1046     10.064    -7.3053    -3.3085       4.6751      2.4907     -4.325     -4.6057
Group_B:Gender_Female    -0.48486    -2.9202     1.1222    0.69715    -0.065945    0.079468     3.1832      6.5733```

The display shows the coefficients for fitting the repeated measures as a function of the terms in the between-subjects model.

Input Arguments

expand all

t — Input data table

Input data, which includes the values of the response variables and the between-subject factors to use as predictors in the repeated measures model, specified as a table.

Data Types: table

modelspec — Formula for model specificationstring of the form 'y1-yk ~ terms'

Formula for model specification, specified as a string of the form 'y1-yk ~ terms'. The responses and terms are specified using Wilkinson notation. fitrm treats the variables used in model terms as categorical if they are categorical (nominal or ordinal), logical, char arrays, or a cell arrays of strings.

For example, if you have four repeated measures as responses and the factors x1, x2, and x3 as the predictor variables, then you can define a repeated measures model as follows.

Example: 'y1-y4 ~ x1 + x2 * x3'

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: 'WithinDesign','W','WithinModel','w1+w2' specifies the matrix w as the design matrix for within-subject factors, and the model for within-subject factors w1 and w2 is 'w1+w2'.

'WithinDesign' — Design for within-subject factorsnumeric vector of length r (default) | r-by-k numeric matrix | r-by-k table

Design for within-subject factors, specified as the comma-separated pair consisting of 'WithinDesign' and one of the following:

• Numeric vector of length r, where r is the number of repeated measures.

In this case, fitrm treats the values in the vector as continuous, and these are typically time values.

• r-by-k numeric matrix of the values of the k within-subject factors, w1, w2, ..., wk.

In this case,fitrm treats all k variables as continuous.

• r-by-k table that contains the values of the k within-subject factors.

In this case, fitrm treats all numeric variables as continuous, and all categorical variables as categorical.

For example, if the table weeks contains the values of the within-subject factors, then you can define the design table as follows.

Example: 'WithinDesign',weeks

Data Types: single | double | table

'WithinModel' — Model specifying within-subject hypothesis test'separatemeans' (default) | 'orthogonalcontrasts' | string that defines a model

Model specifying the within-subject hypothesis test, specified as the comma-separated pair consisting of 'WithinModel' and one of the following:

• 'separatemeans' — Compute a separate mean for each group.

• 'orthogonalcontrasts' — This is valid only when the within-subject model has a single numeric factor T. Responses are the average, the slope of centered T, and, in general, all orthogonal contrasts for a polynomial up to T^(p – 1), where p is the number if rows in the within-subject model.

• A string that defines a model specification in the within-subject factors. You can define the model based on the rules for the terms in modelspec.

For example, if there are three within-subject factors w1, w2, and w3, then you can specify a model for the within-subject factors as follows.

Example: 'WithinModel','w1+w2+w2*w3'

Data Types: single | double

Output Arguments

expand all

rm — Repeated measures modelRepeatedMeasuresModel object

Repeated measures model, returned as a RepeatedMeasuresModel object.

For properties and methods of this object, see RepeatedMeasuresModel.

expand all

Model Specification Using Wilkinson Notation

Wilkinson notation describes the factors present in models. It does not describe the multipliers (coefficients) of those factors.

The following rules specify the responses in modelspec.

Wilkinson NotationMeaning
Y1,Y2,Y3Specific list of variables
Y1-Y5All table variables from Y1 through Y5

The following rules specify terms in modelspec.

Wilkinson notationFactors in Standard Notation
1Constant (intercept) term
X^k, where k is a positive integerX, X2, ..., Xk
X1 + X2X1, X2
X1*X2X1, X2, X1*X2
X1:X2X1*X2 only
-X2Do not include X2
X1*X2 + X3X1, X2, X3, X1*X2
X1 + X2 + X3 + X1:X2X1, X2, X3, X1*X2
X1*X2*X3 - X1:X2:X3X1, X2, X3, X1*X2, X1*X3, X2*X3
X1*(X2 + X3)X1, X2, X3, X1*X2, X1*X3

Statistics Toolbox™ notation always includes a constant term unless you explicitly remove the term using -1.