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

auto.arima()与arima()结果差异:诺丁汉气温时间序列分析

Why auto.arima() Didn't Pick Your Lower-AIC ARIMA(3,1,3) Model

Great question! This is a common point of confusion when using automated ARIMA selection tools like auto.arima()—let’s break down the key reasons this might happen, and what you can investigate next:

1. auto.arima() uses a stepwise (not exhaustive) search by default

By default, auto.arima() doesn’t test every possible (p,d,q) combination—it relies on a stepwise search algorithm to narrow down candidates efficiently. It starts with an initial model, then makes incremental tweaks (adding/removing AR/MA terms, adjusting d) to find lower-AIC options.

Your ARIMA(3,1,3) model might fall outside the path this algorithm takes. For example, if the tool locks into exploring d=0 models first and finds a strong candidate (like your ARIMA(5,0,1)), it might not fully dig into all d=1 combinations that could have a lower AIC.

To test this, force an exhaustive search with:

auto.arima(x.t, trace=True, stepwise=False, approximation=False)

This will evaluate all possible (p,d,q) combinations within default limits, and it’s likely to pick up your ARIMA(3,1,3) model if it truly has the lowest AIC.

2. The choice of d (differencing order) might be driving the discrepancy

auto.arima() first uses statistical tests (like KPSS for stationarity, ADF for unit roots) to pick potential d values. It’s possible these tests suggested d=0 was sufficient for your temperature data, so the tool prioritized non-differenced models.

But manual differencing (d=1) might better capture subtle non-stationarity or trends the tests missed. To verify:

  • Run stationarity tests on your original series (tseries::kpss.test(x.t)) and differenced series (tseries::kpss.test(diff(x.t))).
  • Compare residual plots and Ljung-Box test results for both models—lower AIC is useful, but you also want residuals that behave like white noise (no lingering autocorrelation).

3. Don’t overlook seasonality!

Your data is monthly average temperatures, which almost certainly has a strong seasonal component. By default, auto.arima() runs in non-seasonal mode. A seasonal ARIMA (SARIMA) model might be a far better fit overall. Try:

auto.arima(x.t, trace=True, seasonal=True)

This will explore seasonal (P,D,Q) terms alongside non-seasonal (p,d,q) terms, potentially leading to an even stronger model than either of your current candidates.

Final checks

Even if ARIMA(3,1,3) has a lower AIC, make sure to:

  • Plot residuals to check for remaining patterns or autocorrelation.
  • Compare out-of-sample forecast accuracy (e.g., using forecast::accuracy() on a held-out test set)—AIC is an in-sample metric, and real-world performance matters most.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:53:18