我从两个数据帧开始使用此函数(请参阅底部)来计算Pearson和Pval,但是我对Pval的结果不满意:似乎有太多的负相关性很重要。
为了与Pearson一起计算Pval,是否有更优雅的方法(如单行代码)?
这两个答案(pandas.DataFrame corrwith()方法)和(一个数据帧与另一个数据帧的相关矩阵)提供了很好的解决方案,但是缺少了P值计算。
这是代码:
def pearson_cross_map(df1, df2):
"""Correlate each Mvar with each Nvar.
Parameters
----------
df1 : dataframe1
Shape Mobs X Mvar.
df2 : dataframe2
Shape Nobs X Nvar.
Returns
-------
DFcorr, dataframe Mvar x Nvar in which each element is a Pearson
correlation coefficient.
DFpval, dataframe Mvar x Nvar in which each element is a P value (one-tailed).
"""
intersection = (df1.index & df2.index).tolist()
df1 = df1.convert_objects(convert_numeric=True)
df1 = df1.T[intersection].T
df1 = …Run Code Online (Sandbox Code Playgroud)