Why is corrcoef returning a P-value of zero?
조회 수: 21 (최근 30일)
이전 댓글 표시
I have two arrays, which both contain a significant number of zeros (they're observed and predicted data for sediment transport, which is often zero).
When I run corrcoef on them as-is, it returns an r-value of 0.82 and a p-value of zero... not just 0.0000 (as in, some very small number), but an actual '0' value. This seems wacky.
When I run corrcoef but exclude the elements where both arrays are zero, I get r = 0.79 and p = 10^-14.
Does anyone know what the difference is (I assume it has something to do with the way corrcoef treats zeros), and why the first approach yields a 0 p-value? Thanks so much!!
댓글 수: 2
Jos (10584)
2015년 4월 22일
Can you describe the inputs to corrcoef more clearly? Are these vectors, arrays? Can you give an example?
채택된 답변
the cyclist
2015년 4월 22일
편집: the cyclist
2015년 4월 22일
If the P value gets small enough, it will be reported as strictly 0, because it cannot be reported as, say, P = 10^(-560). It seems likely that you do not need lots of pairs of zeros to push the P values down really low like that.
댓글 수: 2
the cyclist
2015년 4월 22일
If you neglect your zeros for a minute, you already have pretty highly correlated sequences, and you have a pretty small P-value (indicating that sequences that highly correlated empirically are very unlikely to have occurred by chance from truly uncorrelated variables).
Now think what happens as you append a pair of zeros to that, and another pair of zeros, and another pair, and so on. Those zeros are basically perfectly correlated with each other. Your correlation is getting higher and higher and higher (bigger r) ... and less and less likely to be due to chance (smaller p). Eventually, p will be smaller than the smallest value that can be represented in MATLAB, so it will report strictly 0 instead.
I'm not sure why MATLAB reports NaN as the correlation coefficient of a perfectly correlated series, but that is not really related to your issue.
(There is nothing very special about the zeros. You could also have added pairs of 31's and gotten high correlation.)
추가 답변 (0개)
참고 항목
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!