我正在使用 GSL 库 1.14 和 ruby 包装器 ( gsl ) 进行一些数学计算。我需要的一件事是 Pearson 相关性。但是当我的数组中的 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
有人知道为什么吗?这很奇怪,不是吗?