0

为了计算两个数组之间的皮尔逊系数,我使用以下内容:

    double[] arr1 = new double[4];
    arr1[0] = 1;
    arr1[1] = 1;
    arr1[2] = 1;
    arr1[3] = 1;

    double[] arr2 = new double[4];
    arr2[0] = 1;
    arr2[1] = 1;
    arr2[2] = 1;
    arr2[3] = 1;
PearsonsCorrelation pc = new PearsonsCorrelation();
println("Correlation is "+pc.correlation(arr1, arr2));

对于我收到的输出:相关性为 NaN

PearsonsCorrelation 类包含在 apache commons API 中:http ://commons.apache.org/proper/commons-math/userguide/stat.html

每个数组中的值取决于用户是否在他们的数据集中包含一个词。上面的数组应该是完全相关的?

这个问题与如何设置计算欧式距离和相关性的值有关

4

2 回答 2

1

有人在这里遇到类似的问题[link]。显然,该问题与数组中的标准偏差为 0 有关。

于 2013-04-23T08:56:11.583 回答
0

您尝试计算两个长度为 4 的向量之间的相关性。由于每个向量中的所有值都是相同的(一个向量中的 0,另一个向量中的 1),这相当于尝试计算两个数字之间的相关系数(在这种情况下为 0 和 1)。

很明显,没有这样的事情。你至少需要两个不同的对。就像如果您只有一对值,您将无法绘制有意义的回归线。

如果只有一个向量有一些变化,结果仍然是 NA,但在这种情况下,将其设置为零是合理的。

于 2018-02-10T21:21:06.677 回答