数据挖掘实战-基于SARIMA时间序列模型预测阿里巴巴股票数据趋势

 

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

1.项目背景

2.数据集介绍

3.技术工具

4.实验过程

5.总结

源代码


1.项目背景

        近年来,随着全球金融市场的不断变化和科技进步的加速,投资者对于股票价格趋势的预测需求变得愈发迫切。在这个背景下,阿里巴巴这样的科技巨头公司的股票价格更是备受关注。阿里巴巴作为中国领先的电子商务企业,其在全球市场上的地位和影响力不断扩大,其股票价格的波动不仅关系到公司的发展前景,也涉及到投资者的资产配置和市场情绪。

        然而,股票市场的波动性和复杂性使得准确预测股票价格变得非常具有挑战性。在这种情况下,时间序列分析成为了一种重要的预测方法之一。时间序列分析通过对历史数据的观察和分析,试图找出数据中的模式和规律,以便预测未来的走势。而SARIMA模型作为时间序列分析中的经典方法之一,具有较强的建模能力和预测准确性,被广泛应用于股票价格的预测研究中。

        在这一背景下,本研究旨在利用SARIMA时间序列模型,对阿里巴巴股票价格进行趋势预测。通过对阿里巴巴股票价格历史数据的分析和建模,我们可以揭示其潜在的波动模式和趋势,为投资者提供科学的投资建议和决策支持。

2.数据集介绍

         本实验数据集来源于Kaggle,数据集包含阿里巴巴集团控股公司(BABA)从[2020年1月1日]到[2024年5月1日]的历史股价数据。数据集包括每日开盘价、最高价、最低价和收盘价,以及调整后的收盘价和成交量。

3.技术工具

Python版本:3.9

代码编辑器:jupyter notebook

4.实验过程

导入第三方库并加载数据集

检查数据是否平稳 

观测数据不是平稳的,现在选择SARIMA模型进行时间序列分析。

正如我们所看到的,股票的趋势是下降趋势。股票具有季节性。库存中存在负剩余。

求P值的差分模型 

差分法可以确定P = 1。

利用自相关得到d值

用部分自相关法求q值

可以确定,D的值为3,P的值为1,Q的值是2

训练模型并打印模型总结

使用模型预测未来10天的价格趋势,并将结果可视化

 红线表示基于SARIMA模型完成的预测。

5.总结

        本实验利用SARIMA时间序列模型对阿里巴巴股票价格进行趋势预测,并得出以下结论:

        通过对阿里巴巴股票历史数据的分析和建模,我们成功地建立了SARIMA模型,能够较好地拟合股票价格的波动情况。该模型考虑了数据的季节性、自相关和移动平均性质,具有一定的预测能力和准确性。

        基于建立的SARIMA模型,我们对未来一段时间内的阿里巴巴股票价格进行了预测。预测结果显示,阿里巴巴股票价格可能呈现出一定的趋势和波动,为投资者提供了参考和决策支持。

        然而,需要注意的是,股票市场的波动具有一定的不确定性,预测结果仅供参考。投资者在进行投资决策时,应综合考虑多种因素,并根据实际情况进行调整和决策。

源代码

import pandas as pd 
import seaborn as sns 
import matplotlib.pyplot as plt 
import numpy as np 
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline df  = pd.read_csv('BABA.csv') 
df
# 1. 检查数据是否平稳。
from statsmodels.tsa.stattools import adfuller
def check_stationary(df):result = adfuller(df)print('ADF Statistic: %f' % result[0])print('p-vslue: %f'% result[1])if result[1] <=0.5:print('reject the null hypothesis. Data is stationary')else:print('Fail to reject the null hypothesis. Data is not stationary')
check_stationary(df['Adj Close'])
观测数据不是平稳的。现在选择SARIMA模型进行时间序列分析。
# 价格变动概览
from statsmodels.tsa.seasonal import seasonal_decompose
decompose = seasonal_decompose(df['Adj Close'], model='additive', period=30)
decompose.plot()
正如我们所看到的,股票的趋势是下降趋势。
股票具有季节性。库存中存在负剩余。
# 求P值的差分模型
from statsmodels.graphics.tsaplots  import plot_acf,plot_pacf
import matplotlib.pyplot as plt
fig, axes = plt.subplots(3, 2, sharex=True)
axes[0, 0].plot(df['Adj Close']); axes[0, 0].set_title('Original Series')
plot_acf(df['Adj Close'], ax=axes[0, 1])
# 一阶差分
axes[1, 0].plot(df['Adj Close'].diff()); axes[1, 0].set_title('1st Order Differencing')
plot_acf(df['Adj Close'].diff().dropna(), ax=axes[1, 1])
# 二阶差分
axes[2, 0].plot(df['Adj Close'].diff().diff()); axes[2, 0].set_title('2nd Order Differencing')
plot_acf(df['Adj Close'].diff().diff().dropna(), ax=axes[2, 1])
plt.show
差分法显示P = 1的值
# 利用自相关得到d值
pd.plotting.autocorrelation_plot(df['Adj Close'])
plot_acf(df['Adj Close'], alpha=0.05)
from statsmodels.tsa.stattools import acf
x_acf = pd.DataFrame(acf(df['Adj Close']))
# 用部分自相关法求q值
plot_pacf(df['Adj Close'], lags=20,alpha=0.05)
D的值为3
P的值为1
Q的值是2
import statsmodels.api as sm 
p , d, q = 1,3,2
model = sm.tsa.statespace.SARIMAX(df['Adj Close'], order=(p,d,q),seasonal_order=(p,d,q,3))
model = model.fit()
print(model.summary())
predictions = model.predict(start=len(df['Adj Close']),end=len(df['Adj Close'])+10)
# 预测结果可视化 
plt.figure(figsize=(15,10))
plt.plot(df['Adj Close'], label='Actual')
plt.plot(predictions, color='red', label='Predicted')
plt.xlabel('Adj Close')
plt.title('Ali Baba Stock  Forecaste')
plt.legend(loc='upper left')
plt.show()

