数学の計算には、GSLライブラリ1.14とルビーラッパー(gsl )を使用しています。私が必要としていることの1つは、ピアソン相関です。しかし、配列に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
誰かが理由を知っていますか?これはとても奇妙ですね。