为了帮助理解代码,这是我的代码大概逻辑:
数据预处理
[ol]
[/ol]
建立 ARIMA 模型
[ol]
[/ol]
输出预测结果并进行可视化
[ol]
[/ol]
这是源代码
import pandas as pd
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.arima.model import ARIMA
import matplotlib.dates as mdates
class ARIMAModel:
def __init__(self, data_path):
"""
通过指定数据文件路径初始化 ARIMA 模型类
:param data_path: 数据文件路径
"""
self.df = pd.read_csv(data_path, parse_dates=['date'], index_col='date')
def preprocess_data(self):
"""
对数据进行预处理,包括数据截取、聚合、差分以及数据检验
"""
# 截取2021年4月到2023年2月的数据
self.df = self.df.loc['2021-04':'2023-02']
# 将 buyer_num 和 sales quantity 相乘得到总交易额
self.df['GMV'] = self.df['buyer_num'] * self.df['sales quantity']
# 聚合各个时间序列得到 GMV
self.series = (
self.df['GMV']
+ self.df['avg_purchase_freq']
+ self.df['avg_purchase_volume']
+ self.df['industry_count']
+ self.df['avg_price']
)
# 执行差分
self.diff_series = self.series.diff().dropna()
# ADF 检验
result = adfuller(self.diff_series.values.ravel())
while result[1] > 0.05:
print('差分后数据是非平稳的!')
self.diff_series = self.diff_series.diff().dropna()
result = adfuller(self.diff_series.values.ravel())
if result[1]
我已经尝试了一些方法,如适当调整模型参数、进行数据预处理等等,但是仍然无法得到预期的结果。我不确定是否我使用的库函数可能有问题,或者我的数据不适用于这种模型。如果有谁能够帮我修改代码,或者提供一些解决方案以解决这个问题,我将非常感激。非常感谢!
这是我的数据集链接:https://pan.baidu.com/s/1RnznygK5dnlnTlleJX0eaQ?pwd=lsae
提取码:lsae