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)); } }
//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); }
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); } }