Tchanders / InformationMeasures.jl

Entropy, mutual information and higher order measures from information theory, with various estimators and discretisation methods.
Other
66 stars 14 forks source link

What is the target variable for PID? #24

Closed ljschumacher closed 3 years ago

ljschumacher commented 5 years ago

Thanks for providing this package.

From the documentation it seems not immediately clear what the target variable if for get_partial_information_decomposition(x,y,z)

Quick experimentation suggests that the above is symmetric in x,y, so z must be the target variable? It would be great if you could confirm this, and maybe update the documentation.

Alternatively the output of the above function could be a little more verbose, e.g. instead of "unique_1" it could say "unique(3;1)" (if that's what it means).

Tchanders commented 5 years ago

Hi @ljschumacher - thanks for the feedback.

Yes that's correct, z is the target variable. I see that the return values aren't documented properly - I'll go through and fix that.

Let's hold off on changing the "unique_1" key for now since it would be a breaking change, but we can revisit that if there are further comments about it.

ljschumacher commented 5 years ago

Thanks for updating the documentation. Similarly, when all_orientations=true, does pid["y"]["unique_1"] mean refer to x, not z?

Tchanders commented 5 years ago

Yes that's correct:

pid["y"]["unique_1"] - unique information between x and y pid["y"]["unique_2"] - unique information between z and y pid["z"]["unique_1"] - unique information between x and z pid["z"]["unique_2"] - unique information between y and z

We can add this to the documentation update.