本文整理汇总了C#中Sample.KuiperTest方法的典型用法代码示例。如果您正苦于以下问题:C# Sample.KuiperTest方法的具体用法?C# Sample.KuiperTest怎么用?C# Sample.KuiperTest使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sample
的用法示例。
在下文中一共展示了Sample.KuiperTest方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FisherTest
public void FisherTest()
{
// we will need a RNG
Random rng = new Random(314159);
int n1 = 1;
int n2 = 2;
// define chi squared distributions
Distribution d1 = new ChiSquaredDistribution(n1);
Distribution d2 = new ChiSquaredDistribution(n2);
// create a sample of chi-squared variates
Sample s = new Sample();
for (int i = 0; i < 250; i++) {
double x1 = d1.InverseLeftProbability(rng.NextDouble());
double x2 = d2.InverseLeftProbability(rng.NextDouble());
double x = (x1/n1) / (x2/n2);
s.Add(x);
}
// it should match a Fisher distribution with the appropriate parameters
Distribution f0 = new FisherDistribution(n1, n2);
TestResult t0 = s.KuiperTest(f0);
Console.WriteLine(t0.LeftProbability);
Assert.IsTrue(t0.LeftProbability < 0.95);
// it should be distinguished from a Fisher distribution with different parameters
Distribution f1 = new FisherDistribution(n1 + 1, n2);
TestResult t1 = s.KuiperTest(f1);
Console.WriteLine(t1.LeftProbability);
Assert.IsTrue(t1.LeftProbability > 0.95);
}
示例2: KolmogorovNullDistributionTest
public void KolmogorovNullDistributionTest()
{
// The distribution is irrelevent; pick one at random
Distribution sampleDistribution = new LognormalDistribution();
// Loop over various sample sizes
foreach (int n in TestUtilities.GenerateIntegerValues(2, 128, 16)) {
// Create a sample to hold the KS statistics
Sample testStatistics = new Sample();
// and a variable to hold the claimed null distribution, which should be the same for each test
Distribution nullDistribution = null;
// Create a bunch of samples, each with n data points
for (int i = 0; i < 256; i++) {
// Just use n+i as a seed in order to get different points each time
Sample sample = TestUtilities.CreateSample(sampleDistribution, n, 512 * n + i + 1);
// Do a KS test of the sample against the distribution each time
TestResult r1 = sample.KolmogorovSmirnovTest(sampleDistribution);
// Record the test statistic value and the claimed null distribution
testStatistics.Add(r1.Statistic);
nullDistribution = r1.Distribution;
}
// Do a Kuiper test of our sample of KS statistics against the claimed null distribution
// We could use a KS test here instead, which would be way cool and meta, but we picked Kuiper instead for variety
TestResult r2 = testStatistics.KuiperTest(nullDistribution);
Console.WriteLine("{0} {1} {2}", n, r2.Statistic, r2.LeftProbability);
Assert.IsTrue(r2.RightProbability > 0.05);
// Test moment matches, too
Console.WriteLine(" {0} {1}", testStatistics.PopulationMean, nullDistribution.Mean);
Console.WriteLine(" {0} {1}", testStatistics.PopulationVariance, nullDistribution.Variance);
Assert.IsTrue(testStatistics.PopulationMean.ConfidenceInterval(0.99).ClosedContains(nullDistribution.Mean));
Assert.IsTrue(testStatistics.PopulationVariance.ConfidenceInterval(0.99).ClosedContains(nullDistribution.Variance));
}
}
示例3: SampleKuiperTest
public void SampleKuiperTest()
{
// this test has a whiff of meta-statistics about it
// we want to make sure that the Kuiper test statistic V is distributed according to the Kuiper
// distribution; to do this, we create a sample of V statistics and do KS/Kuiper tests
// comparing it to the claimed Kuiper distribution
// start with any 'ol underlying distribution
Distribution distribution = new ExponentialDistribution(2.0);
// generate some samples from it, and for each one get a V statistic from a KS test
Sample VSample = new Sample();
Distribution VDistribution = null;
for (int i = 0; i < 25; i++) {
// the sample size must be large enough that the asymptotic assumptions are satistifed
// at the moment this test fails if we make the sample size much smaller; we should
// be able shrink this number when we expose the finite-sample distributions
Sample sample = CreateSample(distribution, 250, i);
TestResult kuiper = sample.KuiperTest(distribution);
double V = kuiper.Statistic;
Console.WriteLine("V = {0}", V);
VSample.Add(V);
VDistribution = kuiper.Distribution;
}
// check on the mean
Console.WriteLine("m = {0} vs. {1}", VSample.PopulationMean, VDistribution.Mean);
Assert.IsTrue(VSample.PopulationMean.ConfidenceInterval(0.95).ClosedContains(VDistribution.Mean));
// check on the standard deviation
Console.WriteLine("s = {0} vs. {1}", VSample.PopulationStandardDeviation, VDistribution.StandardDeviation);
Assert.IsTrue(VSample.PopulationStandardDeviation.ConfidenceInterval(0.95).ClosedContains(VDistribution.StandardDeviation));
// do a KS test comparing the sample to the expected distribution
TestResult kst = VSample.KolmogorovSmirnovTest(VDistribution);
Console.WriteLine("D = {0}, P = {1}", kst.Statistic, kst.LeftProbability);
Assert.IsTrue(kst.LeftProbability < 0.95);
// do a Kuiper test comparing the sample to the expected distribution
TestResult kut = VSample.KuiperTest(VDistribution);
Console.WriteLine("V = {0}, P = {1}", kut.Statistic, kut.LeftProbability);
Assert.IsTrue(kut.LeftProbability < 0.95);
}
示例4: SpearmanNullDistributionTest
public void SpearmanNullDistributionTest()
{
// pick independent distributions for x and y, which needn't be normal and needn't be related
Distribution xDistrubtion = new UniformDistribution();
Distribution yDistribution = new CauchyDistribution();
Random rng = new Random(1);
// generate bivariate samples of various sizes
foreach (int n in TestUtilities.GenerateIntegerValues(4, 64, 8)) {
Sample testStatistics = new Sample();
Distribution testDistribution = null;
for (int i = 0; i < 128; i++) {
BivariateSample sample = new BivariateSample();
for (int j = 0; j < n; j++) {
sample.Add(xDistrubtion.GetRandomValue(rng), yDistribution.GetRandomValue(rng));
}
TestResult result = sample.SpearmanRhoTest();
testStatistics.Add(result.Statistic);
testDistribution = result.Distribution;
}
TestResult r2 = testStatistics.KuiperTest(testDistribution);
Console.WriteLine("n={0} P={1}", n, r2.LeftProbability);
Assert.IsTrue(r2.RightProbability > 0.05);
Assert.IsTrue(testStatistics.PopulationMean.ConfidenceInterval(0.99).ClosedContains(testDistribution.Mean));
Assert.IsTrue(testStatistics.PopulationVariance.ConfidenceInterval(0.99).ClosedContains(testDistribution.Variance));
}
}