如何计算 Pandas 中列的成对相关的 p 值?

Pandas 具有非常方便的功能,可以使用pd.corr()对列进行成对关联。这意味着可以比较任意长度的列之间的相关性。例如:


df = pd.DataFrame(np.random.randint(0,100,size=(100, 10)))


     0   1   2   3   4   5   6   7   8   9

0    9  17  55  32   7  97  61  47  48  46

1    8  83  87  56  17  96  81   8  87   0

2   60  29   8  68  56  63  81   5  24  52

3   42  76   6  75   7  59  19  17   3  63

...

现在可以使用以下命令测试所有 10 列之间的相关性df.corr(method='pearson'):


      0         1         2         3         4         5         6         7         8         9

0  1.000000  0.082789 -0.094096 -0.086091  0.163091  0.013210  0.167204 -0.002514  0.097481  0.091020

1  0.082789  1.000000  0.027158 -0.080073  0.056364 -0.050978 -0.018428 -0.014099 -0.135125 -0.043797

2 -0.094096  0.027158  1.000000 -0.102975  0.101597 -0.036270  0.202929  0.085181  0.093723 -0.055824

3 -0.086091 -0.080073 -0.102975  1.000000 -0.149465  0.033130 -0.020929  0.183301 -0.003853 -0.062889

4  0.163091  0.056364  0.101597 -0.149465  1.000000 -0.007567 -0.017212 -0.086300  0.177247 -0.008612

5  0.013210 -0.050978 -0.036270  0.033130 -0.007567  1.000000 -0.080148 -0.080915 -0.004612  0.243713

6  0.167204 -0.018428  0.202929 -0.020929 -0.017212 -0.080148  1.000000  0.135348  0.070330  0.008170

7 -0.002514 -0.014099  0.085181  0.183301 -0.086300 -0.080915  0.135348  1.000000 -0.114413 -0.111642

8  0.097481 -0.135125  0.093723 -0.003853  0.177247 -0.004612  0.070330 -0.114413  1.000000 -0.153564

9  0.091020 -0.043797 -0.055824 -0.062889 -0.008612  0.243713  0.008170 -0.111642 -0.153564  1.000000

是否有一种简单的方法也可以获得相应的 p 值(理想情况下在熊猫中),因为它是由 scipy 的kendalltau()返回的?


慕婉清6462132
浏览 690回答 3
3回答

qq_花开花谢_0

为什么不使用“方法”参数pandas.DataFrame.corr():pearson :标准相关系数。kendall :Kendall Tau 相关系数。spearman :斯皮尔曼等级相关。callable: 可调用输入两个 1d ndarrays 并返回一个浮点数。from scipy.stats import kendalltau, pearsonr, spearmanr    def kendall_pval(x,y):        return kendalltau(x,y)[1]        def pearsonr_pval(x,y):        return pearsonr(x,y)[1]        def spearmanr_pval(x,y):        return spearmanr(x,y)[1]然后corr = df.corr(method=pearsonr_pval)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python