资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1542526.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

android kotlin Extension扩展函数

1、新建一个kt文件&#xff1a; 2、代码&#xff1a; class User(var name:String)/**扩展函数**/ fun User.Print(){print("用户名 $name") }// 扩展函数 swap,调换不同位置的值 fun MutableList<Int>.swap(index1: Int, index2: Int) {val tmp this[index1…

新手必看:一步步教你绑定常见邮箱到第三方应用(如何绑定QQ、163、Hotmail、Gmail等邮箱)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 邮箱绑定 📒📫 QQ邮箱📫 163邮箱📫 Hotmail邮箱📫 Gmail邮箱📫 Yahoo邮箱📫 iCloud邮箱📫 其他邮箱⚓️ 相关链接 ⚓️📖 介绍 📖 你是否曾经为绑定第三方邮箱而感到困惑?你不是一个人!许多人在尝试将QQ邮…

Linux进程概念1

前言 从这篇博客开始&#xff0c;后面我们主要讲xshell中Linux内容&#xff0c;C后续会继续补充一点 Linux基础内容我就不讲了&#xff0c;直接从进程开始讲 1. 进程是什么 像这种程序正在运行&#xff0c;还没有结束的过程就是一个进程&#xff0c;进程在电脑底部就是.exe文…

vscode 顶部 Command Center,minimap

目录 vscode 顶部 Command Center 设置显示步骤: minimap设置 方法一:使用设置界面 方法二:使用命令面板 方法三:编辑 settings.json 文件 左侧目录树和编辑器字体不一致: vscode 顶部 Command Center Visual Studio Code (VSCode) 中的 Command Center 是一个集中…

11年408考研真题解析-计算机网络

第一题&#xff1a; 解析&#xff1a;网络层虚电路服务和数据报服务 传输服务只有&#xff1a;有连接可靠和无连接不可靠两种&#xff0c;直接排除BC。 网络层指的是IP协议&#xff0c;由图二可知&#xff1a;运输层&#xff0c;网际层&#xff0c;网络接口层唯一有连接可靠的协…

vue3 本地windows下的字体的引用

1、先上了张效果&#xff1a; 2、windows 字体的路径&#xff1a;c:/windows/fonts/ 我们用华文行楷来测试下&#xff0c;先将华文行楷拷贝到/src/assets/fonts目录下。 3、然后我们来定义css&#xff1a; font-face {font-family: fyxk;font-style: normal;src: local(Opensan…

图结构感知的Transformer:一种新的图表示学习方法

人工智能咨询培训老师叶梓 转载标明出处 尽管图神经网络&#xff08;GNNs&#xff09;在处理图数据方面取得了显著成就&#xff0c;但它们在表达能力和捕获长距离依赖方面存在局限性。为了突破这些局限&#xff0c;研究者们开始探索将Transformer架构应用于图表示学习。在此基…

人工智能的前景与未来就业市场:机遇、挑战与社会影响

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们生活的方方面面&#xff0c;它不仅引领着技术革新的浪潮&#xff0c;更在无声中重塑着我们的就业市场和社会结构。站在这个时代的交汇点上&#xff0c;我们不禁要问&#xff1a;人工智能将…

Web Components之继承

