Open dglmoore opened 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.
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.
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.