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

时间序列ARIMA模型拟合遇阻:参数错误与绘图异常求助

问题解决思路

1. 「unexpected parameter」报错处理

教程里的disp=-1参数是旧版statsmodels的用法,新版本已移除该参数。若需关闭拟合过程的日志输出,直接使用:

results_AR = model.fit()

若要精细控制输出,可改用verbose=False参数:

results_AR = model.fit(verbose=False)

2. 模型选择与绘图不符问题

你原本计划用AR模型(order=(2,1,0)),但实际代码写的是order=(0,1,2)——这是MA模型的参数,完全不符合需求,这是绘图偏差的核心原因。

另外,你已手动对Data_logScaled做一阶差分得到datasetLogDiffShifting,却又在ARIMA模型里设置了d=1(order的第二个值),相当于做了两次差分,导致拟合结果偏离预期。

修正方案二选一:

方案A:用模型自动处理差分(推荐)

保留原始对数变换数据,让ARIMA模型自动完成一阶差分,直接使用AR模型参数:

# 正确的AR模型参数 order=(p,d,q)=(2,1,0)
model = ARIMA(Data_logScaled, order=(2,1,0))
results_AR = model.fit()

# 生成差分序列并去掉空值,和模型拟合值对齐
datasetLogDiff = Data_logScaled - Data_logScaled.shift()
datasetLogDiff = datasetLogDiff.dropna()

# 提取模型拟合值并去掉空值
fitted_vals = results_AR.fittedvalues.dropna()

plt.plot(datasetLogDiff)
plt.plot(fitted_vals, color='red')
plt.title('RSS: %.4f'%sum((fitted_vals - datasetLogDiff['#Passengers'])**2))
print('Plotting AR model')
方案B:手动差分后用ARIMA(2,0,0)

若已手动做差分,需把模型的差分次数设为0:

# 手动差分后的数据先去掉空值
datasetLogDiffShifting = datasetLogDiffShifting.dropna()

# 使用AR模型参数 order=(2,0,0)
model = ARIMA(datasetLogDiffShifting, order=(2,0,0))
results_AR = model.fit()

plt.plot(datasetLogDiffShifting)
plt.plot(results_AR.fittedvalues, color='red')
plt.title('RSS: %.4f'%sum((results_AR.fittedvalues - datasetLogDiffShifting['#Passengers'])**2))
print('Plotting AR model')

关键要点总结

  • ARIMA的order=(p,d,q)参数:p是自回归阶数,d是差分次数,q是移动平均阶数。AR模型对应q=0,MA模型对应p=0。
  • 不要同时手动差分和设置模型的d>0,否则会重复差分导致数据失真。
  • 差分后的数据会产生NaN值,必须用dropna()处理后再拟合和绘图,否则会出现对齐错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:38:13