NMath Stats User's Guide

TOC | Previous | Next | Index

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

Class OneWayRanova calculates and summarizes the information of a one-way repeated measures analysis of variance (RANOVA).

Creating One-Way RANOVA Objects

A OneWayRanova instance is constructed from numeric data for multiple treatments applied to each experimental subject. For example, this code constructs a OneWayRanova from a DoubleMatrix:

Code Example – C# RANOVA

var data = new DoubleMatrix( "8x4 [ 180 200 160 200
                                    230 250 200 220
                                    280 310 260 270
                                    180 200 160 200
                                    190 210 170 210
                                    140 160 120 110
                                    270 300 250 260 
                                    110 130 100 100 ]" );
var ranova = new OneWayRanova( data );

Each row of the matrix contains the data for an individual subject. There should be one column for each treatment. The example above shows 4 different measurements for each of 8 subjects.

NOTE—Data rows containing missing values (NaNs) are ignored by class OneWayRanova.

Similarly, you can also construct a OneWayRanova from a DataFrame:

Code Example – C# RANOVA

var ranova = new OneWayRanova( df );

Each row in the DataFrame contains the data for an individual subject. There should be one column for each treatment.

Note that all numeric columns in the given DataFrame are interpreted as treatments; only non-numeric columns are ignored. If you have numeric columns in the data frame that you also wish to ignore, apply the appropriate Subset first. For instance:

Code Example – C# RANOVA

var colIndices = new Subset( new int[] { 3, 14, 5, 8, 4 } );
var ranova = new OneWayRanova( df.GetColumns( colIndices ) );

The One-Way RANOVA Table

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

Code Example – C# RANOVA

Console.WriteLine( ranova );

For example:

Source   Deg of Freedom  Sum Of Sq   Mean Square     F       P
Subjects      9         102822.5000  11424.7222    .        .
Treatment     3         9247.5000    3082.5000     31.6755  0.0000
Error        27         2627.5000    97.3148       .        .
Total        39         114697.5000  2940.9615     .        .

Class OneWayRanovaTable is provided for summarizing the information in a traditional one-way RANOVA table. Class OneWayRanovaTable derives from DataFrame. An instance of OneWayRanovaTable can be obtained from a OneWayRanova object using the RanovaTable property. For example:

Code Example – C# RANOVA

OneWayRanovaTable myTable = ranova.RanovaTable;

Class OneWayRanovaTable provides the following read-only properties for accessing individual elements in the RANOVA table:

DegreesOfFreedomTreatment gets the treatment degrees of freedom.

DegreesOfFreedomWithinSubject gets the within-subject degrees of freedom.

DegreesOfFreedomError gets the error degrees of freedom.

DegreesOfFreedomTotal gets the total degrees of freedom.

SumOfSquaresTreatment gets the treatment sum of squares.

SumOfSquaresWithinSubject gets the within-subject sum of squares.

SumOfSquaresTotal gets the total sum of squares.

SumOfSquaresError gets the error sum of squares.

MeanSquareTreatment gets the treatment mean square.

MeanSquareWithinSubject gets the within-subject mean square.

MeanSquareError gets the error mean square.

MeanSquareTotal gets the total mean square.

FStatistic gets the F statistic for the RANOVA.

FStatisticPValue gets the p-value for the F statistic.

Grand Mean, Subject Means, and Treatment Means

Class OneWayRanova provides properties for retrieving the grand mean, subject means, and treatment means:

GrandMean gets the grand mean of the data. The grand mean is the mean of all of the data.

SubjectMeans gets a vector of means for each subject.

TreatmentMeans gets a vector of means for each treatment.

Critical Value of the F Statistic

Class OneWayRanova provides the convenience function FStatisticCriticalValue() which computes the critical value for the RANOVA F statistic at a given significance level. Thus:

Code Example – C# RANOVA

double alpha = 0.01;
double critVal = ranova.FStatisticCriticalValue( alpha );

Updating One-Way RANOVA Objects

Method SetData() updates an entire repeated measures analysis of variance object with new data. As with the class constructors (see above), you can supply data as a matrix or as a data frame. For instance, this code updates a RANOVA with data from matrix A:

Code Example – C# RANOVA

ranova.SetData( A );