use*_*206 5 statistics go linear-regression
我正在寻找一个使用 MLE 或 LSE 实现线性回归的 Go 库。有人见过吗?
有这个统计库,但它似乎没有我需要的东西: https: //github.com/grd/statistics
谢谢!
实现 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)