How do I find Rsquared?

10 Ansichten (letzte 30 Tage)
Renan Fraga
Renan Fraga am 22 Mai 2021
Hello! Please, I need help. Tried everything and couldn't do it.
I have 2 vectors of values:
T0 = [-49;-45;-19;-20;30;30;100;98;238;239;350;349];
Y = [0;0;0;0;12;8;48;44;46;34;34;40];
And I need to use the equation F=A+B*tanh((T-T0)/C) to fit these points. So I'm using the optimoptions to find the best fit:
lb = [];
ub = [];
% Starting point
x0 = [10;10;10;10];
F = @(x) (x(1) + x(2)*tanh((x(3) - T0)/x(4)) );
Fobj = @(x,T0) F(x);
options = optimoptions('lsqcurvefit','Algorithm','levenberg-marquardt');
x = lsqcurvefit(Fobj,x0,T0,Y,lb,ub,options);
I know (using the Curve Fit Toolbox) that the values of x are supposed to create a curve with Rsquared = 0.9585, but even using the function corrcoef I can't find this R squared.
Can anybody, please help?

Akzeptierte Antwort

Sulaymon Eshkabilov
Sulaymon Eshkabilov am 22 Mai 2021
Hi,
Here is the quick solution:
% Starting point
x0 = [10;10;10;10];
F = @(x) (x(1) + x(2)*tanh((x(3) - T0)/x(4)) );
Fobj = @(x,T0) F(x);
options = optimoptions('lsqcurvefit','Algorithm','levenberg-marquardt');
x = lsqcurvefit(Fobj,x0,T0,Y,lb,ub,options);
FM = (x(1) + x(2)*tanh((x(3) - T0)/x(4)) );
plot(T0, Y, 'ro', T0, FM, 'b--')
RSS = sum((Y-FM).^2);
TSS = sum((Y-mean(Y)).^2);
R_sq = 1-RSS/TSS;
fprintf('R square = %1.3f \n', R_sq)
Good luck.
  2 Kommentare
Renan Fraga
Renan Fraga am 23 Mai 2021
Thank you so much!
Sulaymon Eshkabilov
Sulaymon Eshkabilov am 23 Mai 2021
You are most welcome! It is just a pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Get Started with Curve Fitting Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by