MCPcopy
hub / github.com/montanaflynn/stats / ExponentialRegression

Function ExponentialRegression

regression.go:49–81  ·  view source on GitHub ↗

ExponentialRegression returns an exponential regression on data series

(s Series)

Source from the content-addressed store, hash-verified

47
48// ExponentialRegression returns an exponential regression on data series
49func ExponentialRegression(s Series) (regressions Series, err error) {
50
51 if len(s) == 0 {
52 return nil, EmptyInputErr
53 }
54
55 var sum [6]float64
56
57 for i := 0; i < len(s); i++ {
58 if s[i].Y < 0 {
59 return nil, YCoordErr
60 }
61 sum[0] += s[i].X
62 sum[1] += s[i].Y
63 sum[2] += s[i].X * s[i].X * s[i].Y
64 sum[3] += s[i].Y * math.Log(s[i].Y)
65 sum[4] += s[i].X * s[i].Y * math.Log(s[i].Y)
66 sum[5] += s[i].X * s[i].Y
67 }
68
69 denominator := (sum[1]*sum[2] - sum[5]*sum[5])
70 a := math.Pow(math.E, (sum[2]*sum[3]-sum[5]*sum[4])/denominator)
71 b := (sum[1]*sum[4] - sum[5]*sum[3]) / denominator
72
73 for j := 0; j < len(s); j++ {
74 regressions = append(regressions, Coordinate{
75 X: s[j].X,
76 Y: a * math.Exp(b*s[j].X),
77 })
78 }
79
80 return regressions, nil
81}
82
83// LogarithmicRegression returns an logarithmic regression on data series
84func LogarithmicRegression(s Series) (regressions Series, err error) {

Callers 4

mainFunction · 0.92
ExpRegFunction · 0.85

Calls

no outgoing calls

Tested by 2

Used in the wild real call sites across dependent graphs

searching dependent graphs…