ARIMA 模型 Python statsmodels 实战:3步完成销售数据预测与残差检验 ARIMA 模型 Python statsmodels 实战3步完成销售数据预测与残差检验时间序列分析在商业决策中扮演着关键角色而ARIMA模型作为经典预测工具能有效捕捉销售数据的动态变化规律。本文将带您用Python的statsmodels库快速构建ARIMA模型从数据预处理到模型诊断提供可直接复用的代码模板。1. 环境准备与数据加载首先确保已安装必要库pip install statsmodels pandas matplotlib。我们使用某电商平台24个月的洗发水销售数据作为示例import pandas as pd import matplotlib.pyplot as plt from statsmodels.tsa.statespace.sarimax import SARIMAX from statsmodels.tsa.stattools import adfuller from statsmodels.graphics.tsaplots import plot_acf, plot_pacf # 加载数据 sales_data pd.read_csv(shampoo_sales.csv, parse_dates[Month], index_colMonth) print(sales_data.head()) # 可视化原始数据 plt.figure(figsize(12,6)) plt.plot(sales_data, labelOriginal Sales) plt.title(Shampoo Sales Trend) plt.xlabel(Date) plt.ylabel(Sales Volume) plt.grid(True) plt.legend() plt.show()关键检查点确认时间索引已正确设置为DateTime格式观察数据是否存在明显季节性本例为月度数据检查缺失值sales_data.isnull().sum()提示当数据量少于50个观测点时ARIMA预测效果可能不稳定建议收集更多数据或考虑其他简化模型。2. 平稳性检验与参数确定ARIMA建模的核心前提是时间序列的平稳性。我们通过ADF检验和自相关图确定差分阶数d# ADF单位根检验 def adf_test(timeseries): result adfuller(timeseries) print(ADF Statistic:, result[0]) print(p-value:, result[1]) print(Critical Values:) for k, v in result[4].items(): print(f {k}: {v}) adf_test(sales_data) # 初始p值通常0.05需差分 # 一阶差分处理 sales_diff sales_data.diff().dropna() adf_test(sales_diff) # 检查p值是否0.05 # 自相关图分析 fig, (ax1, ax2) plt.subplots(2,1, figsize(12,8)) plot_acf(sales_diff, lags20, axax1) plot_pacf(sales_diff, lags20, axax2) plt.tight_layout() plt.show()参数确定方法图形特征可能参数判断依据ACF拖尾q0无显著截断点PACF截尾p2滞后2阶后快速衰减ADF检验d1一阶差分后平稳3. 模型训练与诊断结合前步分析我们构建ARIMA(2,1,0)模型并进行残差检验# 模型训练 model SARIMAX(sales_data, order(2,1,0), seasonal_order(0,0,0,0)) results model.fit(dispFalse) print(results.summary()) # 残差诊断 residuals results.resid fig, (ax1, ax2) plt.subplots(2,1, figsize(12,8)) residuals.plot(axax1, titleResiduals Plot) residuals.plot(kindkde, axax2, titleResiduals Distribution) plt.tight_layout() plt.show() # 残差自相关检验 plot_acf(residuals, lags20) plt.show()诊断标准正态性残差Q-Q图应近似直线独立性D-W值接近2本例1.98同方差性残差波动无规律性变化若发现以下问题需调整模型残差自相关增加q参数残差偏态考虑对数变换季节性未消除引入SARIMA4. 预测实现与效果评估最后进行12期销售预测并可视化结果# 生成预测 forecast results.get_forecast(steps12) forecast_mean forecast.predicted_mean conf_int forecast.conf_int() # 可视化 plt.figure(figsize(12,6)) plt.plot(sales_data, labelHistorical) plt.plot(forecast_mean, labelForecast, colorred) plt.fill_between(conf_int.index, conf_int.iloc[:,0], conf_int.iloc[:,1], colorpink, alpha0.3) plt.title(12-Month Sales Forecast with Confidence Interval) plt.legend() plt.grid(True) plt.show() # 评估指标 from sklearn.metrics import mean_absolute_error train_pred results.predict(start1, endlen(sales_data)) mae mean_absolute_error(sales_data, train_pred) print(fMAE: {mae:.2f})提升预测精度的实用技巧使用滚动预测验证Rolling Forecast Validation尝试自动参数搜索auto_arima函数对非负数据使用Box-Cox变换结合外部变量构建ARIMAX模型实际项目中建议保存模型对象以便后续调用import joblib joblib.dump(results, arima_model.pkl) # 加载模型loaded_model joblib.load(arima_model.pkl)

相关新闻

最新新闻

LV3296与PIC18F86J55的嵌入式条码扫描系统设计

LV3296与PIC18F86J55的嵌入式条码扫描系统设计

1. LV3296与PIC18F86J55的硬件协同设计 LV3296作为工业级条码扫描引擎,与PIC18F86J55微控制器的组合为嵌入式信息采集系统提供了理想的硬件平台。这套方案特别适合需要稳定数据采集的便携设备,如仓库管理终端、物流扫描设备和医疗数据采集器。 PIC18F86…

2026/7/8 10:19:30
DTC 品牌 AI 流量监测实战:四级升级路径,从 0.5% 到看到全貌

DTC 品牌 AI 流量监测实战:四级升级路径,从 0.5% 到看到全貌

本文拆解 AI 时代流量归因的五层结构,包括:Dark AI Traffic 识别、爬虫意图分类、Citation SOV 主动采样——帮助技术和增长团队建立完整的 AI 流量监控体系。真正的 AI 流量,藏在五层信号里当你只看 GA4 的 AI 引荐数字时,你实际…

2026/7/8 10:19:30
LV3296与STM32F412ZG高精度数据采集方案详解

LV3296与STM32F412ZG高精度数据采集方案详解

1. LV3296与STM32F412ZG的黄金组合解析 在嵌入式数据采集领域,LV3296信号调理芯片与STM32F412ZG微控制器的组合堪称经典搭档。这套方案的核心优势在于LV3296负责前端信号的高精度采集,而STM32F412ZG则专注于数据的实时处理与系统管理。 STM32F412ZG作为…

2026/7/8 10:19:30
KLayout技术深度解析:开源版图设计工具的核心架构与应用实践

KLayout技术深度解析:开源版图设计工具的核心架构与应用实践

KLayout技术深度解析:开源版图设计工具的核心架构与应用实践 【免费下载链接】klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout KLayout作为一款专业的开源版图设计工具,为集成电路设计和电子设计自动化提供了…

2026/7/8 10:19:30
G6D-ASI继电器与PIC18F57K42的直流负载控制方案

G6D-ASI继电器与PIC18F57K42的直流负载控制方案

1. 项目背景与核心需求在工业自动化和电力电子领域,直流负载管理一直是系统设计中的关键挑战。传统继电器控制方案存在响应速度慢、触点寿命短、能耗高等问题,特别是在需要频繁切换的中高功率场景下表现尤为明显。G6D-ASI系列继电器与PIC18F57K42微控制器…

2026/7/8 10:19:30
《从零搭建无人船控制系统-第一篇》

《从零搭建无人船控制系统-第一篇》

第一章:为什么选 STM32H743?无人船主控芯片选型实战做无人船的第一步不是写代码,是选芯片。芯片选错了,后面全是坑。1. 一张图看懂选型困局 2024 年,我要做一台能自主航行的无人船。需求很明确: 必须能做的…

2026/7/8 10:14:30

月新闻