我需要生成包含检验统计量和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.correlation
和cor1.pvalue
。
或者,您可以在致电spearman时直接分解:cor, pvalue = spearmanr(v_1, v_4)
然后可以将这些数组转换为DataFrames并写入excel。
例如pd.DataFrame(cor).to_csv("correlation.csv")