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

3 visualizaciones (últimos 30 días)
Rui
Rui el 26 de Oct. de 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

Respuestas (2)

Chris A
Chris A el 26 de Oct. de 2012
Editada: Chris A el 26 de Oct. de 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 el 27 de Oct. de 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.

Categorías

Más información sobre Descriptive Statistics en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by