Example: The Chi-squared Goodness-of-fit Test
In this example, a discrete binomial random sample of size 1000 with binomial parameter
p
= 0.3 and binomial sample size 5 is generated via Random.nextBinomial. Random.setSeed is first used to set the seed. After the ChiSquaredTest constructor is called, the random observations are added to the test one at a time to simulate streaming data. The Chi-squared statistic, p
-value, and Degrees of freedom are then computed and printed.
using System;
using Imsl.Stat;
public class ChiSquaredTestEx1 : ICdfFunction
{
public double CdfFunction(double x)
{
return Cdf.Binomial((int) x, 5, 0.3);
}
public static void Main(String[] args)
{
// Seed the random number generator
Imsl.Stat.Random rn = new Imsl.Stat.Random(123457);
rn.Multiplier = 16807;
// Construct a ChiSquaredTest object
ICdfFunction bindf = new ChiSquaredTestEx1();
double[] cutp = new double[]{0.5, 1.5, 2.5, 3.5, 4.5};
int nParameters = 0;
ChiSquaredTest cst =
new ChiSquaredTest(bindf, cutp, nParameters);
for (int i = 0; i < 1000; i++)
{
cst.Update(rn.NextBinomial(5, 0.3), 1.0);
}
// Print goodness-of-fit test statistics
Console.Out.WriteLine
("The Chi-squared statistic is " + cst.ChiSquared);
Console.Out.WriteLine("The P-value is " + cst.P);
Console.Out.WriteLine
("The Degrees of freedom are " + cst.DegreesOfFreedom);
}
}
Output
The Chi-squared statistic is 4.79629666357385
The P-value is 0.441242957205531
The Degrees of freedom are 5
Imsl.Stat.ChiSquaredTest: An expected value is less than five.
Link to C# source.