我需要生成包含检验统计量和p值的相关矩阵(这在心理学研究中确实很常见),我正在使用

spearmanr()


从scipy.stats执行此操作。

我有一个看起来像这样的数据集

v_1    v_2    v_3    v_4    v_5
 1      4      2      5      3
 5      3      6      2      4
 6      2      4      1      1
 2      5      3      2      6
 6      3      2      2      3


当我将spearmanr()称为

cor1 = spearmanr(v_1, v_4)


我可以在控制台中看到输出,并且可以

print(cor1)


哪个返回

SpearmanrResult(correlation=array([[x,y,z,a,b,c]]), (pvalue=array([[x,y,z,a,b,c]]))


但是我无法对那些值做任何事情,这些值使我可以按照自己选择的样式来布置它们以进行报告。

我试图用它们将它们转换为熊猫DF

cors = pd.DataFrame(cor1)


并且我尝试将其写为excel或to_excel等文本。

我想念一些愚蠢的东西。

请帮忙。

最佳答案

cor1实际上是一个NamedTuple。您可以访问相关字段:
cor1.correlationcor1.pvalue

或者,您可以在致电spearman时直接分解:

cor, pvalue = spearmanr(v_1, v_4)

然后可以将这些数组转换为DataFrames并写入excel。

例如pd.DataFrame(cor).to_csv("correlation.csv")

10-06 00:30