Почему некоторые значения корреляции в pyspark выходят за пределы [-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.        ]])

Кто-нибудь знает, почему это может происходить?

EDIT: документы pyspark говорят, что функция corr является экспериментальной https://spark.apache.org/docs/2.2.0/api/python/pyspark.ml.html?highlight=correlation#pyspark.ml.stat.Correlation.corr

Я также рассчитал вручную и обнаружил, что некоторые из них должны быть NaN, но это не так, поэтому похоже, что в библиотечной функции есть ошибка.


person right_here    schedule 22.07.2019    source источник


Ответы (1)


В документации pyspark говорится, что функция corr является экспериментальной https://spark.apache.org/docs/2.2.0/api/python/pyspark.ml.html?highlight=correlation#pyspark.ml.stat..Correlation.corr

Я также рассчитал вручную и обнаружил, что некоторые из них должны быть NaN, но это не так, поэтому похоже, что в библиотечной функции есть ошибка.

person right_here    schedule 05.03.2021