Pearson Calculation using MATLAB
Show older comments
For calculating Pearson Coefficient, i am using the below formula in MATLAB:
C=cov(x,y); p=C(2)/(std(x)*std(y));
But C(2) is zero in my case if
x = [1 0 1 0 0 0]; y = [1 1 1 1 1 1];
Any idea where I am going wrong
Answers (1)
Matt Tearle
on 28 Apr 2011
0 votes
Your y values are all the same. Hence y_i - mean(y) = 0 for each i. The formula for covariance is
cov(x,y) = sum_i[(x_i-mean(x))*(y_i-mean(y)]/n
So every term in your sum is 0. This makes sense in that there is only one y value, but different corresponding x values. The correlation coefficient, however, will be NaN because std(y) will also be 0.
2 Comments
Oleg Komarov
on 28 Apr 2011
@Abhishek: you can also use corrcoeff
Tahariet Sharon
on 28 Oct 2017
I think you should normalize by n-1.
Categories
Find more on Correlation and Convolution in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!