Variance Tests in IronPython QuickStart Sample
Illustrates how to perform hypothesis tests involving the standard deviation or variance using classes in our .NET statistical library in IronPython.
This sample is also available in: C#, Visual Basic, F#.
Overview
This QuickStart sample demonstrates how to perform statistical hypothesis tests involving variances and standard deviations using Numerics.NET.
The sample works with test scores from two groups of students to illustrate two key variance-related tests:
- A one-sample chi-square test to determine if a group’s variance is greater than a specific value
- A two-sample F-test to compare the variances between two groups
The code shows how to:
- Create numerical variables from test score data
- Calculate basic statistics like mean and standard deviation
- Perform a one-sample chi-square test with configurable significance levels
- Generate confidence intervals for variance estimates
- Compare variances between two groups using the F-test
- Interpret test results including test statistics, p-values, and hypothesis rejection decisions
The sample includes examples of setting different significance levels and obtaining corresponding confidence intervals, demonstrating the flexibility of the testing framework. All results are clearly formatted and displayed with appropriate precision.
The code
import numerics
from Extreme.Mathematics import *
from Extreme.Statistics import *
from Extreme.Statistics.Tests import *
# Demonstrates how to use hypothesis tests for the variance
# of one or two distributions.
# This QuickStart Sample uses the scores obtained by the students
# in two groups of students on a national test.
#
# We want to know if the variance of the scores is greater than
# a specific value. We use the one sample Chi-square test for this
# purpose.
print "Tests for class 1"
# First we create a NumericalVariable that holds the test results.
group1Data = Vector([ \
62, 77, 61, 94, 75, 82, 86, 83, 64, 84, \
68, 82, 72, 71, 85, 66, 61, 79, 81, 73 ])
group1Results = NumericalVariable("Class 1", group1Data)
# We can get the mean and standard deviation of the class right away:
print "Mean for the class: {0:.1f}".format(group1Results.Mean)
print "Standard deviation: {0:.1f}".format(group1Results.StandardDeviation)
#
# One Sample Chi-square Test
#
print "\nUsing chi-square test:"
# We want to know if the standard deviation is larger than 15.
# Therefore, we use a one-tailed chi-square test:
chiSquareTest = OneSampleChiSquareTest(group1Results, 225, HypothesisType.OneTailedUpper)
# We can obtan the value of the test statistic through the Statistic property, # and the corresponding P-value through the Probability property:
print "Test statistic: {0:.4f}".format(chiSquareTest.Statistic)
print "P-value: {0:.4f}".format(chiSquareTest.PValue)
# The significance level is the default value of 0.05:
print "Significance level: {0:.2f}".format(chiSquareTest.SignificanceLevel)
# We can now print the test results:
print "Reject null hypothesis?", "yes" if chiSquareTest.Reject() else "no"
# We can get a confidence interval for the current significance level:
varianceInterval = chiSquareTest.GetConfidenceInterval()
print "95% Confidence interval for the variance: {0:.1f} - {1:.1f}".format( \
varianceInterval.LowerBound, varianceInterval.UpperBound)
# We can get the same results for the 0.01 significance level by explicitly
# passing the significance level as a parameter to these methods:
print "Significance level: {0:.2f}".format(0.01)
print "Reject null hypothesis?", "yes" if chiSquareTest.Reject(0.01) else "no"
# The GetConfidenceInterval method needs the confidence level, which equals
# 1 - the significance level:
varianceInterval = chiSquareTest.GetConfidenceInterval(0.99)
print "99% Confidence interval for the variance: {0:.1f} - {1:.1f}".format( \
varianceInterval.LowerBound, varianceInterval.UpperBound)
#
# Two sample F-test
#
print "\nUsing F-test:"
# We want to compare the scores of the first group to the scores
# of a second group from another school. We want to verify that the
# variances of the scores from the two schools are equal. Once again, # we start by creating a NumericalVariable, this time containing
# the scores for the second group:
group2Data = Vector([ \
61, 80, 98, 90, 94, 65, 79, 75, 74, 86, 76, \
85, 78, 72, 76, 79, 65, 92, 76, 80 ])
group2Results = NumericalVariable("Class 2", group2Data)
# To compare the variances of the two groups, we need the two sample
# F test, implemented by the FTest class:
fTest = FTest(group1Results, group2Results)
# We can obtan the value of the test statistic through the Statistic property, # and the corresponding P-value through the Probability property:
print "Test statistic: {0:.4f}".format(fTest.Statistic)
print "P-value: {0:.4f}".format(fTest.PValue)
# The significance level is the default value of 0.05:
print "Significance level: {0:.2f}".format(fTest.SignificanceLevel)
# We can now print the test results:
print "Reject null hypothesis?", "yes" if fTest.Reject() else "no"