Predict Statsmodel Argument Error
Solution 1:
The call signature of ARIMA.predict
is
predict(self, params, start=None, end=None, exog=None, dynamic=False)
Thus, when you call r.predict(start='2012-07-31', end='2012-08-31')
, self
gets bound to r
, and values are bound to start
and end
but the required positional arument params
does not get bound. That is why you get the error
TypeError: predict() takes at least 2arguments (3 given)
Unfortunately the error message is misleading. The "3 given" refer to r
, start
and end
. The "2 arguments" refer to the two required arguments, self
and params
.
The problem is that the required positional argument params
was not given.
To fix the problem, you need parameters. Usually you find those parameters by fitting:
r = r.fit()
before calling
pred = r.predict(start='2012-07-31', end='2012-08-31')
r.fit()
returns a statsmodels.tsa.arima_model.ARIMAResultsWrapper
which
have the parameters "baked in" so calling ARIMAResultWrapper.fit
does not require passing params
.
import pandas as pd
import numpy as np
from statsmodels.tsa.arima_model import ARIMA
dates = pd.date_range('2012-07-09','2012-07-30')
series = [43.,32.,63.,98.,65.,78.,23.,35.,78.,56.,45.,45.,56.,6.,63.,45.,64.,34.,76.,34.,14.,54.]
res = pd.Series(series, index=dates)
r = ARIMA(res,(1,2,0))
r = r.fit()
pred = r.predict(start='2012-07-31', end='2012-08-31')
print(pred)
yields
2012-07-31 -39.0672222012-08-01 26.9025712012-08-02 -17.027333...2012-08-29 0.5329462012-08-30 0.5324472012-08-31 0.532780Freq:D,dtype:float64
Post a Comment for "Predict Statsmodel Argument Error"