ARIMA seasonal prediction with Python: x12a and x13as not found on path

核能气质少年 提交于 2019-12-21 05:46:58

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!