protected void Compute(int sampleSize, double[] observed, double[] expected)
{
// Approximate using a Chi-Square distribution
this.ObservedProportions = observed;
this.HypothesizedProportions = expected;
double sum = 0;
for (int i = 0; i < ObservedProportions.Length; i++)
{
double e = sampleSize * expected[i];
double u = sampleSize * observed[i] - e;
sum += (u * u) / e;
}
base.Compute(sum, observed.Length - 1);
}