DataArrays.jl
DataArrays.jl copied to clipboard
Correlation that handles NA
@johnmyleswhite maybe it's useful to someone i don't know. This function handles NA.
function PearsonCorr(x::DataArray, y::DataArray)
Corr = 0.0
Xavg = 0.0
Yavg = 0.0
Xavg2 = 0.0
Yavg2 = 0.0
covXY = 0.0
n = 0.0
for i in 1:length(x)
if !isna(x,i) && !isna(y,i)
n +=1
Xavg += x[i]
Yavg += y[i]
Xavg2 += x[i] * x[i]
Yavg2 += y[i] * y[i]
covXY += x[i] * y[i]
end
end
Xavg /= n
Yavg /= n
covXY = covXY - n * Xavg * Yavg
Xstd = Xavg2 - n * Xavg * Xavg
Ystd = Yavg2 - n * Yavg * Yavg
Corr = covXY / sqrt(Xstd * Ystd)
return Corr
end