ELIFE-ASU / Inform

A cross platform C library for information analysis of dynamical systems

Home Page:https://elife-asu.github.io/Inform

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Extrapolating to Infinite History Lengths

dglmoore opened this issue · comments

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.

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.

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?

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

Yeah that seems pretty reasonable to me.