如何在Chart.js中绘制线性回归线

时间:2020-03-10 16:42:13

标签: javascript chart.js

我看到其他库支持此功能,但是Chart.js的数据很少。有人可以指示我从图形的回归线开始的方式吗?到目前为止,这是我的代码:

set.seed(seed = 1232020)
e <- rnorm(500,mean=0,sd=1)

alpha <- 1
beta <- 0
theta <- 0.8
m_1 <- 0
for(i in 2:length(e)){
  m_1[i] <- alpha+beta*i+theta*m_1[i-1]+e[i]
}

我认为我必须用线图创建另一个数据集,并将方程式放在那里,但我不知道该怎么做,我有点迷茫。

我的整个代码在codepen

1 个答案:

答案 0 :(得分:3)

我通常使用regression package

首先,将package添加为外部脚本。 其次,清理您的数据。这里只是基本检查:

const clean_data = datoa
    .filter(({ x, y }) => {
      return (
        typeof x === typeof y &&  // filter out one string & one number
        !isNaN(x) &&              // filter out `NaN`
        !isNaN(y) &&
        Math.abs(x) !== Infinity && 
        Math.abs(y) !== Infinity
      );
    })
    .map(({ x, y }) => {
      return [x, y];             // we need a list of [[x1, y1], [x2, y2], ...]
    });

然后运行

const my_regression = regression.linear(
  clean_data
);

结果将类似于:

{
  'points': [[4,3.79],[4.75,3.83],[5.5,3.87],.....],
  'equation': [0.05,3.59],
  'r2': 0.26,
  'string': 'y = 0.05x + 3.59'
}

完成。我们有[x,y]分。因此,将线性回归点转换为chartjs可以呈现的内容:

const useful_points = my_regression.points.map(([x, y]) => {
    return y;    
    // or {x, y}, depending on whether you just want y-coords for a 'linear' plot
    // or x&y for a 'scatterplot'
})

您可以将这些点添加为