我们在使用Web Components自定义组件的时候&#xff0c;我们需要继承HTMLElement这个浏览器内置对象&#xff0c;但是如果我要一些高级封装&#xff0c;给组件内置一些方法的话。我们就需要使用继承的方式&#xff0c;在父类中实现基本功能的封装。 1 父类的封装 以下是我的继…

Java多线程(1)—线程基础

一、关于线程 1.1 简介 计算机线程&#xff08;Thread&#xff09;是操作系统能够进行运算调度的最小单位。线程的优势在于提高了程序的效率和响应能力&#xff0c;尤其在处理 I/O 操作或多任务时。多线程编程能够充分利用多核处理器的计算能力&#xff0c;达到更高的性能。 …

Spring 源码分析

Spring 源码版本 4.2.8.RELEASE Bean 生命周期 动态代理 代理模式 优点: 在不修改目标对象的功能前提下&#xff0c;能通过代理对象对目标功能扩展缺点: 代理对象需要与目标对象实现一样的接口&#xff0c;所以会有很多代理类&#xff0c;一旦接口增加方法&#xff0c;目标对…

Apifox 「定时任务」操作指南,解锁自动化测试的新利器

定时任务是按照预设时间自动执行的任务&#xff0c;它可以有效解决一些常见问题&#xff0c;比如频繁执行的回归测试和大规模的接口测试&#xff0c;这些任务需要在固定时间点或间隔周期内自动运行&#xff0c;以确保软件的持续集成和持续交付过程中的稳定性和可靠性。通过使用…

Windows下 批量重命名文件【bat实现】-两个小问题

Windows下 批量重命名文件【bat实现】_bat批量重命名文件ren-CSDN博客 上面是原来的教程&#xff0c;我遇到了两个小问题&#xff0c;问题及解决如下&#xff1a; ①dir/b>rename.csv : 无法将“dir/b>rename.csv”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。…

【每天学个新注解】Day 2 Lombok注解简解(一)—@Data、@Build、@Value

Data 相当于同时使用了 Getter 、Setter 、RequiredArgsConstructor、ToString、EqualsAndHashCode 1、如何使用 需要同时使用Getter 、Setter 、RequiredArgsConstructor、ToString、EqualsAndHashCode注解一个Bean的时候。 2、代码示例 例&#xff1a; Data public cla…

CCC SPAKE2+流程解析

1、SPAKE2流程及SCP03通道介绍 SPAKE2流程发生在CCC车主配对过程中的Phase2。 SPAKE2流程为车辆和手机之间的数据交换建立了一个安全通道SCP03。 那这个SCP03通道是干啥的&#xff1f; 我们可以先简单的理解为&#xff1a;建立安全通道前&#xff0c;车辆和手机之间交互的AP…

剖解反转链表

剖解反转链表 思路&#xff1a; 1.若链表为空或者只存在一个节点&#xff0c;就无需反转&#xff0c;直接返回head 2.若存在多个节点 首先将head.next给到cur&#xff0c;并将head.next置为null 剩余的节点就利用头插法&#xff0c;反转链表 class Solution {public ListNo…

基于SpringBoot+Vue+MySQL的特色旅游网站系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着旅游业的蓬勃发展&#xff0c;人们对旅游体验的需求日益多样化与个性化。传统的旅游信息查询与预订方式已难以满足现代游客的需求。因此&#xff0c;我们开发了这款基于SpringBootVueMySQL的特色旅游网站系统。该系统旨在通…

MySQL高阶1917-Leetcodify好友推荐

目录 题目 准备数据 分析数据 总结 题目 为 Leetcodify 用户推荐好友。我们将符合下列条件的用户 x 推荐给用户 y &#xff1a; 用户 x 和 y 不是好友&#xff0c;且用户 x 和 y 在同一天收听了相同的三首或更多不同歌曲。 注意&#xff0c;好友推荐是单向的&#xff0c…

web前端字段大小写下划线转换工具

文章目录 前言一、如何使用&#xff1f;二、相关代码总结 前言 程序员在敲代码的过程中都要命名一些字段&#xff0c;但是Java语言对字段的命名规范和sql命名规范不一样&#xff0c;如下图所示&#xff0c;这种机械性的转换工作很劳神费力&#xff0c;为了省点劲写了一个web小…

pdf怎么编辑修改内容?试试这四款工具!

作为一个经常探索各种办公软件的人&#xff0c;今天我打算和大家聊聊一个我们工作中经常会遇到的问题——编辑PDF文件。我们都知道&#xff0c;PDF文件以其格式稳定、不易被篡改而受到青睐&#xff0c;但这也意味着一旦需要修改内容&#xff0c;就变得相当棘手。不过&#xff0…