DataArrays.jl icon indicating copy to clipboard operation
DataArrays.jl copied to clipboard

Correlation that handles NA

Open Unoqualsiasi opened this issue 8 years ago • 0 comments

@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

Unoqualsiasi avatar Feb 13 '17 14:02 Unoqualsiasi