MATLAB Answers

Corrcoef and R^2 definition give different R^2 values

54 views (last 30 days)
Rui
Rui on 26 Oct 2012
Hi everyone,
I am trying to calculate R^2 value for my data and simulation. I used two different ways.
First one,
C = corrcoef(ydata,simulation);
rsq1 = C(1,2).^2;
Second one,
rsq2 = 1 - norm(ydata-simulation)^2 / norm(ydata-mean(ydata))^2;
They should be the same, but actually, the second one is smaller than the first one. Could anyone tell me what is a possible reason for that? Thanks a lot!
Rui

Answers (2)

Chris A
Chris A on 26 Oct 2012
Edited: Chris A on 26 Oct 2012
Try the following code:
a=rand(100,1);
c=10*a;
corrcoef(a,c); % This should be the matrix [1 1; 1 1]
% Why should this number be equal to 1.
rsq2 = 1 - norm(a-c)^2 / norm(a-mean(c))^2; % rsq2 is not 1

Tom Lane
Tom Lane on 27 Oct 2012
I would expect your formula to work if simulation is a set of predicted values from fitting ydata using least squares as a function of a set of predictors, including a constant term. Otherwise maybe not.

Community Treasure Hunt

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

Start Hunting!