MATLAB: Corr(x,y) nan

correlationsnan

Hello, I am trying to run a correlation using corr(x,y), but my dataset has NaNs in it, for different participants (beginner coder here).
For example, my dataset and code may look like this:
a = [78 88 87 54 68 91 72 nan 88 nan];
b = [nan 35 42 44 67 55 nan 34 25 33];
x = ~isnan(a);
y = ~isnan(b);
[r,p] = corr(x,y)
The result is a table full of NaN in the ouptut.
I am trying to get the r value and the p value. Would there be another way to achieve this?

Best Answer

I think you are looking for corrcoef instead of corr. To exclude the nan values, use
a = [78 88 87 54 68 91 72 nan 88 nan];
b = [nan 35 42 44 67 55 nan 34 25 33];
r = corrcoef(a,b, 'rows','complete')