Commit Graph

44 Commits

Author SHA1 Message Date
Joseph Lizier 3222b5a629 Implementation and unit test for KSG MI calculation with new samples (both algorithms 1 and 2) 2020-10-30 16:21:10 +11:00
Joseph Lizier 510f999d2e Adds addObservations calls with validity arrays for conditional transfer entropy 2020-05-15 17:34:00 +10:00
Joseph Lizier 1667b9fe7a Added utility for subsampling rows from 2D matrix 2019-07-25 14:36:54 +10:00
Joseph Lizier 681c9196ee Added methods to MatrixUtils (plus unit tests) for adding/removing/swapping sample points into existing means and covariances 2019-05-17 22:27:30 +10:00
Joseph Lizier d9db7a15ab Further clarifications for including NORMALISE and NOISE_LEVEL_TO_ADD properties to all mutual information calculators, and handling linear redundancy sub-cases 2019-04-03 00:07:05 +11:00
Joseph Lizier b1437452e4 Adding NORMALISE and NOISE_LEVEL_TO_ADD properties to all mutual information calculators for continuous-valued data (extends this capability from only KSG to Gaussian and kernel as well, the latter already had NORMALISE) 2019-04-02 12:38:17 +11:00
Joseph Lizier 988d32de70 Added bug fix within recent changes to MatrixUtils Cholesky decomposition calculation, along with unit testing of the linear dependency combinations for issue #17 2019-03-31 23:21:39 +11:00
Joseph Lizier d58c393c53 Added methods to MatrixUtils to make a Cholesky decomposition of independent components only (useful for MI and conditional MI calculations), with a required update to the NonPositiveDefiniteMatrixException to include a field defining which row in the matrix was a problem. Also includes code to convert between native int[] arrays and ArrayList<Integers>, and new method signatures for column selection from matricies.
Also added new unit tests for the Cholesky decomposition.
2019-03-28 23:52:47 +11:00
jlizier 9e77ebdadf Tweak to method to print out an array of ints 2017-11-22 20:49:05 +11:00
jlizier 62069dab16 Added several utilities for selecting columns to MatrixUtils 2017-03-23 14:31:38 +11:00
jlizier 77cf8e5f8e Major update to TransferEntropyCalculatorDiscrete so as to implement arbirtray source and dest embeddings and source-dest delay. Also included are associated unit tests, and modifications to MatrixUtils to support these. 2016-10-17 16:22:59 +11:00
joseph.lizier 62228651bc Adding getProperty() method to all conditional MI calculators and TE calculators (except for multivariate versions at this stage), in readiness for automated embedding being added to TE Kraskov to partially fix Issue 38 2015-06-04 04:27:23 +00:00
joseph.lizier 687978103c Added auto-embedding with Ragwitz criteria to AIS Kraskov calculator, partially addressing Issue 38. Also adds getProperty() method to AIS calculators and MI calculators. 2015-06-04 03:48:55 +00:00
joseph.lizier 6ade6d4311 Adding fast nearest neighbour searcher for univariate data (uses only a sorted array rather than whole k-d tree). Adds an abstract nearest neighbour searcher so calling classes don't necessarily need to know whether they're dealing with uni or multi-variates. MI and conditional MI Kraskov altered to use this where possible. 2014-10-30 04:04:16 +00:00
joseph.lizier bc2783b971 Fixes issue 31 -- implementing fast nearest neighbour search for Kraskov MI using a k-d tree structure. 2014-10-15 04:48:09 +00:00
joseph.lizier feb0f320ae Minor updates to javadocs regarding Active Info Storage Calculators. 2014-09-16 03:27:28 +00:00
joseph.lizier b68d77e18e Rudimentary Javadocs completed for the utils package 2014-08-13 15:18:47 +00:00
joseph.lizier 4a3532b25b Adding GPLv3 license statement to all code headers in the infodymamics.measures.mixed, utils and networkinference packages. 2014-08-06 06:31:24 +00:00
joseph.lizier 6a1bacba42 Adding notices about derived works from the JAMA project to source files 2014-08-06 05:20:17 +00:00
joseph.lizier 7515b53a11 Adding MatrixUtils method for max entropy discretisation 2014-08-01 03:29:55 +00:00
joseph.lizier 83f7de5472 Added interface for ConditionalTransferEntropy. Added abstract implementation ConditionalTransferEntropyCalculatorViaCondMutualInfo, and child classes for Kraskov and Gaussian implementations.
Added associated embedding method to MatrixUtils, and fixed a lot of header comments here. Minor fixes to comments and which methods are specified (e.g. setProperties) for TransferEntropy and Entropy calculators.
2014-04-17 05:58:13 +00:00
joseph.lizier 7a40b433b7 Added TransferEntropyCalculatorMultiVariateViaCondMutualInfo to facilitate estimation of multivariate TE by an underlying conditional mutual information calculator. Added linear-Gaussian TE estimator using this. Switched Kraskov multivariate TE estimator from a two MI estimator to use an underlying conditional mutual information calculator; removed old Kraskov "ByMulti" classes now. Removed some initialisation routines for TransferEntropyCalculatorViaCondMutualInfo so they tie in ok. 2014-04-08 10:41:49 +00:00
joseph.lizier 2571c3ae9e Rearchitected Active Info Storage calculators to use a common parent class for data collection, and underlying mutual information classes for the implementation specifics. Includes adding Kraskov and Gaussian Active Info Storage calculators, and implementing embedding delay for the past history. 2014-03-26 04:05:20 +00:00
joseph.lizier b4645584fe Added new method generateRandomPerturbations(int, int) to RandomGenerator, and switched all computeSignificance methods to use this (since there's no need for checking for distinct perturbations really, and this is much faster). Required adding sortIndices(double[]) method to MatrixUtils 2013-10-18 00:42:12 +00:00
joseph.lizier ce1a3b4b31 Extended fix to local cond MI values for handling linear redundancies amongst variables properly in ConditionalMICalculatorMultivariateGaussian - this resolves Issue 16 2013-07-06 13:54:02 +00:00
joseph.lizier 0907ed495e Handle linear redundancies amongst variables properly in ConditionalMICalculatorMultivariateGaussian. Still need to extend this to the local conditional MI values 2013-07-06 11:11:56 +00:00
joseph.lizier 524b277b54 Adding minor utility functions 2013-06-18 07:31:18 +00:00
joseph.lizier b17ba9b05c Minor alterations to utilities, including adding exceptions and adding to-do notes. 2013-03-18 05:55:43 +00:00
joseph.lizier 4bd22a0984 Reconditioned Conditional MI calculator Kraskov as a child class of Conditional MI calculator Common 2013-03-11 12:55:29 +00:00
joseph.lizier cd67da53a4 Patching linear Gaussian estimators to give empirical statistical significance given a certain number of observations.
Changed implementation of our conditional MI calculators Kraskov via algorithm 2 to my current interpretation of how this should be done.

Added a utility for lagged covariance in MatrixUtils
2013-03-04 06:08:38 +00:00
joseph.lizier 64f6986d45 Added single array addObservations routines for Complete TE calculator discrete. Removed duplicate copyIntoMatrix method from MatrixUtils (duplicated arrayCopy) 2013-01-23 00:45:01 +00:00
joseph.lizier afe224ab11 Added MatrixUtils.copyIntoMatrix utility function to copy part of one 2D matrix into another 2013-01-22 03:36:11 +00:00
joseph.lizier 030a172d82 Patched covariance calculation, added utils, patched analytic computation of distribution of MI with linear Gaussians, altered comments 2013-01-08 05:37:48 +00:00
joseph.lizier 731c17def1 Edited comments on MatrixUtils to talk about java-octave 2D matrix conversion issues 2012-10-25 14:08:27 +00:00
joseph.lizier 6e6a21f54b Added utility to convert a 1D matrix to a 2D container in MatrixUtils.
Comment changes to other classes.
2012-10-25 00:47:59 +00:00
joseph.lizier cda8689afb Made sure all discrete calculators use log_2 to make answers in bits (some were still using log of base).
Merged usual and debug methods for computing average MI in discrete calculator

Added setDebug to super InfoMeasureCalculator

Cleaned up header of InfoMeasureCalculator

Adding TODO comments for Kraskov calculators

Bug fix on MutualInfoCalculatorMultiVariateWithDiscreteKraskov - we weren't normalising incoming observations for computing local MI properly, this is fixed now.
2012-09-05 06:23:48 +00:00
joseph.lizier 07ce2d0e24 Added determinant computation via Cholesky decomposition for symmetric matrices (more efficient)
Utilising determinant computation via Cholesky decomposition in Gaussian entropy and MI calculators

Allowed ChannelCalculatorCommon.finaliseObservations() to throw Exceptions so that child classes can do so (in particular Gaussian MI needs to do so if it finds the variables are linearly dependent)
2012-08-17 07:28:50 +00:00
joseph.lizier b978034f18 Added implementation for local entropy in EntropyCalculatorMultiVariateGaussian + bug fixes
Added MutualInfoCalculatorMultiVariateWithDiscreteGaussian

Added many javadoc comments
2012-08-16 05:40:29 +00:00
joseph.lizier d19045014a Adding extra matrix utility functions to allow multivariate normal PDF to be calculated (including Cholesky decomposition, inversion of symmetric matrices), extra matrix multiplcation routines, etc.
Added routines in MathsUtils for uni- and multi-variate normal PDF and CDF (univariate only).

Implemented local MI for Gaussian MI. Pulled many routines into the MutualInfoMultiVariateCommon
2012-08-06 07:44:23 +00:00
joseph.lizier 9a86ee8152 Added classes for joint entropy and multivariate mutual information calculation with gaussian assumption.
Restructured MeasurementDistribution to have child classes EmpiricalMeasurementDistribution and AnalyticMeasurementDistribution - this resulted in many classes being altered.

Added ChiSquare distribution methods to MathsUtils.

Added more covariance methods to MatrixUtils.
2012-08-01 07:26:18 +00:00
joseph.lizier 6af2a5b0a1 Added more covariance methods to MatrixUtils.
Changed method signatures for initialisers for multivariate channel calculator (transfer entropy and mutual information) classes to have source dimensions before destination dimensions, in line with the addObservations (etc.) methods.
2012-07-23 07:29:52 +00:00
joseph.lizier 4bb762c119 Added implementation of differential entropy for Gaussian variables. 2012-07-20 12:33:23 +00:00
joseph.lizier 054044ccf6 Added doubleToIntArray() methods to allow Octave users to convert native double arrays to int arrays when required. 2012-07-18 05:22:12 +00:00
joseph.lizier 56d868ca00 Uploading whole of Java Information Dynamics toolkit for the first time. 2012-05-08 00:18:37 +00:00