Updated mixed-continiuous CMI KSG estimator, for the bias correction based on number of continuous variables. This was identified from testing, and aligns with testing so far.

This commit is contained in:
jlizier 2022-09-05 17:51:49 +10:00
parent 72024c7299
commit 2b0a5cb943
1 changed files with 6 additions and 1 deletions

View File

@ -255,7 +255,12 @@ public class ConditionalMutualInfoCalculatorMultiVariateWithDiscreteKraskov
averageDiGammas /= (double) N;
averageInverseCountInJointXZ /= (double) N;
averageInverseCountInJointYZ /= (double) N;
condMi = MathsUtils.digamma(k) - 2.0 / (double) k +
// TODO Have changed the 2/k to 1/k here, since the correction should be (m-1)/k for m continuous variables
// (as written for the MI estimator).
// Early testing when this was still 2/k seems to bear this out - as those results were
// incorrectly low by 1/k.
// Need to fully test this properly.
condMi = MathsUtils.digamma(k) - 1.0 / (double) k +
averageDiGammas + averageInverseCountInJointXZ +
averageInverseCountInJointYZ;
miComputed = true;