You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Statsmodels X-13-ARIMA应选何种季节调整程序?代码报错求助

问题:statsmodels调用X-13季节调整工具触发FileNotFoundError

场景与代码

已下载Win X-13并解压到本地,运行以下代码时出现错误:

import pandas as pd
from pandas import Timestamp
import os
import statsmodels.api as sm

s = pd.Series(
    {Timestamp('2013-03-01 00:00:00'): 838.2,
     Timestamp('2013-04-01 00:00:00'): 865.17,
     Timestamp('2013-05-01 00:00:00'): 763.0,
     Timestamp('2013-06-01 00:00:00'): 802.99,
     Timestamp('2013-07-01 00:00:00'): 875.56,
     Timestamp('2013-08-01 00:00:00'): 754.4,
     Timestamp('2013-09-01 00:00:00'): 617.48,
     Timestamp('2013-10-01 00:00:00'): 994.75,
     Timestamp('2013-11-01 00:00:00'): 860.86,
     Timestamp('2013-12-01 00:00:00'): 786.66},
    name='Cost')

PATH = os.chdir(r'C:\WinX13\x13as')

result = sm.tsa.x13_arima_analysis(s, x12path=PATH)

错误信息

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Input In [10], in <cell line: 3>()
      1 PATH = os.chdir(r'C:\Users\usr\WinX13\x13as')
----> 3 result = sm.tsa.x13_arima_analysis(s, x12path=PATH)

File ~\AppData\Roaming\Python\Python39\site-packages\pandas\util\_decorators.py:207, in deprecate_kwarg.<locals>._deprecate_kwarg.<locals>.wrapper(*args, **kwargs)
    205     else:
    206         kwargs[new_arg_name] = new_arg_value
--> 207 return func(*args, **kwargs)

File C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\x13.py:457, in x13_arima_analysis(endog, maxorder, maxdiff, diff, exog, log, outlier, trading, forecast_periods, retspec, speconly, start, freq, print_stdout, x12path, prefer_x13, tempdir)
    455     print(p.stdout.read())
    456 # check for errors
--> 457 errors = _open_and_read(ftempout.name + '.err')
    458 _check_errors(errors)
    460 # read in results

File C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\x13.py:206, in _open_and_read(fname)
    204 def _open_and_read(fname):
    205     # opens a file, reads it, and make sure it's closed
--> 206     with open(fname, 'r', encoding="utf-8") as fin:
    207         fout = fin.read()
    208     return fout

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\usr\\AppData\\Local\\Temp\\tmp0d23o_q8.err'

问题排查与解决方案

1. 核心错误:os.chdir返回值无效

os.chdir()仅负责切换当前工作目录,执行成功后返回None。你把这个返回值赋值给PATH,导致x12path参数传入无效值,statsmodels找不到X-13的可执行文件。

修正方式:直接指定X-13可执行文件所在的目录路径,不要用os.chdir的返回值。

2. 时间序列频率缺失

你的时间序列没有明确的频率信息,且仅包含10个月度数据点,X-13需要明确的时序频率(如月度)才能正常执行季节调整。

修正后的完整代码

import pandas as pd
from pandas import Timestamp
import statsmodels.api as sm

# 创建带明确月度频率的时间序列
s = pd.Series(
    {Timestamp('2013-03-01'): 838.2,
     Timestamp('2013-04-01'): 865.17,
     Timestamp('2013-05-01'): 763.0,
     Timestamp('2013-06-01'): 802.99,
     Timestamp('2013-07-01'): 875.56,
     Timestamp('2013-08-01'): 754.4,
     Timestamp('2013-09-01'): 617.48,
     Timestamp('2013-10-01'): 994.75,
     Timestamp('2013-11-01'): 860.86,
     Timestamp('2013-12-01'): 786.66},
    name='Cost').asfreq('MS')  # MS代表每月第一天的频率

# 直接指定X-13的安装目录(确保该目录下有x13as.exe)
X13_PATH = r'C:\Users\usr\WinX13\x13as'

# 添加print_stdout=True可查看X-13的详细运行日志,方便排查后续问题
result = sm.tsa.x13_arima_analysis(s, x12path=X13_PATH, print_stdout=True)

额外排查点

  • 确认解压后的目录中存在x13as.exe文件,且路径与代码中指定的X13_PATH完全一致(注意错误信息中路径是C:\Users\usr\WinX13\x13as,和你最初写的C:\WinX13\x13as不一致,要统一)
  • 如果仍有问题,查看print_stdout=True输出的日志,X-13会在日志中说明具体失败原因(比如数据量不足、格式错误等)

内容的提问来源于stack exchange,提问作者NRVA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:55:24