Exemplo n.º 1
0
        public void SpearmanNullDistributionTest()
        {
            // Pick independent distributions for x and y, which needn't be normal and needn't be related.
            ContinuousDistribution xDistrubtion  = new UniformDistribution();
            ContinuousDistribution 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();
                ContinuousDistribution 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.KolmogorovSmirnovTest(testDistribution);
                Assert.IsTrue(r2.Probability > 0.05);

                Assert.IsTrue(testStatistics.PopulationMean.ConfidenceInterval(0.99).ClosedContains(testDistribution.Mean));
                Assert.IsTrue(testStatistics.PopulationVariance.ConfidenceInterval(0.99).ClosedContains(testDistribution.Variance));
            }
        }
Exemplo n.º 2
0
        //Helpmer method for PerformMoleculeCovarianceNetworkAnalysis(). Takes paired fold changes for two molecules and calculates a spearman's rho coefficient and associated p-value.
        //These data are returned in a Corrleation data object.
        public static Correlation GetSpearmanCorrelation(List <double> molecule_a_fold_changes, List <double> molecule_b_fold_changes, int molecule_a_identifier, int molecule_b_identifier)
        {
            Correlation new_correlation = new Correlation();

            new_correlation.mol_id_a    = molecule_a_identifier;
            new_correlation.mol_id_b    = molecule_b_identifier;
            new_correlation.data_points = molecule_a_fold_changes.Count();
            var bs    = new BivariateSample("dataOne", "dataTwo");
            int count = 0;

            for (int i = 0; i < molecule_a_fold_changes.Count; i++)
            {
                bs.Add(molecule_a_fold_changes[i], molecule_b_fold_changes[i]);
                count++;
            }
            var res = bs.SpearmanRhoTest();

            if (res.Statistic < 0)
            {
                new_correlation.correlation = res.Statistic;
                new_correlation.p_value     = (2 * res.LeftProbability); //2-tailed t-test
            }
            else
            {
                new_correlation.correlation = res.Statistic;
                new_correlation.p_value     = (2 * res.RightProbability); //2-tailed t-test
            }

            if (!double.IsNaN(new_correlation.correlation) && !double.IsNaN(new_correlation.p_value) && !double.IsInfinity(new_correlation.p_value) && !double.IsInfinity(new_correlation.correlation))
            {
                return(new_correlation);
            }
            return(null);
        }
        public void BivariateNullAssociation()
        {
            Random rng = new Random(314159265);

            // Create sample sets for our three test statisics
            Sample PS = new Sample();
            Sample SS = new Sample();
            Sample KS = new Sample();

            // variables to hold the claimed distribution of teach test statistic
            ContinuousDistribution PD = null;
            ContinuousDistribution SD = null;
            ContinuousDistribution KD = null;

            // generate a large number of bivariate samples and conduct our three tests on each

            for (int j = 0; j < 100; j++)
            {
                BivariateSample S = new BivariateSample();

                // sample size should be large so that asymptotic assumptions are justified
                for (int i = 0; i < 100; i++)
                {
                    double x = rng.NextDouble();
                    double y = rng.NextDouble();
                    S.Add(x, y);
                }

                TestResult PR = S.PearsonRTest();
                PS.Add(PR.Statistic);
                PD = PR.Distribution;
                TestResult SR = S.SpearmanRhoTest();
                SS.Add(SR.Statistic);
                SD = SR.Distribution;
                TestResult KR = S.KendallTauTest();
                KS.Add(KR.Statistic);
                KD = KR.Distribution;
            }

            // do KS to test whether the samples follow the claimed distributions
            //Console.WriteLine(PS.KolmogorovSmirnovTest(PD).LeftProbability);
            //Console.WriteLine(SS.KolmogorovSmirnovTest(SD).LeftProbability);
            //Console.WriteLine(KS.KolmogorovSmirnovTest(KD).LeftProbability);
            Assert.IsTrue(PS.KolmogorovSmirnovTest(PD).LeftProbability < 0.95);
            Assert.IsTrue(SS.KolmogorovSmirnovTest(SD).LeftProbability < 0.95);
            Assert.IsTrue(KS.KolmogorovSmirnovTest(KD).LeftProbability < 0.95);
        }
Exemplo n.º 4
0
        public static TestResult RunPairedTest(List <double> x, List <double> y, PairedTest pt)
        {
            BivariateSample s = new BivariateSample();

            s.Add(x, y);

            switch (pt)
            {
            case PairedTest.KendallTau:
                return(s.KendallTauTest());

            case PairedTest.PearsonR:
                return(s.PearsonRTest());

            case PairedTest.SpearmanRho:
                return(s.SpearmanRhoTest());

            case PairedTest.StudentT:
                return(s.PairedStudentTTest());

            default:
                return(null);
            }
        }