# NMath User's Guide

44.5 Two-Way Repeated Measures ANOVA (.NET, C#, CSharp, VB, Visual Basic, F#)

NMath Stats provides two classes for calculating a two-way analysis of variance with repeated measures (RANOVA):

Class performs a balanced two-way analysis of variance with repeated measures on one factor.

Class performs a balanced two-way analysis of variance with repeated measures on both factors.

Both classes extend TwoWayAnova, and so inherit the methods and properties described in Section 44.3. Like TwoWayAnova, both TwoWayRanova and TwoWayRanovaTwo use multiple linear regression to compute the RANOVA values.

Creating Two-Way RANOVA Objects

Instances of both TwoWayRanova and TwoWayRanovaTwo are constructed from data in a data frame. Three column indices are specified in the data frame: the column containing the first factor, the column containing the second factor, and the column containing the numeric data. For TwoWayRanova, the first factor is the repeated factor; for TwoWayRanovaTwo, both factors are repeated.

For example, this code groups the numeric data in column 3 of DataFrame df by factors constructed from columns 0 and 4:

Code Example – C# RANOVA

```var ranova = new TwoWayRanova( df, 0, 4, 3 );
```

Code Example – VB RANOVA

```Dim Ranova As New TwoWayRanova(DF, 0, 4, 3)
```

The factor constructed from column 0 is the repeated factor. In the following example, both factors are repeated:

Code Example – C# RANOVA

```var ranova2 = new TwoWayRanovaTwo( df, 0, 4, 3 );
```

Code Example – VB RANOVA

```Dim Ranova2 As New TwoWayRanovaTwo(DF, 0, 4, 3)
```

NOTE—Both TwoWayRanova and TwoWayRanovaTwo throw an InvalidArgumentEx­ception if the data contains missing values (NaNs).

Two-Way RANOVA Tables

Once you've constructed a TwoWayRanova, you can display the complete RANOVA table:

Code Example – C# RANOVA

```var ranova = new TwoWayRanova( df, 0, 4, 3 );
```
```Console.WriteLine( ranova );
```

Code Example – VB RANOVA

```Dim Ranova As New TwoWayRanova(DF, 0, 4, 3)
```
```Console.WriteLine(Ranova)
```

For instance:

```Source  Deg of Freedom  SumOfSqu   Mean Square  F         P
```
```FactorA      1          0.2032     0.2032       29.2322   0.0001
```
```Subjects     14         1.7559     0.1254       .         .
```
```FactorB      1          0.0205     0.0205       0.1635    0.6921
```
```Interaction  1          0.0830     0.0830       11.9442   0.0039
```
```Error        14         0.0973     0.0070       .         .
```
```Total        31         2.1599     .            .         .
```

Class summarizes the information in a traditional two-way RANOVA table with repeated measures on one factor. An instance of TwoWayRanovaTable can be obtained from a TwoWayRanova object using the RanovaTable property. For example:

Code Example – C# RANOVA

```TwoWayRanovaTable myTable = ranova.RanovaTable;
```

Code Example – VB RANOVA

```Dim MyTable As TwoWayRanovaTable = Ranova.RanovaTable
```

Class TwoWayRanovaTable derives from TwoWayAnovaTable, and so inherits the properties described in Section 44.3. In addition, TwoWayRanovaTable provides the following properties for accessing the new row in the RANOVA table for repeated measures on one factor:

SubjectsDegreesOfFreedom gets the subjects degrees of freedom.

SubjectsSumOfSquares gets the sum of squares for the subjects.

SubjectsMeanSquare gets the mean square for the subjects.

Similarly, once you've constructed a TwoWayRanovaTwo, you can display the RANOVA table:

Code Example – C# RANOVA

```var ranova2 = new TwoWayRanovaTwo( df, 0, 4, 3 );
```
```Console.WriteLine( ranova2 );
```

Code Example – VB RANOVA

```Dim Ranova2 As New TwoWayRanovaTwo(DF, 0, 4, 3)
```
```Console.WriteLine(Ranova2)
```

For example:

```Source  Deg of Freedom  SumOfSq    Mean Square  F         P
```
```FactorA      1          1.4700     1.4700       88.2000   0.0000
```
```FactorB      2         14.5654     7.2827       59.2348   0.0000
```
```Interaction  2          3.3387     1.6694       18.9305   0.0001
```
```A x Subject  14         1.7213     0.1229       .         .
```
```B x Subject  7          0.1167     0.0167       .         .
```
```Error        14         1.2346     0.0882       .         .
```
```Total        47        29.3592     .            .         .
```

An instance of can be obtained from a TwoWayRanovaTwo object using the RanovaTable property. For example:

Code Example – C# RANOVA

```TwoWayRanovaTwoTable myTable = ranova2.RanovaTable;
```

Code Example – VB RANOVA

```Dim MyTable As TwoWayRanovaTwoTable = Ranova2.RanovaTable
```

Class TwoWayRanovaTwoTable also derives from TwoWayAnovaTable, and provides the following methods for accessing the additional rows in the RANOVA table with repeated measures on both factors:

SubjectInteractionDegreesOfFreedom() returns the degrees of freedom for the interaction between subjects and the specified factor.

SubjectInteractionSumOfSquares() returns the sum of squares for the interaction between subjects and the specified factor.

SubjectInteractionMeanSquare returns the mean square for the interaction between subjects and the specified factor.

Top

Top