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