ELIFE-ASU / Inform

A cross platform C library for information analysis of dynamical systems
https://elife-asu.github.io/Inform
MIT License
23 stars 3 forks source link

Extrapolating to Infinite History Lengths #24

Open dglmoore opened 8 years ago

dglmoore commented 8 years ago

One feature that may be of value is a method for extrapolating the finite-history estimates of active information, transfer entropy, etc... to their full infinite-history counterparts. This is a feature that none of the related projects, e.g. JIDT, seem to have.

Proposed Approach

The obvious method for doing this is to implement a suite of curve-fitting functions which, given a sequence of values parameterized by k, would fit a closed-form curve. Taking the limit as k → ∞, would give an approximation of the infinite-history form of the various measures.

colemathis commented 8 years ago

This seems like it would be a reasonable solution to me, but I'm assuming the user would have to specify a functional form to fit the history length? That shouldn't be hard, we would just need to have a few options ready-made, polynomial, exponential etc.

dglmoore commented 8 years ago

Maybe something like (making this up right now...)

typedef struct inform_polynomial
{
    int degree;
    double *coefficients;
} inform_polynomial;

// IEEE 754 specifies that floating-point values can be INF or -INF
double inform_polynomial_limit(inform_polynomial *poly, double x, inform_error *err);

polynomial *inform_fit_polynomial(double *xs, int degree, inform_error *err);

And then have one for each type of implemented curve?

dglmoore commented 8 years ago

BTW, I'm absolutely certain that libraries exist for this kind of thing: GSL linear and non-Linear least-squares fitting.

colemathis commented 8 years ago

Yeah that seems pretty reasonable to me.