2013-04-08 29 views

Trả lời

0

Có này

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

ngoài mà bạn có thể thử:

http://www.jstat.org/download

cách khác nếu không ai trong số những người phù hợp với những hóa đơn và bạn không muốn viết một mình bạn luôn có thể sử dụng:

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

với

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

để làm điều đó.

+0

JStat có làm pearson hoặc spearman không? Tôi chỉ thấy một "hệ số tương quan" được đề cập trong tài liệu, chứ không phải là pearson cụ thể. – trusktr

+0

@trusktr Có vẻ như bạn nói đúng, xin lỗi, tôi đã nghĩ như vậy. –

+0

Hệ số tương quan thường là Pearson, phải không? và Spearman không kém gì Pearson trên hàng ngũ dữ liệu của bạn, đúng không? – Myoch

1

Hãy thử điều này:

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

Vì vậy, đây là hai đồng xu tôi có giá trị về vấn đề này - Pearson tương quan:

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

Tôi đã từng dự án Spearson here trên Github. Tôi đã thử nghiệm nó cho tương quan Spearman và nó mang lại giá trị chính xác cho điều đó.

Tôi vừa tải xuống tệp spearson.js trong thư mục /lib của repo. Dưới đây là làm thế nào để sử dụng nó trong trình duyệt:

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

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

Tương tự, bạn có thể sử dụng correlation.pearson cho tương quan Pearson.