Я использую библиотеку GSL 1.14 и оболочку ruby ( gsl ) для некоторых математических вычислений. Одна вещь, которая мне нужна, это корреляция Пирсона. Но у меня проблема, когда 0 в моем массиве.
Например, у меня есть этот фрагмент кода:
x = [1,2,2,2,12]
y = [1,2,1,3,33]
puts GSL::Stats::correlation(
GSL::Vector.alloc(x),GSL::Vector.alloc(y)
)
=> 0.9967291641974002
Но когда я пытаюсь вычислить его со следующими значениями массива, я получаю NaN:
x = [1,1,1]
y = [1,1,1]
or
x = [0,1,1]
y = [1,1,1]
puts GSL::Stats::correlation(
GSL::Vector.alloc(x),GSL::Vector.alloc(y)
)
=> NaN
И когда я пытаюсь с этими значениями, это работает:
x = [0,1,1]
y = [1,0,1]
puts GSL::Stats::correlation(
GSL::Vector.alloc(x),GSL::Vector.alloc(y)
)
=> -0.5
Кто-нибудь знает почему? это очень странно, не правда ли?