2.需求说明
本章的案例已经对资金申购数据进行了预测,而本实训需要对资金赎回数据进行预测。
首先需要对资金赎回数据进行平稳性检验和白噪声检验,然后确定p值与q值进行定阶,
最后建立ARIMA模型进行预测,并对该模型进行评价。
3.实现思路及步骤
(1)使用时序图、自相关图与单位根检验判断序列是否平稳,若不平稳则进行差分
运算。
(2)进行白噪声检验。
(3)使用BIC准则对模型进行定阶。
(4)使用ARIMA模型进行预测。
(5)将预测值与真实值进行对比,得到对比图、平均绝对误差、均方根误差及平均绝
对百分误差。
构建ARIMA模型预测资金赎回数据
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
要构建ARIMA模型预测资金赎回数据,我们遵循的步骤如下:
1. 数据准备与导入
确保数据已清洗并转换为适合分析的格式。数据应包含日期和赎回金额。
import pandas as pd import numpy as np from statsmodels.tsa.stattools import adfuller, acf, pacf from statsmodels.graphics.tsaplots import plot_acf, plot_pacf from statsmodels.tsa.arima.model import ARIMA from sklearn.metrics import mean_absolute_error, mean_squared_error import matplotlib.pyplot as plt # 加载数据 data = pd.read_csv('redemption_data.csv') # 假设数据存储在CSV文件中 data['Date'] = pd.to_datetime(data['Date']) data.set_index('Date', inplace=True)
2. 平稳性检验与差分
使用ADF测试检查序列的平稳性。如果序列非平稳,进行差分。
def test_stationarity(timeseries): result = adfuller(timeseries) print(f'ADF Statistic: {result[0]}') print(f'p-value: {result[1]}') test_stationarity(data['Redemption']) # 如果p-value大于0.05,则序列非平稳,进行差分 if result[1] > 0.05: data['Redemption_diff'] = data['Redemption'].diff().dropna() test_stationarity(data['Redemption_diff'])
3. 白噪声检验
使用Ljung-Box测试检验序列是否为白噪声。
from statsmodels.stats.diagnostic import acorr_ljungbox lb_stat, lb_pvalue = acorr_ljungbox(data['Redemption_diff'], lags=1) print(f'Ljung-Box statistic: {lb_stat[0]}, p-value: {lb_pvalue[0]}')
4. 模型定阶
使用AIC或BIC准则确定ARIMA模型的参数。
# 自相关图和偏自相关图 plot_acf(data['Redemption_diff'].dropna()) plot_pacf(data['Redemption_diff'].dropna()) plt.show() # 根据图形和BIC准则选择p和q p = q = 1 # 基于图形初步设定
5. 建立ARIMA模型
使用选定的参数建立模型并预测。
model = ARIMA(data['Redemption'], order=(p, 1 if 'Redemption_diff' in data.columns else 0, q)) results = model.fit() print(results.summary()) # 预测 forecast = results.get_forecast(steps=30) mean = forecast.predicted_mean conf_int = forecast.conf_int()
6. 模型评估
计算预测误差并绘制结果。
# 真实值与预测值对比 true_values = data['Redemption'][-30:] mae = mean_absolute_error(true_values, mean) mse = mean_squared_error(true_values, mean) rmse = np.sqrt(mse) print(f'MAE: {mae}, MSE: {mse}, RMSE: {rmse}') # 绘制预测结果 plt.plot(true_values, label='Actual') plt.plot(mean, label='Forecast') plt.fill_between(conf_int.index, conf_int.iloc[:, 0], conf_int.iloc[:, 1], color='pink') plt.legend() plt.show()
以上步骤涵盖了从数据预处理到模型建立和评估的全过程,适用于资金赎回数据的预测。如果在实际操作中遇到具体问题,可能需要调整模型参数或数据预处理方法。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
- ¥20 网站后台使用极速模式非常的卡
- ¥20 Keil uVision5创建project没反应
- ¥15 mmseqs内存报错
- ¥15 vika文档如何与obsidian同步
- ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
- ¥15 陆空双模式无人机飞控设置
- ¥15 sentaurus lithography
- ¥100 求抖音ck号 或者提ck教程
- ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)