How do I find Rsquared?
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Renan Fraga
am 22 Mai 2021
Kommentiert: Sulaymon Eshkabilov
am 23 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?
0 Kommentare
Akzeptierte Antwort
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
Weitere Antworten (0)
Siehe auch
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!