mirror of https://github.com/jlizier/jidt
Adding unit test for no conditional on CMI Gaussian
This commit is contained in:
parent
4f5d8f894b
commit
a554361de9
|
|
@ -258,7 +258,7 @@ public class ActiveInfoStorageCalculatorViaMutualInfo implements
|
|||
* and embedding delay ({@link #TAU_PROP_NAME}). Default is {@link #AUTO_EMBED_METHOD_NONE} meaning
|
||||
* values are set manually; other accepted values include: {@link #AUTO_EMBED_METHOD_RAGWITZ} for use
|
||||
* of the Ragwitz criteria and {@link #AUTO_EMBED_METHOD_MAX_CORR_AIS} for using
|
||||
* the maz bias-corrected AIS criteria (both searching up to {@link #PROP_K_SEARCH_MAX} and
|
||||
* the max bias-corrected AIS criteria (both searching up to {@link #PROP_K_SEARCH_MAX} and
|
||||
* {@link #PROP_TAU_SEARCH_MAX}, as outlined by Garland et al. in the references list above).
|
||||
* Use of any value other than {@link #AUTO_EMBED_METHOD_NONE}
|
||||
* will lead to any previous settings for k and tau (via e.g. {@link #initialise(int, int)} or
|
||||
|
|
|
|||
|
|
@ -159,6 +159,40 @@ public class ConditionalMutualInfoMultiVariateTester extends
|
|||
condMi, 0.0000000001);
|
||||
}
|
||||
|
||||
public void testNoConditional() throws Exception {
|
||||
ArrayFileReader afr = new ArrayFileReader("demos/data/4ColsPairedOneStepNoisyDependence-1.txt");
|
||||
double[][] data = afr.getDouble2DMatrix();
|
||||
double[] source = MatrixUtils.selectColumn(data, 1);
|
||||
double[] dest = MatrixUtils.selectColumn(data, 2);
|
||||
|
||||
// Set up the value we expect from MI:
|
||||
MutualInfoCalculatorMultiVariateGaussian miCalc =
|
||||
new MutualInfoCalculatorMultiVariateGaussian();
|
||||
miCalc.initialise(1, 1);
|
||||
miCalc.setObservations(source, dest);
|
||||
double mi = miCalc.computeAverageLocalOfObservations();
|
||||
|
||||
// Now compute via CMI calculator with null passed:
|
||||
ConditionalMutualInfoCalculatorMultiVariateGaussian condMiCalc =
|
||||
new ConditionalMutualInfoCalculatorMultiVariateGaussian();
|
||||
condMiCalc.initialise(1, 1, 0);
|
||||
condMiCalc.setObservations(source, dest, null);
|
||||
double condMi = condMiCalc.computeAverageLocalOfObservations();
|
||||
assertEquals(mi, condMi, 0.000001);
|
||||
|
||||
// Now compute via CMI calculator with dummy column passed:
|
||||
condMiCalc.initialise(1, 1, 0);
|
||||
condMiCalc.setObservations(source, dest, MatrixUtils.selectColumn(data, 3));
|
||||
condMi = condMiCalc.computeAverageLocalOfObservations();
|
||||
assertEquals(mi, condMi, 0.000001);
|
||||
|
||||
// Now compute via CMI calculator with empty column passed (all as 2D):
|
||||
condMiCalc.initialise(1, 1, 0);
|
||||
condMiCalc.setObservations(MatrixUtils.selectColumns(data, 1, 1), MatrixUtils.selectColumns(data, 2, 1), new double[1000][0]);
|
||||
condMi = condMiCalc.computeAverageLocalOfObservations();
|
||||
assertEquals(mi, condMi, 0.000001);
|
||||
}
|
||||
|
||||
public void testBiasCorrectionDoesNotChangeAnalyticPValue() throws Exception {
|
||||
ConditionalMutualInfoCalculatorMultiVariateGaussian cmiCalc =
|
||||
new ConditionalMutualInfoCalculatorMultiVariateGaussian();
|
||||
|
|
@ -189,7 +223,7 @@ public class ConditionalMutualInfoMultiVariateTester extends
|
|||
ChiSquareMeasurementDistribution distroBiasCorrected = cmiCalc.computeSignificance();
|
||||
assertEquals(avBiasCorrected, distroBiasCorrected.actualValue, 0.0000001);
|
||||
// And now check that the pValues are unchanged whether we bias correct or not:
|
||||
assertEquals(distroNotBiasCorrected.pValue, distroBiasCorrected.pValue);
|
||||
assertEquals(distroNotBiasCorrected.pValue, distroBiasCorrected.pValue, 0.0000001);
|
||||
}
|
||||
|
||||
protected int timeStepsDepCheck = 100;
|
||||
|
|
@ -395,7 +429,7 @@ public class ConditionalMutualInfoMultiVariateTester extends
|
|||
// - both dimensions are copied
|
||||
double[][] sourceData = rg.generateNormalData(timeStepsDepCheck, dimensions,
|
||||
0, 1);
|
||||
double[][] condData = rg.generateNormalData(timeStepsDepCheck, dimensions,
|
||||
double[][] condData = rg.generateNormalData(timeStepsDepCheck, conditionalDims,
|
||||
0, 1);
|
||||
double[][] destData = MatrixUtils.arrayCopy(condData);
|
||||
|
||||
|
|
@ -447,4 +481,5 @@ public class ConditionalMutualInfoMultiVariateTester extends
|
|||
condMiCalc.setObservations(MatrixUtils.selectColumns(destData, 0, 1), sourceData, condData);
|
||||
assertTrue(Double.isInfinite(condMiCalc.computeAverageLocalOfObservations()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue