皮尔逊多重相关 Scipy

Pearson multiple correlation with Scipy

我正在尝试做一些非常简单的事情来计算几个变量的 Pearson 相关矩阵,这些变量作为 DataFrame 的列给出。我希望它忽略 nans 并提供 p 值。 scipy.stats.pearsonr 是不够的,因为它只适用于两个变量,不能解释 nans。应该有比这更好的东西...

例如,

    df = pd.DataFrame([[1,2,3],[6,5,4],[1,None,9]])

       0    1  2
    0  1  2.0  3
    1  6  5.0  4
    2  1  NaN  9

df 的列是变量,行是观察值。我想要一个 returns 3x3 相关矩阵以及相应 p 值的 3x3 矩阵的命令。我希望它省略 None。即[1,6,1],[2,5,NaN]之间的相关性应该是[1,6]和[2,5]之间的相关性。

必须有一个很好的 Pythonic 方法来做到这一点,有人可以建议吗?

如果您的数据在 pandas DataFrame 中,您可以简单地使用 df.corr().

来自docs

DataFrame.corr(method='pearson', min_periods=1)
Compute pairwise correlation of columns, excluding NA/null values