New Version 5.0!

Try it for free with our fully functional 60-day trial version.

Download now!

QuickStart Samples

Mean Tests QuickStart Sample (C#)

Illustrates how to use various tests for the mean of one or more sanples using classes in the Extreme.Statistics.Tests namespace in C#.

Visual Basic code F# code IronPython code Back to QuickStart Samples

using System;

using Extreme.Mathematics;
using Extreme.Statistics;
using Extreme.Statistics.Tests;

namespace Extreme.Statistics.Quickstart.CSharp
{
	/// <summary>
	/// Demonstrates how to use hypothesis tests for the mean 
	/// of one or two distributions.
	/// </summary>
	class MeanTests
	{
		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			// 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 scores for these two groups of students
			// are significantly different from the national average, and
			// from each other.

			// The mean and standard deviation of the complete population:
			double nationalMean = 79.3;
			double nationalStandardDeviation = 7.3;

			Console.WriteLine("Tests for group 1");

				// First we create a NumericalVariable that holds the test scores.
			double[] group1Data = new double[]
				{62, 77, 61, 94, 75, 82, 86, 83, 64, 84, 68, 82, 72, 71, 85, 66, 61, 79, 81, 73};	
			NumericalVariable group1Results = new NumericalVariable("Class 1", group1Data);
			
			// We can get the mean and standard deviation of the group right away:
			Console.WriteLine("Mean for the group: {0:F1}", group1Results.Mean);
			Console.WriteLine("Standard deviation: {0:F1}", group1Results.StandardDeviation);
			
			//
			// One Sample z-test
			//

			Console.WriteLine("\nUsing z-test:");
			// We know the population standard deviation, so we can use the z-test,
			// implemented by the OneSampleZTest group. We pass the sample variable
			// and the population parameters to the constructor.
			OneSampleZTest zTest = new OneSampleZTest(group1Results, nationalMean, nationalStandardDeviation);
			// We can obtan the value of the test statistic through the Statistic property,
			// and the corresponding P-value through the Probability property:
			Console.WriteLine("Test statistic: {0:F4}", zTest.Statistic);
			Console.WriteLine("P-value:        {0:F4}", zTest.PValue);

			// The significance level is the default value of 0.05:
			Console.WriteLine("Significance level:     {0:F2}", zTest.SignificanceLevel);
			// We can now print the test scores:
			Console.WriteLine("Reject null hypothesis? {0}", zTest.Reject() ? "yes" : "no");
			// We can get a confidence interval for the current significance level:
			Interval meanInterval = zTest.GetConfidenceInterval();
			Console.WriteLine("95% Confidence interval for the mean: {0:F1} - {1:F1}", 
				meanInterval.LowerBound, meanInterval.UpperBound);

			// We can get the same scores for the 0.01 significance level by explicitly
			// passing the significance level as a parameter to these methods:
			Console.WriteLine("Significance level:     {0:F2}", 0.01);
			Console.WriteLine("Reject null hypothesis? {0}", zTest.Reject(0.01) ? "yes" : "no");
			// The GetConfidenceInterval method needs the confidence level, which equals
			// 1 - the significance level:
			meanInterval = zTest.GetConfidenceInterval(0.99);
			Console.WriteLine("99% Confidence interval for the mean: {0:F1} - {1:F1}", 
				meanInterval.LowerBound, meanInterval.UpperBound);


			// 
			// One sample t-test
			//

			Console.WriteLine("\nUsing t-test:");
			// Suppose we only know the mean of the national scores, 
			// not the standard deviation. In this case, a t-test is 
			// the appropriate test to use.
			OneSampleTTest tTest = new OneSampleTTest(group1Results, nationalMean);
			// We can obtan the value of the test statistic through the Statistic property,
			// and the corresponding P-value through the Probability property:
			Console.WriteLine("Test statistic: {0:F4}", tTest.Statistic);
			Console.WriteLine("P-value:        {0:F4}", tTest.PValue);

			// The significance level is the default value of 0.05:
			Console.WriteLine("Significance level:     {0:F2}", tTest.SignificanceLevel);
			// We can now print the test scores:
			Console.WriteLine("Reject null hypothesis? {0}", tTest.Reject() ? "yes" : "no");
			// We can get a confidence interval for the current significance level:
			meanInterval = tTest.GetConfidenceInterval();
			Console.WriteLine("95% Confidence interval for the mean: {0:F1} - {1:F1}", 
				meanInterval.LowerBound, meanInterval.UpperBound);

			
			// 
			// Two sample t-test
			//

			Console.WriteLine("\nUsing two-sample t-test:");
			// We want to compare the scores of the first group to the scores 
			// of a second group from the same school. Once again, we start
			// by creating a NumericalVariable containing the scores:
			double[] group2Data = new double[]
				{61, 80, 98, 90, 94, 65, 79, 75, 74, 86, 76, 85, 78, 72, 76, 79, 65, 92, 76, 80};
			NumericalVariable group2Results = new NumericalVariable("Class 2", group2Data);

			// To compare the means of the two groups, we need the two sample
			// t test, implemented by the TwoSampleTTest group:
			TwoSampleTTest tTest2 = new TwoSampleTTest(group1Results, group2Results, SamplePairing.Paired, VarianceAssumption.None);
			// We can obtan the value of the test statistic through the Statistic property,
			// and the corresponding P-value through the Probability property:
			Console.WriteLine("Test statistic: {0:F4}", tTest2.Statistic);
			Console.WriteLine("P-value:        {0:F4}", tTest2.PValue);

			// The significance level is the default value of 0.05:
			Console.WriteLine("Significance level:     {0:F2}", tTest2.SignificanceLevel);
			// We can now print the test scores:
			Console.WriteLine("Reject null hypothesis? {0}", tTest2.Reject() ? "yes" : "no");

			Console.Write("Press any key to exit.");
			Console.ReadLine();
		}
	}
}