1717
1818
1919class ARIMAModel :
20- def __init__ (self , ar_order : int = 1 , diff_order : int = 0 , ma_order : int = 0 ) -> None :
20+ def __init__ (
21+ self , ar_order : int = 1 , diff_order : int = 0 , ma_order : int = 0
22+ ) -> None :
2123 """Initialize ARIMA model.
2224 Args:
2325 ar_order: Autoregressive order (p)
@@ -51,9 +53,11 @@ def fit(self, time_series: np.ndarray) -> "ARIMAModel":
5153 y = np .asarray (time_series )
5254 y_diff = self .difference (y , self .diff_order )
5355 # 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 :]
56+ feature_matrix = np .column_stack (
57+ [np .roll (y_diff , i ) for i in range (1 , self .ar_order + 1 )]
58+ )
59+ feature_matrix = feature_matrix [self .ar_order :]
60+ target = y_diff [self .ar_order :]
5761 # Add intercept
5862 feature_matrix = np .hstack (
5963 [np .ones ((feature_matrix .shape [0 ], 1 )), feature_matrix ]
@@ -79,10 +83,10 @@ def predict(self, time_series: np.ndarray, n_periods: int = 1) -> np.ndarray:
7983 array([10.99999999, 12.00000001])
8084 """
8185 y = np .asarray (time_series )
82- y_pred = list (y [- self .ar_order :])
86+ y_pred = list (y [- self .ar_order :])
8387 for _ in range (n_periods ):
8488 # Build feature vector for prediction
85- features = [1 ] + y_pred [- self .ar_order :][::- 1 ]
89+ features = [1 ] + y_pred [- self .ar_order :][::- 1 ]
8690 next_val = np .dot (features , self .coef_ )
8791 y_pred .append (next_val )
88- return np .array (y_pred [self .ar_order :])
92+ return np .array (y_pred [self .ar_order :])
0 commit comments