|
|
@ -204,9 +204,9 @@ func calcTrendValue(i int, sf, tf float64, s, b, d []float64) float64 {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Holt-Winters is similar to a weighted moving average, where historical data has exponentially less influence on the current data.
|
|
|
|
// Holt-Winters is similar to a weighted moving average, where historical data has exponentially less influence on the current data.
|
|
|
|
// Holt-Winter also accounts for trends in data. The smoothing factor (0 < sf < 1) effects how historical data will effect the current
|
|
|
|
// Holt-Winter also accounts for trends in data. The smoothing factor (0 < sf < 1) affects how historical data will affect the current
|
|
|
|
// data. A lower smoothing factor increases the influence of historical data. The trend factor (0 < tf < 1) effects
|
|
|
|
// data. A lower smoothing factor increases the influence of historical data. The trend factor (0 < tf < 1) affects
|
|
|
|
// how trends in historical data will effect the current data. A higher trend factor increases the influence.
|
|
|
|
// how trends in historical data will affect the current data. A higher trend factor increases the influence.
|
|
|
|
// of trends. Algorithm taken from https://en.wikipedia.org/wiki/Exponential_smoothing titled: "Double exponential smoothing".
|
|
|
|
// of trends. Algorithm taken from https://en.wikipedia.org/wiki/Exponential_smoothing titled: "Double exponential smoothing".
|
|
|
|
func funcHoltWinters(ev *evaluator, args Expressions) model.Value {
|
|
|
|
func funcHoltWinters(ev *evaluator, args Expressions) model.Value {
|
|
|
|
mat := ev.evalMatrix(args[0])
|
|
|
|
mat := ev.evalMatrix(args[0])
|
|
|
|