Data Analysis Mathematics Linear Algebra Statistics
New Version 8.0! QuickStart Samples

# Mean Tests QuickStart Sample (Visual Basic)

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

```Option Infer On

Imports System.Data
Imports Extreme.Mathematics
Imports Extreme.Statistics
Imports Extreme.Statistics.Tests

Namespace Extreme.Numerics.QuickStart.VB
' Illustrates hypothesis tests for the mean of a sample using classes
' from the Extreme.Statistics.Tests namespace.
Module MeanTests

Sub Main()
' 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:
Const nationalMean As Double = 79.3
Const nationalStandardDeviation As Double = 7.3

Console.WriteLine("Tests for group 1")

' First we create a NumericalVariable that holds the test scores.
Dim group1Results = Vector.Create(New Double() _
{62, 77, 61, 94, 75, 82, 86, 83, 64, 84, 68, 82, 72, 71, 85, 66, 61, 79, 81, 73})

' 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(Environment.NewLine + "Using 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.
Dim zTest As OneSampleZTest = _
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}", IIf(zTest.Reject(), "yes", "no"))
' We can get a confidence interval for the current significance level:
Dim meanInterval As Interval = 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}", IIf(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(Environment.NewLine + "Using 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.
Dim tTest As OneSampleTTest = 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}", IIf(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(Environment.NewLine + "Using 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:
Dim group2Results = Vector.Create(New Double() _
{61, 80, 98, 90, 94, 65, 79, 75, 74, 86, 76, 85, 78, 72, 76, 79, 65, 92, 76, 80})

' To compare the means of the two groups, we need the two sample
' t test, implemented by the TwoSampleTTest group:
Dim tTest2 As TwoSampleTTest = New TwoSampleTTest(group1Results, group2Results,
SamplePairing.Paired, assumeEqualVariances:=False)
' 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}", IIf(tTest2.Reject(), "yes", "no"))

Console.WriteLine("Press Enter key to continue.")