Commit Graph

492 Commits

Author SHA1 Message Date
Joseph Lizier 17bf0e0be7 Updating octave-java interface to use non-overloaded method signatures for int and boolean arrays (this seemed to have caused an issue on some versions with ints being converted to boolean first, thus losing all values except 0-1) 2019-07-23 11:33:04 +10:00
Joseph Lizier fba941362d Adding further unit tests for Conditional TE (continuous-valued) to check different delays on conditional variables, and patching test of validity of calling univariate versus multivariate method signatures. 2019-07-12 14:45:23 +10:00
Joseph Lizier 1db8a2ac63 Making local computation for CMI Gaussian calculator store the lastAverage if it was called with the previous observations 2019-05-17 22:47:16 +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 9f9c79bc95 Handling infinites in Chi square CDF function properly 2019-05-17 22:24:54 +10:00
Joseph Lizier 8542d217ea Added support for Chi^2 analytic distribution to support degrees of freedom 0 (this will handle e.g. where a source had no independent dimensions) 2019-05-17 22:20:54 +10:00
Joseph Lizier fce1b34a5c Adding NORMALISE and NOISE_LEVEL_TO_ADD properties to all conditional mutual information calculators for continuous-valued data (extends this capability from only KSG to Gaussian as well) 2019-04-03 00:12:00 +11: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 ecec4d20e3 Added unit tests for linear dependency possibilities for issue #16 2019-03-31 23:22:55 +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 2a0024ad83 Fixes issue #17: Handling sub-cases for linear redundancy within and across variables in the linear-Gaussian mutual information estimator. This is done by detecting such redundancies and either returning 0 or infinity as the requisite result. Mirrors how this is done for conditional MI. 2019-03-29 00:01:36 +11:00
Joseph Lizier 66676a2692 A rewrite of parts of the linear Gaussian conditional MI estimator, in order to more deftly handle linear dependencies within variables 1 and 2, and between each of them and the conditional. Previously we removed sub-variables of those arbitrarily, now the removal is targetted to those sub-variables that are problematic. Also required some variable name changes to reflect different ordering of how variables and the conditionals are concatenated in arrays. 2019-03-28 23:58:53 +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
Pedro Martinez Mediano 4908276333 GPU tests and example now compute multiple surrogates. 2018-11-25 19:45:48 +02:00
Pedro Martinez Mediano c616ba55d4 Added link to wiki in GPU loader error message. 2018-11-25 19:25:33 +02:00
jlizier 16015e0f12 Nearest neighbour searchers now return number of points found for findPointsWithinR as well as marking them in input arrays. Also added new method sumDistanceAboveThresholdForPointsWithinRs() for the univariate searcher (to be used in spiking TE estimator under development) 2018-11-24 21:16:36 +11:00
jlizier 8909c23fcc Incorporated auto-embedding in the TE multivariate via conditional MI common class. Much of the code is moved up from the TE multivariate KSG estimator; now the functionality is provided for multivariate Gaussian as well. Also necessitated adding the max_cor_num_surrogates property to TE multivariate Gaussian, and took the opportunity to make much of the whitespace here consistent, and unit tests added for Gaussian (tweaked slightly for KSG) 2018-10-18 00:58:17 +11:00
jlizier 42f8d01e26 Adding property of number of dimensions for the AIS multivariate calculator (and implemented in the via MI common class). Needed this to make multivariate TE embedding a bit neater, and it should be there anyway. 2018-10-18 00:51:37 +11:00
jlizier e1bad39e4e Added proper full definitions for the methods of the AIS multivariate interface; much of this is achieved by extending the univariate AIS interface (which mandates that the univariate methods must be supported). No current child classes required any changes as they all supported these already. Removed superfluous documentation in the AIS multivariate via MI class (as well as fixing whitespace inconsistencies therein) 2018-10-17 23:37:43 +11:00
jlizier da418c31a0 Added new auto-embedding capability for TE Gaussian into the AutoAnalyser GUI demo. Also added new auto-embedding drop down option of Max corrected AIS + TE for KSG as well, and debugged the getProperty returning of the number of nearest neighbours for Ragwitz criteria now that this occurs in the common superclass instead of in KSG (and gave this a reasonable default of 4) 2018-10-17 14:23:20 +11:00
jlizier a34bce25ba Enabled auto-embedding for TE Gaussian. Did so by bringing up auto-embedding for TE functionality up from the KSG estimator to the via Conditional MI class. Also added new property to Gaussian TE for number of surrogates to use for bias correction in embedding (if not using analytic bias correction), like Gaussian AIS. This also necessitated adding an empty preFinaliseAddObservations() method to the TE Gaussian multivariate estimator, to ensure it did not yet try to autoembed until that is enabled in the multivariate calculator. Unit tests included here as well (included using more samples for TE KSG autoembedding to ensure we get the correct answer more reliably -- should probably add a stronger effect for that too). 2018-10-17 13:49:09 +11:00
jlizier efb8243ed7 Altering TE Kraskov to do auto-embedding properly when we have added multiple observations with validity vectors. Also taking the opportunity to re-engineer the internals to lay groundwork for auto-embedding function to be shared with the Gaussian estimator at a later stage. Unit tests added here as well for the above. 2018-10-15 20:56:50 +11:00
jlizier 2ff6d8aeec Added getProperty for AIS Kraskov multivariate. Need to re-engineer this class for proper code re-use anyway. 2018-10-15 14:38:46 +11:00
jlizier 3aa1493d7f Added addObservations() method with sourceValid and destValid boolean arrays to TransferEntropyCalculatorViacondMutualInfo class 2018-09-21 10:34:01 +10:00
jlizier af1173ba5b Patching local MI discrete computation when we have a time difference of > 0 (we were getting an ArrayIndexOutOfBoundsException before) 2018-09-05 13:43:21 +10:00
jlizier 9dbe2f8578 Added to AutoAnalyser GUI for AIS surrogate-based bias correction (parameter being the number of surrogates) for max AIS corrected auto embedding, for kernel estimator as well as Gaussian (as an alternative to analytic). Also includes the implementing code for AIS Gaussian (was already committed for kernel) 2018-08-27 14:24:05 +10:00
jlizier ad31af03a7 Added throws Exception for computeSignificance() on multivariate Gaussian AIS calculator, because of throws clause introduced on underlying MI estimator 2018-08-27 13:21:29 +10:00
jlizier f502497256 Added bias correction option to AutoAnalyser GUI for Gaussian AIS, TE and CTE estimators 2018-08-27 13:19:00 +10:00
jlizier 7f9b1c0812 Patching bias correction for Guassian MI and CMI (some for MI was in line with previous work for CMI, which required extending here). Unit tests included. 2018-08-27 13:17:58 +10:00
jlizier fdec72aeff Added tracking of bias correction to ChiSquaredMeasurementDistribution, so the distribution is adjusted with bias correction. Should have been sent with previous commit for patch to CMI Gaussian bias correction 2018-08-27 00:29:59 +10:00
jlizier c32b8de8b0 Fixed a hanging issue with analytic bias correction for Guassian CMI, and added to AutoAnalyser GUI 2018-08-27 00:22:02 +10:00
jlizier b1a02be7db Adding sanity check that discrete ContextOfPastMeasure (and child classes, including AIS and TE) have k >= 0. 2018-08-26 22:48:37 +10:00
jlizier dc08e1c372 Catching OutOfMemoryError in Discrete calculator creation for all other discrete calculators (only MI was done in the previous commit). Also simplified constructor calls (with code re-use) for conditional TE. 2018-08-25 22:27:29 +10:00
jlizier 93c767999e Catching OutOfMemoryError in Discrete MI calculator creation 2018-08-25 20:59:05 +10:00
jlizier 908cf675a8 Added new constructor for TE Kraskov to pass in KSG algorithm number as an integer (It's not likely that it will be needed, but is there for completeness to match the AIS one) 2018-08-24 14:48:11 +10:00
jlizier 373ebbdd56 Enabling AIS KSG calculator to have underlying KSG algorithm changed via the "ALG_NUM" property 2018-08-24 14:47:21 +10:00
jlizier 7f4dfa7970 Added bias correction property for Gaussian MI to AutoAnalyser GUI 2018-08-22 16:00:52 +10:00
jlizier 323ef47475 Adding auto-embedding properies to AutoAnalyser GUI Active Info Storage for all continuous calculators (was only in KSG before) 2018-08-22 15:53:09 +10:00
jlizier 4b6fc39c72 Fixed tool tip pop-ups for Discrete and Binned estimators in AutoAnalyser GUI (they were using spurious values from a continuous calculator before) 2018-08-21 20:56:58 +10:00
jlizier 8c5aa51f57 AutoAnalyser: Added drop-down menus (aka comboboxes) for parameters whose values are amenable to selection in this way. All child classes updated to be compatible. GUI size adjusted here also. 2018-06-26 12:22:05 +10:00
jlizier 7fafabe451 Extending MI discrete calculator to allow different bases for each variable. This necessitates immediate removal of the (int,int) constructor (where the 2nd argument was the time difference), this will now be confusing between (base, timeDiff) and (base1, base2). In time we may bring it back, after we can be reasonably comfortable people have switched away from using (base, timeDiff). 2018-06-20 10:55:21 +10:00
jlizier 4170339426 Moving check of dimensionality for continuous variables in mixed CMI calculator common to the main setObservations() method 2018-06-19 23:57:41 +10:00
jlizier ca909dc60f Adding check of dimensionality of observations supplied to multivariate AIS calculators when univariate is expected. 2018-06-19 23:45:00 +10:00
jlizier 5bde6f295b Fixes issue #70 by providing setObservations(double[], int[], double[]) methods for the mixed CMI calculators (i.e. allowing univariate arrays to be passed in if dimension 1 was defined for both the continuous data and conditional). Unit test validating is included. 2018-06-19 23:08:13 +10:00
jlizier 643212840a Making indenting style consistent through file 2018-05-18 08:56:47 +10:00
jlizier fa9db58945 In AIS Gaussian unit test, switching property names for auto embedding to now reference the super class (AIS via Mutual Info) 2018-05-16 22:44:32 +10:00
jlizier 4ff4e4bfc9 Added unit tests for AIS Multivariate Gaussian calculator, including on auto-embedding, and that it functions ok for univariate data. 2018-05-16 22:43:46 +10:00
jlizier dfe7ef0334 Altering AIS Multivariate Via Mutual Info calculator -- and child classes, now including kernel estimator -- to support auto-embedding primarily via the parent methods of the univariate AIS calculator.
Also includes patching functionality when dimension == 1 to always use the underlying AIS univariate calculator consistently, and adding missing methods on adding observations with validity array.
Also includes some minor alterations to error messages.
Gaussian and Kernel Multivariate AIS calculators have the computeAdditionalBiasToRemove()  method implemented now to allow this; Gaussian calculator also adds the analytic computeSignificance() method, whilst Kernel calculator also adds a property for the number of surrogates to use in bias correction.
2018-05-16 22:42:32 +10:00
jlizier fcd30c6716 Minor changes to Javadocs for AIS kernel 2018-05-16 22:28:19 +10:00