コード例 #1
0
    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)
コード例 #2
0
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')
コード例 #3
0
ファイル: FisherDefinitions.py プロジェクト: beiko-lab/STAMP
  
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:
コード例 #4
0
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)
コード例 #5
0
ファイル: effectSize.py プロジェクト: beiko-lab/STAMP
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')