I have this dataset, and I am using
y = (a * x^n) / (b + x^n) Hill function as the model, where
a is the limit of the Hill curve,
b is the point at which
a/2 is reached (for
n = 1) and
n is the cooperativity or steepness of the curve.
Currently, I am storing all
x,y values and computing the parameters
a,b,n using black-box optimization to minimize the least-squares error. (I currently use
scipy.optimize.curve_fit, a standard optimizer that can minimize an arbitrary objective function. In my case, the objective function is the total least-squares error.).
When new data points come along, I re-calculate the parameters with the old+new data, i.e. I append the new data to the old tuple of
x,y values and get the new parameters.
Is there a way to update the parameters of the model without storing all of the previous old data points, once the initial parameters are obtained from the previous data points? I am looking for some kind of on-line algorithm to tackle the problem, but have no clue how to go about it. I read a blog-post that shows how do this for polynomial regression, but as the power of
x which is
n is a parameter to the model, I have no idea how to extend the approach to my specific function.
I am looking for a solution like so: I fit the curve to the first 1000 data points and have my parameters. Next, I discard some or all of the old data. Then, when I see the 1001st point I simply update my parameters and plot the curve again and so on for every new data point.