package CFM;
/*
* Mutual Information
* metodo che calcola la dipendenza tra due entit�
*/
public class PMI implements CorrelationFunction{
private static final int num = 2048;
public double calculateCorrelation(double p_x, double p_y, double p_x_y) {
int isZero = new Double(p_x_y).compareTo(0.0);
int isOne = new Double(p_x_y).compareTo(1.0);
if (isZero == 0)
return -num;
if (isOne == 0)
return num;
double log2 = Math.log(2);
/*double ex = - p_x * Math.log(p_x)/log2;
double ey = - p_y * Math.log(p_y)/log2;
double exy = - p_x_y * Math.log(p_x_y)/log2;
return ex + ey - exy;*/
return (Math.log(p_x_y) - Math.log(p_x) - Math.log(p_y))/Math.log(2);
}
}