1212array([10.99999999, 12.00000001])
1313"""
1414
15-
1615import numpy as np
1716
1817
1918class ARIMAModel :
20- def __init__ (self , ar_order : int = 1 , diff_order : int = 0 , ma_order : int = 0 ) -> None :
19+ def __init__ (
20+ self , ar_order : int = 1 , diff_order : int = 0 , ma_order : int = 0
21+ ) -> None :
2122 """Initialize ARIMA model.
2223 Args:
2324 ar_order: Autoregressive order (p)
@@ -51,9 +52,11 @@ def fit(self, time_series: np.ndarray) -> "ARIMAModel":
5152 y = np .asarray (time_series )
5253 y_diff = self .difference (y , self .diff_order )
5354 # Build lagged feature matrix
54- feature_matrix = np .column_stack ([np .roll (y_diff , i ) for i in range (1 , self .ar_order + 1 )])
55- feature_matrix = feature_matrix [self .ar_order :]
56- target = y_diff [self .ar_order :]
55+ feature_matrix = np .column_stack (
56+ [np .roll (y_diff , i ) for i in range (1 , self .ar_order + 1 )]
57+ )
58+ feature_matrix = feature_matrix [self .ar_order :]
59+ target = y_diff [self .ar_order :]
5760 # Add intercept
5861 feature_matrix = np .hstack (
5962 [np .ones ((feature_matrix .shape [0 ], 1 )), feature_matrix ]
@@ -79,10 +82,10 @@ def predict(self, time_series: np.ndarray, n_periods: int = 1) -> np.ndarray:
7982 array([10.99999999, 12.00000001])
8083 """
8184 y = np .asarray (time_series )
82- y_pred = list (y [- self .ar_order :])
85+ y_pred = list (y [- self .ar_order :])
8386 for _ in range (n_periods ):
8487 # Build feature vector for prediction
85- features = [1 ] + y_pred [- self .ar_order :][::- 1 ]
88+ features = [1 ] + y_pred [- self .ar_order :][::- 1 ]
8689 next_val = np .dot (features , self .coef_ )
8790 y_pred .append (next_val )
88- return np .array (y_pred [self .ar_order :])
91+ return np .array (y_pred [self .ar_order :])
0 commit comments