本文代码和数据资料已分享至会员群

加入会员群

但我们最近在广州市新能源汽车销量预测的项目里,把ARIMA和LSTM捏到了一起,结果让人惊喜——预测误差直接从18%砍到了10%!今天就拆解这个组合模型的底层逻辑,会员群内附代码和数据细节。

新能源汽车销量预测分析导览

新能源汽车销量预测分析导览

基于Python实现的ARIMA-LSTM组合模型在广州市场的应用

融合百度指数公共充电桩数据的创新预测方法

本研究聚焦广州市新能源汽车销量预测问题,创新性地将时间序列分析与深度学习方法相结合,提出ARIMA-LSTM组合模型

一、研究背景与意义

作为数据科学领域的从业者,我们深知精准的预测模型对产业发展的重要性。在去年为某汽车产业咨询项目提供服务时,我们发现新能源汽车销量预测不仅需要先进的算法支持,更要结合实际业务场景中的关键影响因素。这个项目最终形成的分析框架,正是我们今天要分享的核心内容。

随着全球对环境问题的重视和能源结构转型的推进,新能源汽车已成为汽车产业发展的必然趋势。广州市作为我国重要的汽车生产基地,其新能源汽车市场的发展态势对整个产业具有重要影响。

为什么需要预测新能源汽车销量?

全球变暖问题日益严峻,汽车尾气排放是主要诱因之一。推广新能源汽车不仅能减少排放,还是保障国家能源安全的重要举措。对广州市而言,准确预测新能源汽车销量能帮助企业制定生产计划、政府规划基础设施,推动产业健康发展。

研究目标

本研究创新性地引入百度指数(反映市场关注度)和公共充电桩数量(体现基础设施完善度)作为关键影响因素,通过数据挖掘与模型构建,为广州市新能源汽车产业发展提供科学的决策依据。

先说说:为啥单一模型不够用?

新能源汽车销量这东西,太“调皮”了。既有政策推动下的稳步增长(线性趋势),又受充电桩建设速度、市场关注度这些因素的突发影响(非线性波动)。

  • 纯ARIMA:像个“老学究”,擅长抓整体增长趋势,但对充电桩突然变多、百度指数猛涨这些“意外”反应慢,预测误差18.35%;
  • 纯LSTM:像个“机灵鬼”,能捕捉非线性关系,但容易“忘本”,单独用百度指数时误差16.01%,加了充电桩数据降到14.06%,可还是不如组合起来强。所以我们想:能不能让“老学究”稳住基本盘,“机灵鬼”搞定突发状况?

组合模型的底层逻辑:1+1>2

ARIMA和LSTM的融合,不是简单拼接,而是“各司其职”:

  • ARIMA先上:处理销量数据的线性趋势,算出预测值后,把“没抓到的部分”(残差)甩给LSTM;
  • LSTM接棒:拿着残差,再结合充电桩数量、百度指数这些“辅助信息”,把非线性波动补全。就像先画一条平滑的增长线,再用细节把折线的起伏填进去,最后误差降到10.01%也就不奇怪了。

手把手拆代码:从数据到预测的关键步骤

数据准备:哪些因素真的有用?

我们扒了4类数据(2017.6-2024.2):

  • 广州市新能源汽车销量(乘联会)
  • 广东省公共充电桩数量(充电联盟)
  • 广东省新能源汽车百度指数(百度指数)
  • 广东省油价(东方财富网)

用Spearman相关性分析筛了下:

  • 充电桩和销量相关系数0.798(高度正相关)
  • 百度指数0.655(较强正相关)
  • 油价才0.162(几乎没关系)

果断留前两个当“辅助变量”。

搭ARIMA模型:先搞定线性趋势

ARIMA的核心是让数据“变稳”,我们用ADF检验测了下:

  • 原始销量数据:p=0.967(不稳)
  • 二阶差分后:p<0.001(稳了!)

最后选了ARIMA(4,1,0),拟合效果如下:

# 关键代码片段
from statsmodels.tsa.arima.model import ARIMA
# 读数据
sales_data = pd.read_csv('guangzhou_ev_sales.csv', parse_dates=['date'], index_col='date')
# 二阶差分让数据平稳
sales_diff2 = sales_data['sales'].diff(2).dropna()
# 建模型
model_arima = ARIMA(sales_data['sales'], order=(4, 1, 0))
result_arima = model_arima.fit()

搭LSTM模型:抓非线性波动

LSTM的“记忆功能”适合处理复杂波动,我们用过去6个月的数据(销量+充电桩+百度指数)预测下个月:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
# 数据标准化
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(sales_data[['sales', 'charging_piles', 'baidu_index']])
# 建模型
model_lstm = Sequential()
model_lstm.add(LSTM(64, return_sequences=True, input_shape=(6, 3))) # 6个月数据,3个特征
model_lstm.add(LSTM(10, return_sequences=False))
model_lstm.add(Dropout(0.2)) # 防过拟合
model_lstm.add(Dense(1))

单加百度指数时误差16.01%,单加充电桩14.88%,两个一起加降到14.06%,果然“人多力量大”。

组合模型:ARIMA+LSTM的“王炸”效果

把ARIMA的残差(没抓到的部分)喂给LSTM,相当于“查漏补缺”:

# 取ARIMA残差,和其他特征合并
arima_residuals = result_arima.resid.values.reshape(-1, 1)
combined_features = np.concatenate((scaled_data, arima_residuals), axis=1)
# 用新特征训练组合模型
model_combined = Sequential()
# 结构类似LSTM,输入特征多了1个(残差)
model_combined.add(LSTM(64, return_sequences=True, input_shape=(6, 4)))
...

结果误差直接干到10.01%!对比图一目了然:

各模型MAPE对比:

金融科技中的量化投资

金融科技中的量化投资:LSTM、Wavenet与LightGBM的融合策略

分析LSTM、Wavenet和LightGBM在金融时序预测中的优劣,提出动态融合框架以捕捉市场非线性特征,应用于股票收益率预测

探索观点

我们还测了下稳健性,Dropout在0.1-0.3之间变,误差波动不到3%,模型够稳。

给广州新能源汽车市场的落地建议

从模型结果看,充电桩和市场关注度(百度指数)对销量影响真不小,咱们可以这么干:

  1. 充电桩赶紧建:居民区、商场多摆点,数据显示这是最直接的“销量助推器”;
  2. 推广要盯百度指数:搞活动后指数涨了,说明效果到位了;
  3. 政策得稳:别忽冷忽热,长期支持才能让市场有信心。

下次可以试试加政策文件、电池技术突破这些因素,说不定误差还能降。

(完整代码和数据已放社群,进群领走直接跑~)