I have to fit some models to my data and I don't have much experience in data modelling. Below you see the raw decay, the smoothed version that is actually fit and the actual fit. One crucial parameter that is extracted is the y-axis value where the decay starts (r0) - in this case you see it should be about 0.3.

enter image description here

The fit seems fine given the noisy data (although chi-square is only about 0.1..), but depending on the window size of the filter I apply, I get any wild numbers in the range of r0 = 600 - 10 000 with errors in the range of thousands.. (calculated using the covariance matrix) - very odd, as it doesn't seem to show on the plot. The other two parameter estimates are somewhat more reasonable. I use Python's scipy least squares method here and filter with the Savitzky Golay filter. Here is some of the code in case it helps:

> model_func = lambda t, r0, rinf, theta:
> (r0-rinf)*np.exp(-np.divide(t,theta)) + rinf
> # weighted by the weights calculated above from SG filter 
> error_func = lambda p, r, t, w: (r - model_func(t, p[0], p[1], p[2]))*w
> p0,p1,p2 = r0_0, rinf_0, theta_0   # parameters to optimize - initial
> values 
> # minimise sum of squares  full_output = scipy.optimize.leastsq(error_func, x0 = [p0, p1, p2],
>                               args = (r,t,w),
>                               full_output = True)
> params_fit, cov_x, infodict, mesg, ier = full_output

What could the reason for this massive discrepancy between expected value, visualisation and prediction be? Sorry if my question is too naive, it's the first time I'm asked to do this and I just learned from other people's code :(


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.