R-squared value for fitted line
9 次查看(过去 30 天)
显示 更早的评论
I have plotted log-log graph for data series. than fit a line by ployfit i want to find R-squared for line and data how it can be done (R-squared is explained variance)
0 个评论
采纳的回答
Star Strider
2015-3-13
Using the Wikipedia article on Coefficient of Determination, it’s easiest (and likely correct) to compute the R-squared value on your data using the nonlinear regression and not the log-log linear fit:
dry=[49 12 5 1 1 1 0 0 0 ];
x1=[1 2 3 4 5 6 7 8 9];
x1dry = linspace(min(x1), max(x1));
pwrfit = @(b,x) b(2) .* x.^b(1);
OLSCF = @(b) sum((dry-pwrfit(b,x1)).^2);
B = fminsearch(OLSCF, [-2; 50]);
SStot = sum((dry - mean(dry)).^2); % Compute R-squared
SSres = OLSCF(B);
Rsq = 1 - (SSres/SStot);
When I did this calculation, I got R-squared to be 0.998. Do the same with your ‘wet’ value, with the appropriate changes in the code.
2 个评论
Star Strider
2015-3-14
编辑:Star Strider
2015-3-14
My pleasure.
When I run this code:
wet=[120 49 30 21 12 10 9 7 4];
dry=[49 12 5 1 1 1 0 0 0 ];
x1=[1 2 3 4 5 6 7 8 9];
pwrfit = @(b,x) b(2) .* x.^b(1);
% ‘Dry’ Calculations
OLSCF = @(b) sum((dry-pwrfit(b,x1)).^2);
Bdry = fminsearch(OLSCF, [-2; 50]);
SStot = sum((dry - mean(dry)).^2); % Compute R-squared
SSres = OLSCF(Bdry);
RsqDry = 1 - (SSres/SStot);
% ‘Wet’ Calcualtions
OLSCF = @(b) sum((wet-pwrfit(b,x1)).^2);
Bwet = fminsearch(OLSCF, [-2; 50]);
SStot = sum((wet - mean(wet)).^2); % Compute R-squared
SSres = OLSCF(Bwet);
RsqWet = 1 - (SSres/SStot);
fprintf(1, '\n\t Wet = %8.3f * x^%.3f,\t\tRsq = %.4f\n', Bwet(2), Bwet(1), RsqWet)
fprintf(1, '\n\t Dry = %8.3f * x^%.3f,\t\tRsq = %.4f\n', Bdry(2), Bdry(1), RsqDry)
I get:
Wet = 120.447 * x^-1.323, Rsq = 0.9980
Dry = 49.123 * x^-2.148, Rsq = 0.9977
I have no idea why you’re getting 0 for those. At worst, if your default format is set to something that rounds to integers, you should get 1 instead.
Copy and paste my code and run it. You should get the same results.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!