【大数据处理与可视化】七、时间序列分析

您所在的位置:网站首页 大数据可视化的基本分析 【大数据处理与可视化】七、时间序列分析

【大数据处理与可视化】七、时间序列分析

2023-06-06 09:53| 来源: 网络整理| 查看: 265

【大数据处理与可视化】七、时间序列分析 实验目的实验内容实验步骤一、案例——股票收盘价分析1、读取数据,并转换成DataFrame对象展示2、将“交易日期”一列设置为行索引3、根据数据中“收盘价”一列的数据绘制一张折线图,以了解近些年来收盘价格的趋势4、通过降采样来减少一些数据量,将采样的频率由每周改成每天5、利用ARIMA模型将非平稳序列转换为平稳序列用图表表示当前的ACF系数用图表表示当前的PACF系数通过差分算法,将将非平稳序列转换为平稳序列 6、使用时序图看一下ACF和PACF系数的变化ACF系数PACF系数 7、绘制ARIMA模型8、使用2018年1月至2月的五粮液股票数据,对刚刚拟合后的ARIMA模型进行测试 实验小结

实验目的

       能够熟练运用时间序列分析和ARIMA模型对数据进行分析。

实验内容

       股票收盘价分析:本实验以“五粮液”股票数据为例,结合时间序列及ARIMA模型对股票收盘价进行分析;使用2003至2018年的股票数据,其中2014-2017年的数据为训练数据,通过对这些数据的训练,实现对2018年1月至3月的收盘价进行预测,并将预测的结果与爬到的真实股价进行绘制对比。

实验步骤 一、案例——股票收盘价分析 1、读取数据,并转换成DataFrame对象展示

代码:

import pandas as pd import datetime import matplotlib.pylab as plt from statsmodels.tsa.arima_model import ARIMA from statsmodels.graphics.tsaplots import plot_acf,plot_pacf plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False data_path=open(r'D:\test.csv') shares_info = pd.read_csv(data_path) shares_info

截图:

在这里插入图片描述

2、将“交易日期”一列设置为行索引

代码:

dates = pd.to_datetime(shares_info['交易日期'].values,format='%Y%m%d') shares_info = shares_info.set_index(dates) shares_info

截图:

在这里插入图片描述

3、根据数据中“收盘价”一列的数据绘制一张折线图,以了解近些年来收盘价格的趋势

代码:

plt.plot(shares_info['收盘价']) plt.title('股票每日收盘价') plt.show()

截图:

在这里插入图片描述

4、通过降采样来减少一些数据量,将采样的频率由每周改成每天

代码:

shares_info_week = shares_info['收盘价'].resample('W-MON').mean() train_data = shares_info_week['2014': '2017'] plt.plot(train_data) plt.title('股票周收盘均值') plt.show()

截图:

在这里插入图片描述

5、利用ARIMA模型将非平稳序列转换为平稳序列 用图表表示当前的ACF系数

代码:

acf = plot_acf(train_data,lags=20) plt.title('股票指数的ACF') plt.show()

截图:

在这里插入图片描述

用图表表示当前的PACF系数

代码:

pacf = plot_pacf(train_data,lags=20) plt.title('股票指数的PACF') plt.show()

截图:

在这里插入图片描述

通过差分算法,将将非平稳序列转换为平稳序列

代码:

train_diff=train_data.diff() diff = train_diff.dropna() plt.figure() plt.plot(diff) plt.title('一阶差分') plt.show()

截图:

在这里插入图片描述

6、使用时序图看一下ACF和PACF系数的变化 ACF系数

代码:

acf_diff = plot_acf(diff,lags=20) plt.title('一阶差分的ACF') plt.show()

截图:

在这里插入图片描述

PACF系数

代码:

pacf_diff = plot_pacf(diff,lags=20) plt.title('一阶差分的PACF') plt.show()

截图:

在这里插入图片描述

7、绘制ARIMA模型

代码:

model = ARIMA(train_data, order =(1,1,1),freq = 'W-MON') arima_result = model.fit() arima_result.summary()

截图:

在这里插入图片描述

8、使用2018年1月至2月的五粮液股票数据,对刚刚拟合后的ARIMA模型进行测试

代码:

pred_vals = arima_result.predict('2018-01-01','2018-02-26',dynamic=True,typ='levels') stock_forcast=pd.concat([shares_info_week,pred_vals],axis=1,keys=['original','predicted']) plt.figure() plt.plot(stock_forcast) plt.title('真实值 vs 预测值') plt.show()

截图:

在这里插入图片描述

实验小结

       通过本次实验,我能够熟练运用时间序列分析和ARIMA模型对数据进行分析。在实验过程中遇到了很多硬件或者是软件上的问题,请教老师,询问同学,上网查资料,都是解决这些问题的途径。最终将遇到的问题一一解决最终完成实验。 注意事项: 1、有疑问前,知识学习前,先用搜索。 2、熟读写基础知识,学得会不如学得牢。 3、选择交流平台,如QQ群,网站论坛等。 4、尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3