# 依赖: statsmodels, pandas import pandas as pd from statsmodels.tsa.arima.model import ARIMA from statsmodels.tsa.stattools import adfuller s = pd.Series([112, 118, 132, 129, 121, 135, 148, 136, 119, 104, 118, 115] * 2) print('ADF p =', round(adfuller(s)[1], 4)) # p < 0.05 才近似平稳 orders = [(p, d, q) for p in range(3) for d in range(2) for q in range(3)] best = min(orders, key=lambda o: ARIMA(s, order=o).fit().aic) # 按 AIC 定阶 model = ARIMA(s, order=best).fit() print('阶数 =', best, '未来 4 期 =', model.forecast(4).round(2).tolist())