为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕婉清6462132 2021-07-02 14:11:02
Pandas 具有非常方便的功能,可以使用pd.corr()对列进行成对关联。这意味着可以比较任意长度的列之间的相关性。例如:df = pd.DataFrame(np.random.randint(0,100,size=(100, 10)))     0   1   2   3   4   5   6   7   8   90    9  17  55  32   7  97  61  47  48  461    8  83  87  56  17  96  81   8  87   02   60  29   8  68  56  63  81   5  24  523   42  76   6  75   7  59  19  17   3  63...现在可以使用以下命令测试所有 10 列之间的相关性df.corr(method='pearson'):      0         1         2         3         4         5         6         7         8         90  1.000000  0.082789 -0.094096 -0.086091  0.163091  0.013210  0.167204 -0.002514  0.097481  0.0910201  0.082789  1.000000  0.027158 -0.080073  0.056364 -0.050978 -0.018428 -0.014099 -0.135125 -0.0437972 -0.094096  0.027158  1.000000 -0.102975  0.101597 -0.036270  0.202929  0.085181  0.093723 -0.0558243 -0.086091 -0.080073 -0.102975  1.000000 -0.149465  0.033130 -0.020929  0.183301 -0.003853 -0.0628894  0.163091  0.056364  0.101597 -0.149465  1.000000 -0.007567 -0.017212 -0.086300  0.177247 -0.0086125  0.013210 -0.050978 -0.036270  0.033130 -0.007567  1.000000 -0.080148 -0.080915 -0.004612  0.2437136  0.167204 -0.018428  0.202929 -0.020929 -0.017212 -0.080148  1.000000  0.135348  0.070330  0.0081707 -0.002514 -0.014099  0.085181  0.183301 -0.086300 -0.080915  0.135348  1.000000 -0.114413 -0.1116428  0.097481 -0.135125  0.093723 -0.003853  0.177247 -0.004612  0.070330 -0.114413  1.000000 -0.1535649  0.091020 -0.043797 -0.055824 -0.062889 -0.008612  0.243713  0.008170 -0.111642 -0.153564  1.000000是否有一种简单的方法也可以获得相应的 p 值(理想情况下在熊猫中),因为它是由 scipy 的kendalltau()返回的?
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

为什么不使用“方法”参数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)


查看完整回答
反对 回复 2021-07-13
  • 3 回答
  • 0 关注
  • 686 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信