def testFishers(self): """Verify computation of Fisher's exact test (minimum-likelihood approach)""" from plugins.statisticalTests.Fishers import Fishers fishers = Fishers(preferences) # Ground truth obtained from R version 2.10 oneSided, twoSided = fishers.hypothesisTest(table1[0], table1[1], table1[2], table1[3]) self.assertAlmostEqual(oneSided, 0.16187126209690825) self.assertAlmostEqual(twoSided, 0.2715543327789185) oneSided, twoSided = fishers.hypothesisTest(table2[0], table2[1], table2[2], table2[3]) self.assertAlmostEqual(oneSided, 2.220446049e-16) self.assertAlmostEqual(twoSided, 2.220446049e-16)
from plugins.statisticalTests.Fishers import Fishers preferences = {} fishers = Fishers(preferences) sampleSizes = [ 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000 ] fout = open('effectSizeTest.txt', 'w') for sampleSize in sampleSizes: print sampleSize a = sampleSize / 2 b = sampleSize / 2 pValueTwoSided = 1.0 while pValueTwoSided > 0.05: pValueOneSided, pValueTwoSided = fishers.hypothesisTest( a, b, sampleSize, sampleSize) a += 1 p1 = float(a) / sampleSize p2 = float(b) / sampleSize fout.write( str(sampleSize) + ',' + str(p1 - p2) + ',' + str(p1 / p2) + ',' + str(pValueTwoSided) + ',' + str(a) + '\n')
fout = open('FishersTest.txt','w') random.seed() for C1 in C1s: print C1 totalSamples1 = C1 totalSamples2 = C1*2 relativelErrors = {} for a in xrange(0, maxX1): print a for b in xrange(a, maxX1): # calculate p-values fishersOneSided, fishersTwoSided = fishers.hypothesisTest(a, b, totalSamples1, totalSamples2) hypergeometricOneSided, hypergeometricTwoSided = hypergeometric.hypothesisTest(a, b, totalSamples1, totalSamples2) relativeError = 100 * (hypergeometricTwoSided - fishersTwoSided) / fishersTwoSided if fishersTwoSided < 1e-6: l = relativelErrors.get(1e-6, []) l.append(relativeError) relativelErrors[1e-6] = l elif fishersTwoSided < 1e-5: l = relativelErrors.get(1e-5, []) l.append(relativeError) relativelErrors[1e-5] = l elif fishersTwoSided < 1e-4: l = relativelErrors.get(1e-4, []) l.append(relativeError) relativelErrors[1e-4] = l elif fishersTwoSided < 1e-3:
fout = open('FishersTest.txt', 'w') random.seed() for C1 in C1s: print C1 totalSamples1 = C1 totalSamples2 = C1 * 2 relativelErrors = {} for a in xrange(0, maxX1): print a for b in xrange(a, maxX1): # calculate p-values fishersOneSided, fishersTwoSided = fishers.hypothesisTest( a, b, totalSamples1, totalSamples2) hypergeometricOneSided, hypergeometricTwoSided = hypergeometric.hypothesisTest( a, b, totalSamples1, totalSamples2) relativeError = 100 * (hypergeometricTwoSided - fishersTwoSided) / fishersTwoSided if fishersTwoSided < 1e-6: l = relativelErrors.get(1e-6, []) l.append(relativeError) relativelErrors[1e-6] = l elif fishersTwoSided < 1e-5: l = relativelErrors.get(1e-5, []) l.append(relativeError) relativelErrors[1e-5] = l elif fishersTwoSided < 1e-4: l = relativelErrors.get(1e-4, []) l.append(relativeError)
from plugins.statisticalTests.Fishers import Fishers preferences = {} fishers = Fishers(preferences) sampleSizes = [20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000] fout = open('effectSizeTest.txt' ,'w') for sampleSize in sampleSizes: print sampleSize a = sampleSize / 2 b = sampleSize / 2 pValueTwoSided = 1.0 while pValueTwoSided > 0.05: pValueOneSided, pValueTwoSided = fishers.hypothesisTest(a, b, sampleSize, sampleSize) a += 1 p1 = float(a) / sampleSize p2 = float(b) / sampleSize fout.write(str(sampleSize) + ',' + str(p1-p2) + ',' + str(p1/p2) + ',' + str(pValueTwoSided) + ',' + str(a) + '\n')