【问题标题】:Linear regression with two independent variables in javascriptjavascript中具有两个自变量的线性回归
【发布时间】:2018-07-04 05:07:48
【问题描述】:

对于给定的一组xy 值,以下将输出slopeintercept 和相关系数R^2

let linearRegression = (y,x) => {
        let lr = {}
        let n = y.length
        let sum_x = 0
        let sum_y = 0
        let sum_xy = 0
        let sum_xx = 0
        let sum_yy = 0

        for (let i = 0; i < y.length; i++) {

            sum_x += x[i]
            sum_y += y[i]
            sum_xy += (x[i]*y[i])
            sum_xx += (x[i]*x[i])
            sum_yy += (y[i]*y[i])
        } 

        lr['slope'] = (n * sum_xy - sum_x * sum_y) / (n*sum_xx - sum_x * sum_x)
        lr['intercept'] = (sum_y - lr.slope * sum_x)/n
        lr['r2'] = Math.pow((n*sum_xy - sum_x*sum_y)/Math.sqrt((n*sum_xx-sum_x*sum_x)*(n*sum_yy-sum_y*sum_y)),2)

        return lr
}

如何调整它以接受两个独立变量 x1, x2 而不是一个?

此页面进入修改后的公式:

http://faculty.cas.usf.edu/mbrannick/regression/Reg2IV.html

但我一直在努力使其适应上述功能。

【问题讨论】:

    标签: javascript math statistics regression


    【解决方案1】:

    一步一步

    首先,看一下输入行: let linearRegression = (y,x) =&gt; {。你有 2 个变量,所以我们可以称它们为 x1 和 x2:let linearRegression = (y,x1,x2) =&gt; {

    现在回归公式取决于变量对之间的点积 - x1.x1、x1.x2、x1.y 等。

    因此,我们需要计算所有这些对的总和,而不是计算 sum_xxsum_xysum_yy(使用 3 个变量而不是 2 个变量,需要计算 6 个总和)。

    最后,二变量方程是y=a + b1.x1 + b2.x2,因此需要计算 2 个斜率而不是 1 个,并且您链接到的页面提供了您需要的所有公式。

    【讨论】:

      猜你喜欢
      • 2021-11-28
      • 1970-01-01
      • 2020-05-20
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      相关资源
      最近更新 更多