Java 如何计算斯皮尔曼与Spark的相关系数?我无法从统计书中复制样本

Java 如何计算斯皮尔曼与Spark的相关系数?我无法从统计书中复制样本,java,apache-spark,statistics,apache-spark-mllib,Java,Apache Spark,Statistics,Apache Spark Mllib,为了训练自己使用Spark和经典统计分析,我尝试执行一些书中提供的样本(中性统计书籍:不专门用于计算或Spark) 本书中的样本提供了计算两名裁判的斯皮尔曼相关系数,并向十名运动员作了说明: |法官1 | 8.3 | 7.6 | 9.1 | 9.5 | 8.4 | 6.9 | 9.2 | 7.8 | 8.6 | 8.2 |法官2 | 7.9 | 7.4 | 9.1 | 9.3 | 8.4 | 7.5 | 9.0 | 7.2 | 8.1 创建列组的中间矩阵, |法官1 | 5 | 2 | 8 |

为了训练自己使用
Spark
和经典统计分析,我尝试执行一些书中提供的样本(中性统计书籍:不专门用于计算或Spark)

本书中的样本提供了计算两名裁判的斯皮尔曼相关系数,并向十名运动员作了说明:

|法官1 | 8.3 | 7.6 | 9.1 | 9.5 | 8.4 | 6.9 | 9.2 | 7.8 | 8.6 | 8.2
|法官2 | 7.9 | 7.4 | 9.1 | 9.3 | 8.4 | 7.5 | 9.0 | 7.2 | 8.1

创建列组的中间矩阵,
|法官1 | 5 | 2 | 8 | 10 | 6 | 1 | 9 | 3 | 7 | 4
|法官2 | 4 | 2 | 9 | 10 | 7 | 3 | 8 | 1 | 6 | 5

本书中的样本最终得出以下结果:

r=0.915

我试着用
Spark
那样实现它:

List data=Arrays.asList(
创建(Vectors.dense(8.3,7.6,9.1,9.5,8.4,6.9,9.2,7.8,8.6,8.2)),
行工厂。创建(向量。密集(7.9、7.4、9.1、9.3、8.4、7.5、9.0、7.2、8.2、8.1))
);
StructType架构=新StructType(新StructField[]{
new StructField(“features”,new VectorUDT(),false,Metadata.empty()),
});
Dataset df=this.session.createDataFrame(数据,模式);
第r2行=Correlation.corr(df,“特征”,“斯皮尔曼”).head();
System.out.println(“斯皮尔曼相关矩阵:\n”+r2.get(0.toString());
但它并没有给我一个系数。相反,我觉得另一个矩阵很奇怪:

Spearman correlation matrix:
1.0                  0.9999999999999998   NaN  ... (10 total)
0.9999999999999998   1.0                  NaN  ...
NaN                  NaN                  1.0  ...
0.9999999999999998   0.9999999999999998   NaN  ...
NaN                  NaN                  NaN  ...
-0.9999999999999998  -0.9999999999999998  NaN  ...
0.9999999999999998   0.9999999999999998   NaN  ...
0.9999999999999998   0.9999999999999998   NaN  ...
0.9999999999999998   0.9999999999999998   NaN  ...
0.9999999999999998   0.9999999999999998   NaN  ...
我是新来的
MLib
,在统计方面不是很强。很明显,我做错了事情

我在这里看到了什么,而不是我所期望的,

我该如何达到我想要的结果呢?

解决这个问题的一部分方法是 我只是把向量放错一边了。这个,纠正一下:

List data=Arrays.asList(
创建(Vectors.dense(8.3,7.9)),
创建(Vectors.dense(7.6,7.4)),
创建(Vectors.dense(9.1,9.1)),
创建(Vectors.dense(9.5,9.3)),
创建(Vectors.dense(8.4,8.4)),
创建(Vectors.dense(6.9,7.5)),
创建(Vectors.dense(9.2,9.0)),
创建(Vectors.dense(7.8,7.2)),
创建(Vectors.dense(8.6,8.2)),
RowFactory.create(Vectors.dense(8.2,8.1))
);
与运动相关的注意事项:
1.0 0.9151553
0.9151553 1.0