# lsqnonlin and stretched exponential function

14 views (last 30 days)
Alessandro on 29 Mar 2020
Commented: Torsten on 29 Mar 2020
Hi all,
I am currrently trying to fit my data with lsqnonlin instead lsqcurvefit for a comparative reason and I am facing some troubles.
Starting with the easiest example in https://se.mathworks.com/help/optim/ug/lsqnonlin.html, I modify the function as:
fun = @(r) r(1).*exp(-d.*r(2)).^r(3)-y
This function yields x = [1.0376 3.1962 0.4104].
From here, I calculate my errors in the way:
[x,resnorm,residual,exitflag,output,lambda,J] = lsqnonlin(fun,x0);
N = length(y(:,1));
[Q,R] = qr(J,0);
mse = sum(abs(residual).^2)/(size(J,1)-size(J,2));
Rinv = inv(R);
Sigma_var = Rinv*Rinv'*mse;
x_er = full(sqrt(diag(Sigma_var)));
Here, the values I get are not making any sense to me x_er = [0.02701 6458034.8422 829226.8633]; especially for x(2) and x(3).
Fit and errors are totally fine if I fit similar data in the form: (i) r(1).*exp(-d.*r(2)) or (ii) r(1).*exp(-d.*r(2))+r(3).*exp(-d.*r(4));
Thanks a lot.
Best wishes
Alessandro
Alessandro on 29 Mar 2020
Yes, indeed but I need the errors as well.
When I insert the exponent in the function, i.e., r(3), something goes extremely wrong.
Any idea?

Torsten on 29 Mar 2020
Edited: Torsten on 29 Mar 2020
error_bounds = nlparci(x,residual,'jacobian',J)
after the call to lsqnonlin.
If you don't have a toolbox with nlparci, search the web for nlparci.m.
Torsten on 29 Mar 2020
There is no such thing as confidence intervals for dependent parameters.

R2019b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!