NMath User's Guide

TOC | Previous | Next | Index

41.6 Two Sample F-Test (.NET, C#, CSharp, VB, Visual Basic, F#)

Class TwoSampleFTest tests whether the variances of two populations are equal. For example, suppose random samples from two normal populations are taken. The first sample consists of 10 observations with a standard deviation of 5.203; the second sample consists of 25 observations with a standard deviation of 2.623. At the 0.10 significance level, is there sufficient evidence to suggest that the populations from which these samples were drawn have equal variances?

As described Section 41.1, all hypothesis test classes provide two paths for constructing instances of that type: a parameter-based method and a data-based method. Thus, you can construct a TwoSampleFTest object by explicitly specifying the standard deviation (),and size () of each sample, like so:

Code Example – C# F-test

double s1 = 5.203;
int n1 = 10;

double s2 = 2.623;
int n2 = 25;

var test = new TwoSampleFTest( s1, n1, s2, n2 );

Code Example – VB F-test

Dim S1 As Double = 5.203
Dim N1 As Integer = 10

Dim S2 As Double = 2.623
Dim N2 As Integer = 25

Dim Test As New TwoSampleFTest(S1, N1, S2, N2)

Or by supplying two sets of sample data. For instance, if the sample data is in two vectors v1 and v2:

Code Example – C# F-test

var test = new TwoSampleFTest( v1, v2 );

Code Example – VB F-test

Dim Test As New TwoSampleFTest(V1, V2)

The sample standard deviations and sizes are calculated from the given data.

In addition to the properties common to all hypothesis test objects (Section 41.1), a TwoSampleFTest object provides the following read-only properties:

S1 and S2 get the standard deviations of the samples.

N1 and N2 get the sizes of the samples.

DegreesOfFreedom1 gets the numerator degrees of freedom.

DegreesOfFreedom2 gets the denomenator degrees of freedom.

By default, a TwoSampleFTest object performs a two-sided hypothesis test () with . Non-default test parameters can be specified at the time of construction using constructor overloads, or after construction using the provided Type and Alpha properties.

Once you've constructed and configured a TwoSampleFTest object, you can access the various test results using the provided properties, as described in Section 41.1:

Code Example – C# F-test

Console.WriteLine( "t-statistic = " + test.Statistic );
Console.WriteLine( "numerator df = " + test.DegreesOfFreedom1 );
Console.WriteLine( "denomenator df = " + test.DegreesOfFreedom2 );
Console.WriteLine( "p-value = " + test.P );
Console.WriteLine( "reject the null hypothesis? " + test.Reject);

Code Example – VB F-test

Console.WriteLine("t-statistic = " & Test.Statistic)
Console.WriteLine("numerator df = " & Test.DegreesOfFreedom1)
Console.WriteLine("denomenator df = " & Test.DegreesOfFreedom2)
Console.WriteLine("p-value = " & Test.P)
Console.WriteLine("reject the null hypothesis? " & Test.Reject)

The output is:

F-statistic = 3.93469497446923
numerator df = 9
denomenator df = 24
p-value = 0.00693561186501657
reject the null hypothesis? True

This indicates that we cannot reject the null hypotheses ().

Finally, remember that the ToString() method returns a formatted string representation of the complete test results:

Two Sample F Test

Sample Sizes = 10 and 25
Standard Deviations = 5.203 and 2.623
Variances = 27.071209 and 6.880129
Computed F statistic: 3.93469497446923, num df = 9, denom df = 24

Hypothesis type: two-sided
Null hypothesis: true ratio of variances = 1
Alt hypothesis: true ratio of variances != 1
P-value: 0.00693561186501657
REJECT the null hypothesis for alpha = 0.01
0.99 confidence interval: 1.06490202325594 22.5425454339445