2013-04-08 8 views

Odpowiedz

0

Jest to

http://stevegardner.net/2012/06/11/javascript-code-to-calculate-the-pearson-correlation-coefficient/

oprócz tego można spróbować:

http://www.jstat.org/download

alternatywnie, jeśli żadna z tych pasowały i nie chcesz pisać samemu zawsze możesz użyć:

http://www.rforge.net/Rserve/

z

http://www.gardenersown.co.uk/education/lectures/r/correl.htm

to zrobić.

+0

Czy jStat czy pearson lub spearman? Widzę tylko "współczynnik korelacji" wspomniany w dokumentach, ale nie w szczególności dla perkusisty. – trusktr

+0

@trusktr Wygląda na to, że masz rację, przepraszam, myślałem, że tak. –

+0

Współczynnik korelacji to zazwyczaj Pearson, prawda? a Spearman to nic innego jak Pearson na szeregach twoich danych, prawda? – Myoch

1

Spróbuj tego:

function spearmanCorrelation(multiList, p1, p2){ 
    N=multiList[p1].length; 
    order=[]; 
    sum=0; 

    for(i=0;i<N;i++){ 
     order.push([multiList[p1][i], multiList[p2][i]]); 
    } 

    order.sort(function(a,b){ 
     return a[0]-b[0] 
    }); 

    for(i=0;i<N;i++){ 
     order[i].push(i+1); 
    } 

    order.sort(function(a,b){ 
     return a[1]-b[1] 
    }); 

    for(i=0;i<N;i++){ 
     order[i].push(i+1); 
    } 
    for(i=0;i<N;i++){ 
     sum+=Math.pow((order[i][2])-(order[i][3]), 2); 

    } 

    r=1-(6*sum/(N*(N*N-1))); 

    return r; 
} 
1

Więc oto moje dwa grosze warto w tej sprawie - korelacji Pearsona:

const pcorr = (x, y) => { 
 
    let sumX = 0, 
 
    sumY = 0, 
 
    sumXY = 0, 
 
    sumX2 = 0, 
 
    sumY2 = 0; 
 
    const minLength = x.length = y.length = Math.min(x.length, y.length), 
 
    reduce = (xi, idx) => { 
 
     const yi = y[idx]; 
 
     sumX += xi; 
 
     sumY += yi; 
 
     sumXY += xi * yi; 
 
     sumX2 += xi * xi; 
 
     sumY2 += yi * yi; 
 
    } 
 
    x.forEach(reduce); 
 
    return (minLength * sumXY - sumX * sumY)/Math.sqrt((minLength * sumX2 - sumX * sumX) * (minLength * sumY2 - sumY * sumY)); 
 
}; 
 
pcorr([20, 54, 54, 65, 45], [22, 11, 21, 34, 87]);

0

użyłem projekt Spearson here na Github. Przetestowałem to dla korelacji Spearmana i daje to dokładne wartości.

Właśnie pobrałem plik spearson.js w folderze /lib repozytorium. Oto jak go używać w przeglądarce:

<script src="spearson.js"></script>

<script> 
    var x = [3, 4, 5]; 
    var y = [.1, .2, .3]; 
    var corr = spearson.correlation.spearman(x, y); 
</script> 

Podobnie można użyć correlation.pearson dla korelacji Pearsona.

Powiązane problemy