大数据矩阵python的Pearson相关和P值

时间:2017-04-30 17:33:45

标签: python scipy cython gnu pearson

所以这就是我遇到的问题。我有一堆大数据矩阵~500 x 30000.我需要计算Pearson相关系数,如果它有一个重要的p值。 scipy.stats.pearsonr不处理矩阵所以我编写了以下函数来计算相关性和p值矩阵:

import numpy as np
from scipy import stats
def corr_mat(X):
    N=X.shape[1]
    rho=np.empty((N,N), dtype=float)
    pval=np.empty((N,N), dtype=float)
    for i in range(N):
        v1=X[:,i]
        for j in range(i,N):
             v2=X[:,j]
             C,P=stats.pearsonr(v1,v2)
             rho[i,j]=C
             rho[j,i]=C
             pval[i,j]=P
             pval[j,i]=P
    return rho,pal

适用于小型婚姻,但对于我正在计算的大型矩阵需要永远。它也使我的电脑崩溃了几次,所以就有了。我想知道是否有更好的做法。我想我可能不得不在cython中这样做以加快循环但我猜我可以不再使用scipy中的内置stats包并且可能必须使用GNU库来获取C而我不是确定这是多么容易,因为我的c编程仍然相当简陋(大多数情况下我不知道如何在c中处理大型矩阵)任何帮助都将不胜感激。

0 个答案:

没有答案