У меня есть кадр данных 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, но это не так, поэтому похоже, что в библиотечной функции есть ошибка.