MATLAB package to estimate mutual information (MI) between a multidimensional signal and a discrete signal. Originally developed to estimate MI between multi-channel neural signals and discrete targets in the context of brain-computer interfaces.
Main functions:
-
computeInfoGaussian()
- estimates MI using various methods modelling the multidimensional signal as distinct Gaussians for each value of the discrete signal (the full signal with be a mixute of Gaussians) -
computeInfoGaussianNoise()
- estimates MI using the Gaussian mixture model with bias reduction via incremental noisy dimensions -
computeInfoDirect()
- estimates MI using the direct method with an optional Panzeri-Treves bias correction. The direct method approximates the signal PDF with a sample histogram and requires the signal to be pre-discretized. The direct method usually works only on signals with small number of dimensions (<5-10, then runs out of memory) and produces significantly biased estimates -
computeInfoDecoder()
- estimates MI using the confusion matrix produced by decoding the multidimensional signal (mapping onto the discrete signal space) -
computeInfoKnn()
- estimates MI using the K-nearest neighbor method -
computeInfoKDE()
- estimates MI using the kernel density estimator method -
computeInfoIBTB()
- estimates MI using Information Breakdown ToolBox, which is described in detail in this article. The toolbox needs to be downloaded separately.
Supporting functions:
-
generateData()
- generates multidimensional and discrete signals -
discretizeData()
- discretizes multidimensional signals -
decodeData()
- decodes multidimensional signals (maps them onto the discrete signal space) -
computeEntropyAnalytic()
- computes analytical entropy of several multivariate distributions -
shrinkCov()
- estimates population covariance matrices from a sample using several shrinkage methods, which improve MI estimation using Gaussian methods.
If you have any questions about the package, shoot me an email at [email protected].