2013-04-08 12 views

Antwort

0

Es gibt diese

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

abgesehen davon, dass Sie könnten versuchen:

http://www.jstat.org/download

alternativ, wenn keiner von denen passen die Rechnung, und Sie wollen nicht zu einem selbst schreiben Sie können immer verwenden:

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

mit

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

es zu tun.

+0

Macht jStat Pearson oder Spearman? Ich sehe nur einen "Korrelationskoeffizienten", der in den Dokumenten erwähnt wird, aber nicht spezifisch für Pearson. – trusktr

+0

@trusktr Es sieht so aus, als ob du recht hast, tut mir leid, dachte ich. –

+0

Korrelationskoeffizient ist normalerweise der Pearson, nicht wahr? und Spearman ist nicht weniger als ein Pearson in den Reihen Ihrer Daten, richtig? – Myoch

1

Versuchen Sie folgendes:

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

Also meine zwei Cent hier lohnt sich in der Sache - Pearson-Korrelation:

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

Ich benutzte das Spearson Projekt here auf Github. Ich habe es für Spearman Korrelation getestet und es gibt genaue Werte dafür.

Ich habe gerade die spearson.js Datei in den Ordner /lib des Repo heruntergeladen. Hier ist, wie es im Browser zu verwenden:

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

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

Ähnlich Sie die correlation.pearson für die Pearson-Korrelation verwenden können.