How to use multistart with 'fit' function
Show older comments
Hi There,
i want to use 'Multistart' to find the best solution for a bi-exponential decay function that i am fitting to my data with bounds.
Below is the code i am using.
% bi-exponential decay model
fparam = fittype(@(a,b,c,d,x)(a)*exp(-(1/b)*x)+abs(1-a)*(exp(-(1/c)*x))+d);
lb1 = [0,0,0,0];
ub1 = [1,30,200,80];
b0 = [0.3,0.2,20,10];
x = [3.39,8.59,13.8,19,24.2,29.4,34.6,39.81,45.0,50.21];
y = [1,0.2905,0.0894,0.0838,0.1173,0.1006,0.0782,0.0894,0.1061,0.0726]
opts = fitoptions('Display','Off','Method','NonlinearLeastSquares','Normalize','Off',...
'Startpoint',b0, 'Robust','On','Lower',lb1,'Upper',ub1,...
'TolFun',1e-3);
[estTmp,Goft,Out] = fit(x,y,fparam,opts);
Since i need to start somewhere i have randomly chosen 'b0' values. I want to avoid local minima, so i want to use 'Multistart' function for optimization and find the best solution within the 'bounds' (here given by 'lb1', 'ub1').
Can someone please help me bridge 'Multistart' with 'fit' ?
P.S. I know someone might suggest to use 'lsqnonlin' instead of 'fit'. The reason i am not using it is becasue i need the output 'stats' (e.g. goodness of fit and R^2 values) which i might have to compute manually in 'lsqnonlin'. So please suggest me only the ways to combine 'Multistart' and 'fit'
Accepted Answer
More Answers (1)
Alex Sha
on 29 Apr 2019
0 votes
Multi-solutions (Parameter a is different):
1:
Root of Mean Square Error (RMSE): 0.109662308225183
Sum of Squared Residual: 0.12025821845275
Correlation Coef. (R): 0.948796774493673
R-Square: 0.900215319289597
Parameter Best Estimate
---------- -------------
a 0.057712785437929
b 7.20470183282193
c 7.20470183925339
d 0.0814111332963631
2:
Root of Mean Square Error (RMSE): 0.109662308225183
Sum of Squared Residual: 0.12025821845275
Correlation Coef. (R): 0.948796774685829
R-Square: 0.900215319654232
Parameter Best Estimate
---------- -------------
a 0.0035886762500919
b 7.20470208037725
c 7.20470182707246
d 0.0814111343856455
3:
Sum of Squared Residual: 0.12025821845275
Correlation Coef. (R): 0.948796775443418
R-Square: 0.900215321091827
Parameter Best Estimate
---------- -------------
a 0.176245451532707
b 7.20470187824529
c 7.20470176505555
d 0.0814111355698764
Categories
Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!