使用ARIMA模型预测商场销售数据的代码、
时间: 2024-05-06 07:14:47 浏览: 73
基于python实现的使用ARIMA模型对价格数据进行预测项目源码
首先,我们需要导入需要的库,包括pandas、matplotlib、statsmodels等:
```python
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_model import ARIMA
```
接着,我们读取数据文件并进行预处理,将日期列设置为索引,并对销售额进行取对数处理:
```python
# 读取数据文件
data = pd.read_csv('sales.csv', index_col='date', parse_dates=True)
# 将销售额取对数
data['sales'] = np.log(data['sales'])
# 绘制销售数据图
plt.figure(figsize=(10,4))
plt.plot(data)
plt.title('Sales Data')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.show()
```
然后,我们需要确定ARIMA模型的参数p、d、q。这里我们使用自相关图和偏自相关图来确定p和q,使用单位根检验(ADF检验)来确定d。代码如下:
```python
# 绘制自相关图和偏自相关图
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
plot_acf(data, lags=30)
plot_pacf(data, lags=30)
plt.show()
# 进行ADF检验
from statsmodels.tsa.stattools import adfuller
result = adfuller(data['sales'])
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
print('\t%s: %.3f' % (key, value))
```
根据自相关图和偏自相关图,我们可以大致确定p=2,q=2。而根据ADF检验,我们可以看到p-value很小,说明数据是平稳的,因此d=0。
接下来,我们可以建立ARIMA模型并进行拟合和预测:
```python
# 建立ARIMA模型
model = ARIMA(data, order=(2,0,2))
# 拟合模型
model_fit = model.fit(disp=0)
# 绘制残差图
residuals = pd.DataFrame(model_fit.resid)
residuals.plot()
plt.show()
# 输出模型的统计信息
print(model_fit.summary())
# 进行预测
forecast = model_fit.forecast(steps=12)[0]
forecast = np.exp(forecast)
# 绘制预测结果
plt.figure(figsize=(10,4))
plt.plot(data, label='Actual')
plt.plot(forecast, label='Forecast')
plt.title('Sales Forecast')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.legend()
plt.show()
```
最后,我们可以将预测结果和实际数据进行比较,并进行评估。可以使用均方根误差(RMSE)和平均绝对误差(MAE)来评估预测结果的准确性:
```python
# 评估预测结果
from sklearn.metrics import mean_squared_error, mean_absolute_error
mse = mean_squared_error(data['sales'][-12:], forecast)
rmse = np.sqrt(mse)
mae = mean_absolute_error(data['sales'][-12:], forecast)
print('RMSE: %f' % rmse)
print('MAE: %f' % mae)
```
完整代码如下:
阅读全文