为什么以下Javascript代码的输出为NaN?

时间:2019-11-27 07:33:42

标签: javascript output nan

我是JavaScript新手。我正在尝试编写一个代码,以通过对很少的一组数据使用Pearson相关系数公式来找到相关系数。这是皮尔逊相关系数的公式。

Text](https://stackoverflow.com/image.jpg)[![enter image description here

2019-11-11 00:00:00
2019-08-30 03:24:10
2019-11-12 00:00:00
2019-11-12 00:00:00
2019-07-27 00:00:00
2019-11-15 00:00:00
2019-11-12 00:00:00
2019-11-12 00:00:00
2063-11-27 00:00:00
2019-11-05 00:00:00
2068-11-27 00:00:00
1983-11-27 00:00:00
1983-11-27 00:00:00

此代码的输出为NaN。我认为计算的输出应该是整数或浮点数,我不明白为什么要使用NaN作为输出。

1 个答案:

答案 0 :(得分:1)

您误认为您的公式,我重写了您的代码段

const dataSet = {
  bath: [30, 29, 20, 28, 12, 30],
  disease: [2, 5, 9, 3, 8]
};

const corRelate = () => {
  const m1 = dataSet.bath.reduce((m1, bath) => {
    return dataSet.disease.reduce((m1, disease) => m1 + bath * disease, m1);
  }, 0);

  const m2 = dataSet.bath.reduce((m2, item) => m2 + item, 0);
  const m4 = dataSet.bath.reduce((m4, item) => m4 + item * item, 0);
  const m3 = dataSet.disease.reduce((m3, item) => m3 + item, 0);
  const m5 = dataSet.disease.reduce((m5, item) => m5 + item * item, 0);

  // here u used Math.sqrt twice "Math.sqrt(m4 - m2 * m2) * Math.sqrt(m5 - m3 * m3)" 
  return (m1 - m2 * m3) / Math.sqrt((m4 - m2 * m2) * (m5 - m3 * m3));
};

console.log(corRelate());