本文整理汇总了C#中Histogram.ChiSquaredTest方法的典型用法代码示例。如果您正苦于以下问题:C# Histogram.ChiSquaredTest方法的具体用法?C# Histogram.ChiSquaredTest怎么用?C# Histogram.ChiSquaredTest使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Histogram
的用法示例。
在下文中一共展示了Histogram.ChiSquaredTest方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PermutationDistribution
public void PermutationDistribution()
{
// We want to test that GetRandomPermutation actually samples all permutations equally
// Don't let n get too big or we will have a ridiculously large number of bins
for (int n = 2; n < 8; n++) {
// Build a mapping that assign each permutation a unique integer index from 0 to (n! - 1)
Dictionary<Permutation, int> index = new Dictionary<Permutation, int>();
int count = 0;
foreach (Permutation p in Permutation.Permutations(n)) {
index.Add(p, count);
count++;
}
// Create a historgram of randomly generated permutation indexes
Histogram histogram = new Histogram(count);
Random rng = new Random(2);
for (int i = 0; i < 8 * count; i++) {
Permutation p = Permutation.GetRandomPermutation(n, rng);
histogram.Bins[index[p]].Increment();
}
//for (int i = 0; i < count; i++) {
// Console.WriteLine("{0} {1}", i, bins[i].Counts);
//}
TestResult result = histogram.ChiSquaredTest(new DiscreteUniformDistribution(0, count - 1));
Console.WriteLine(result.RightProbability);
Assert.IsTrue(result.RightProbability > 0.01);
}
}
示例2: ChiSquareDistribution
public void ChiSquareDistribution()
{
int B = 8;
Random rng = new Random(0);
//BinomialDistribution d = new BinomialDistribution(0.25, 6);
//DiscreteUniformDistribution d = new DiscreteUniformDistribution(0, 4);
//BernoulliDistribution d = new BernoulliDistribution(0.25);
DiscreteDistribution d = new PoissonDistribution(2.0);
Sample s = new Sample();
ChiSquaredDistribution nullDistribution = null;
for (int i = 0; i < 512; i++) {
Histogram h = new Histogram(B);
for (int j = 0; j < 1024; j++) {
int k = d.GetRandomValue(rng);
h.Add(k);
//if (k < h.Count) h[k].Increment();
//h[d.GetRandomValue(rng)].Increment();
}
TestResult cr = h.ChiSquaredTest(d);
nullDistribution = (ChiSquaredDistribution) cr.Distribution;
//Console.WriteLine(((ChiSquaredDistribution) cr.Distribution).DegreesOfFreedom);
s.Add(cr.Statistic);
}
Console.WriteLine(nullDistribution.DegreesOfFreedom);
TestResult kr = s.KuiperTest(nullDistribution);
Console.WriteLine(kr.LeftProbability);
}
示例3: TwoSampleKS2
public void TwoSampleKS2()
{
int n = 2 * 3 * 3; int m = 2 * 2 * 3;
Random rng = new Random(0);
NormalDistribution d = new NormalDistribution();
Histogram h = new Histogram((int) AdvancedIntegerMath.LCM(n, m) + 1);
//int[] h = new int[AdvancedIntegerMath.LCM(n, m) + 1];
int count = 1000;
for (int i = 0; i < count; i++) {
Sample A = new Sample();
for (int j = 0; j < n; j++) A.Add(d.GetRandomValue(rng));
Sample B = new Sample();
for (int j = 0; j < m; j++) B.Add(d.GetRandomValue(rng));
TestResult r = Sample.KolmogorovSmirnovTest(A, B);
int k = (int) Math.Round(r.Statistic * AdvancedIntegerMath.LCM(n, m));
//Console.WriteLine("{0} {1}", r.Statistic, k);
h[k].Increment();
//h[k] = h[k] + 1;
}
KolmogorovTwoSampleExactDistribution ks = new KolmogorovTwoSampleExactDistribution(n, m);
double chi2 = 0.0; int dof = 0;
for (int i = 0; i < h.Count; i++) {
double ne = ks.ProbabilityMass(i) * count;
Console.WriteLine("{0} {1} {2}", i, h[i].Counts, ne);
if (ne > 4) {
chi2 += MoreMath.Sqr(h[i].Counts - ne) / ne;
dof++;
}
}
Console.WriteLine("chi^2={0} dof={1}", chi2, dof);
TestResult r2 = h.ChiSquaredTest(ks);
ChiSquaredDistribution rd = (ChiSquaredDistribution) r2.Distribution;
Console.WriteLine("chi^2={0} dof={1} P={2}", r2.Statistic, rd.DegreesOfFreedom, r2.RightProbability);
}
示例4: DiscreteDistributionRandomValues
public void DiscreteDistributionRandomValues()
{
foreach (DiscreteDistribution distribution in distributions) {
int max;
if (distribution.Maximum < 128) {
max = distribution.Maximum + 1;
} else {
max = (int) Math.Round(distribution.Mean + 2.0 * distribution.StandardDeviation);
}
Console.WriteLine("{0} {1}", distribution.GetType().Name, max);
Histogram h = new Histogram(max);
Random rng = new Random(314159265);
for (int i = 0; i < 1024; i++) h.Add(distribution.GetRandomValue(rng));
TestResult result = h.ChiSquaredTest(distribution);
Console.WriteLine("{0} {1}", result.Statistic, result.RightProbability);
Assert.IsTrue(result.RightProbability > 0.05);
}
}