问题
I am using Statsmodels to implement seasonal ARIMA prediction for time series. Here is my code :
import statsmodels.api as sm
from statsmodels.tsa.x13 import x13_arima_select_order, _find_x12
import pandas
import scipy
import numpy
import imp
data_source = imp.load_source('data_source', '/mypath/')
def main():
data=data_source.getdata()
res = x13_arima_select_order(data)
print (res.order, res.sorder)
main()
When running the code, I am getting this exception:
X13NotFoundError("x12a and x13as not found on path. Give the " statsmodels.tools.sm_exceptions.X13NotFoundError: x12a and x13as not found on path. Give the path, put them on PATH, or set the X12PATH or X13PATH environmental variable.
回答1:
From looking at the source code for statsmodels.tsa.x13 you need to have either the x12a
or x13as
binary applications installed on your system.
In addition to that, the path to the folders where those binaries are located must be set in your user's PATH
environment variable.
You don't mention what operating system you're running, so here's a page with links to OS specific download pages on the left hand side to help you install the needed software.
https://www.census.gov/srd/www/x13as/
This is the link to the source I'm referencing to figure out what you're missing in your environment: http://statsmodels.sourceforge.net/devel/_modules/statsmodels/tsa/x13.html
def x13_arima_analysis(endog, maxorder=(2, 1), maxdiff=(2, 1), diff=None,
exog=None, log=None, outlier=True, trading=False,
forecast_years=None, retspec=False,
speconly=False, start=None, freq=None,
print_stdout=False, x12path=None, prefer_x13=True):
...
x12path = _check_x12(x12path)
if not isinstance(endog, (pd.DataFrame, pd.Series)):
if start is None or freq is None:
raise ValueError("start and freq cannot be none if endog is not "
"a pandas object")
endog = pd.Series(endog, index=pd.DatetimeIndex(start=start,
periods=len(endog),
freq=freq))
...
def _check_x12(x12path=None):
x12path = _find_x12(x12path)
if not x12path:
raise X13NotFoundError("x12a and x13as not found on path. Give the "
"path, put them on PATH, or set the "
"X12PATH or X13PATH environmental variable.")
return x12path
...
def _find_x12(x12path=None, prefer_x13=True):
"""
If x12path is not given, then either x13as[.exe] or x12a[.exe] must
be found on the PATH. Otherwise, the environmental variable X12PATH or
X13PATH must be defined. If prefer_x13 is True, only X13PATH is searched
for. If it is false, only X12PATH is searched for.
"""
来源:https://stackoverflow.com/questions/32053770/arima-seasonal-prediction-with-python-x12a-and-x13as-not-found-on-path