edu.msu.cme.rdp.classifier.comparison
Class SigCalculator
java.lang.Object
edu.msu.cme.rdp.classifier.comparison.SigCalculator
public class SigCalculator
- extends java.lang.Object
Constructor Summary |
SigCalculator(int total1,
int total2,
float conf)
Creates a new instance of SigCalculater |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
FREQ_LIMIT
private static final int FREQ_LIMIT
- See Also:
- Constant Field Values
s1Total
private int s1Total
s2Total
private int s2Total
combinedTotal
private int combinedTotal
faction
private double faction
ratio_1
private double ratio_1
ratio_2
private double ratio_2
confidence
private float confidence
ztable
private Ztable ztable
SigCalculator
public SigCalculator(int total1,
int total2,
float conf)
- Creates a new instance of SigCalculater
getS1Total
public int getS1Total()
getS2Total
public int getS2Total()
getConfidence
public float getConfidence()
calculateSig
public double calculateSig(int s1,
int s2)
smallProportionTest
double smallProportionTest(int s1,
int s2)
- This test works good for small propotion <5%
Calculates the probability for y occurrences in sample2 when x
occurrences is observed in sample1.
Given sample1 size N1 and sample2 size N2, the probability equation is:
p(y|x) = (N2/N1)^y * (x+y)! /x! /y! /(1+N2/N1)^(x+y+1)
to avoid data overflow, we modify the equation:
p(y|x) = exp( log(p(y|x) )
log(p(y|x) = y*log(N2/N1) - (x+y+1)*log(1+N2/N1)
+ log( (x+y)!) - log(x!) -log(y!)
Because we assume the sample distribution follows the Poisson distribution
To calculate the cumulative distribution:
we sum p(y|x) for y in [0, y_min] if y/N2 <= x/N1
or p(x|y) for x in [0, x_min] if x/N1 <= y/N2
we need to multiply the p by 2 to give the probability on both end.
calFactorial
double calFactorial(int x,
int y)
largeProportionTest
double largeProportionTest(int s1,
int s2)