All problems
Holt-Winters Multiplicative One Step
Problem
Perform one multiplicative Holt-Winters update and return [level, trend, seasonal]. Given the old states and observation x: new_level = alpha * (x / seasonal) + (1 - alpha) * (level + trend); new_trend = beta * (new_level - level) + (1 - beta) * trend; new_seasonal = gamma * (x / new_level) + (1 - gamma) * seasonal.
The seasonal factor must be nonzero.
Hint
Multiplicative seasonality divides the observation by the seasonal factor instead of subtracting it.
Test cases
case 1
in: [10,0.5,1.5,12,0.5,0.3,0.4]
expected: [9.25,0.125,1.4189189189189189]
case 2
in: [5,0.2,2,6,0.4,0.3,0.2]
expected: [4.32,-0.06399999999999992,1.8777777777777778]
case 3
in: [1,0,1,1,0.5,0.5,0.5]
expected: [1,0,1]
case 4
in: [10,1,0.5,9,0.2,0.1,0.9]
expected: [12.4,1.1400000000000001,0.703225806451613]
Starter codePython
def holt_winters_multiplicative_step(level, trend, seasonal, x, alpha, beta, gamma):
# Your code here
pass4 test cases · run your code against them in the editor