Go语言的线性回归库

use*_*206 5 statistics go linear-regression

我正在寻找一个使用 MLE 或 LSE 实现线性回归的 Go 库。有人见过吗?

有这个统计库,但它似乎没有我需要的东西: https: //github.com/grd/statistics

谢谢!

thw*_*hwd 5

实现 LSE(最小二乘误差)线性回归相当简单。

是 JavaScript 中的一个实现 - 移植到 Go 应该很简单。


是一个(未经测试的)端口:

package main

import "fmt"

type Point struct {
    X float64
    Y float64
}

func linearRegressionLSE(series []Point) []Point {

    q := len(series)

    if q == 0 {
        return make([]Point, 0, 0)
    }

    p := float64(q)

    sum_x, sum_y, sum_xx, sum_xy := 0.0, 0.0, 0.0, 0.0

    for _, p := range series {
        sum_x += p.X
        sum_y += p.Y
        sum_xx += p.X * p.X
        sum_xy += p.X * p.Y
    }

    m := (p*sum_xy - sum_x*sum_y) / (p*sum_xx - sum_x*sum_x)
    b := (sum_y / p) - (m * sum_x / p)

    r := make([]Point, q, q)

    for i, p := range series {
        r[i] = Point{p.X, (p.X*m + b)}
    }

    return r
}

func main() {
    // ...
}
Run Code Online (Sandbox Code Playgroud)