def test_peakentropy_infodyn_kernel(self): self.entropies_infodyn_kernel = [] for timelag in range(self.delay - 5, self.delay + 6): print("Results for timelag of: ", str(timelag)) [_, x_hist, y_hist] = autoreg_datagen( self.delay, timelag, self.samples, self.sub_samples ) # Normalize data # Not explicitly required as this is done by infodynamics package # if setProperty("NORMALISE", "true" is called), but good practice # for general example. x_hist_norm = preprocessing.scale(x_hist, axis=1) y_hist_norm = preprocessing.scale(y_hist, axis=1) # Calculate transfer entropy according to infodynamics method: result_infodyn, _ = te_info( "infodynamics.jar", "kernel", x_hist_norm[0], y_hist_norm[0], **{"kernel_width": 0.1} ) self.entropies_infodyn_kernel.append(result_infodyn) print("Infodynamics TE result: %.4f bits" % result_infodyn) print(self.entropies_infodyn_kernel) maxval = max(self.entropies_infodyn_kernel) # The maximum lags with one sample delayedval = self.entropies_infodyn_kernel[self.delay] self.assertEqual(maxval, delayedval)
def test_peakentropy_infodyn_kraskov_noautoembed(self): self.entropies_infodyn_kraskov = [] for timelag in range(self.delay - 5, self.delay + 6): print("Results for timelag of: ", str(timelag)) [x_pred, x_hist, y_hist] = autoreg_datagen(self.delay, timelag, self.samples, self.sub_samples) # Normalize data # Not explicitly required as this is done by infodyns package if # setProperty("NORMALISE", "true" is called), but good practice # for general example. x_hist_norm = preprocessing.scale(x_hist, axis=1) y_hist_norm = preprocessing.scale(y_hist, axis=1) # Calculate transfer entropy according to infodynamics method: result_infodyn, [significance, properties] = \ te_info('infodynamics.jar', 'kraskov', x_hist_norm[0], y_hist_norm[0], test_significance=False, auto_embed=False) self.entropies_infodyn_kraskov.append(result_infodyn) print("Infodynamics TE result: %.4f bits" % result_infodyn) print(properties) print(significance) print(self.entropies_infodyn_kraskov) maxval = max(self.entropies_infodyn_kraskov) # The maximum lags with one sample delayedval = self.entropies_infodyn_kraskov[self.delay] self.assertEqual(maxval, delayedval)
def test_peakentropy_infodyn_kraskov_autoembed(self): self.entropies_infodyn_kraskov = [] for timelag in range(self.delay - 5, self.delay + 6): print("Results for timelag of: ", str(timelag)) [x_pred, x_hist, y_hist] = autoreg_datagen( self.delay, timelag, self.samples, self.sub_samples ) # Normalize data # Not explicitly required as this is done by infodyns package if # setProperty("NORMALISE", "true" is called), but good practice # for general example. x_hist_norm = preprocessing.scale(x_hist, axis=1) y_hist_norm = preprocessing.scale(y_hist, axis=1) # Calculate transfer entropy according to infodynamics method: result_infodyn, [ [te_significance, mi_significance], properties, mutualinfo, ] = te_info( "infodynamics.jar", "kraskov", x_hist_norm[0], y_hist_norm[0], test_significance=False, auto_embed=True, ) self.entropies_infodyn_kraskov.append(result_infodyn) print("Infodynamics TE result: %.4f bits" % result_infodyn) print(properties) print(te_significance) print(mi_significance) print(mutualinfo) print(self.entropies_infodyn_kraskov) maxval = max(self.entropies_infodyn_kraskov) # The maximum lags with one sample delayedval = self.entropies_infodyn_kraskov[self.delay] self.assertEqual(maxval, delayedval)