为什么 pyspark 中的某些相关值落在 [-1,1] 之外?

Why do some correlation values in pyspark fall outside [-1,1]?

我有一个只有一列的数据框 df_corr,每行都有一个价格列表。

+--------------------+
|             prices |
+--------------------+
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
+--------------------+

我想找出每对价格列之间的相关性(例如 [101.5, 101.5, 101.5, 101.5...] 和 [101.0, 101.0, 101.0, ...] 之间的相关性)

为此,我使用了 pyspark 的相关函数,但我得到的某些对的值超出了范围 [-1, 1]。 这是我的代码:

pcorr_matrix = Correlation.corr(df_corr, "prices").head()
print(str(pcorr_matrix[0]))

我得到的输出是

DenseMatrix([[ 1.        ,  0.        , -0.5       , ...,         nan,
                      nan,  2.12132034],
             [ 0.        ,  1.        ,  1.5       , ...,         nan,
                      nan, -2.12132034],
             [-0.5       ,  1.5       ,  1.        , ...,         nan,
                      nan,  1.76776695],
             ..., 
             [        nan,         nan,         nan, ...,  1.        ,
                      nan,         nan],
             [        nan,         nan,         nan, ...,         nan,
               1.        ,         nan],
             [ 2.12132034, -2.12132034,  1.76776695, ...,         nan,
                      nan,  1.        ]])

有谁知道为什么会这样?

编辑:pyspark 文档说 corr 函数是实验性的 https://spark.apache.org/docs/2.2.0/api/python/pyspark.ml.html?highlight=correlation#pyspark.ml.stat.Correlation.corr

我也手算了一下,发现有的应该是NaN,但不是,看来是库函数有bug。

pyspark 文档说 corr 函数是实验性的 https://spark.apache.org/docs/2.2.0/api/python/pyspark.ml.html?highlight=correlation#pyspark.ml.stat.Correlation.corr

我也手算了一下,发现有些应该是 NaN 但不是,看来是库函数出了问题。