时间序列分析-无模型

news2025/1/14 18:11:37

本节内容介绍了无模型的时间序列分析方法,包括时间序列作趋势图、逐年分解、时间序列分解、直方图、ACF与PACF图,主要是作图。

首先导入数据和对应的库:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.tsa.stattools import adfuller
df = pd.read_csv("SARIMA数据.csv")

在对时间序列进行分析前,务必将数据df的时间列转化为时间序列数据,并设置为索引:

import datetime as dt
tt = []
for i in df["时间"]:
    a = dt.datetime.strptime(i,'%Y/%m/%d')
    b = dt.datetime.strftime(a,'%Y-%m-%d')
    tt.append(b)
df['date'] = tt
df['date'] = pd.to_datetime(df['date'])  # 将指定列转换为日期时间格式
df.set_index('date', inplace=True)

一、时间序列趋势图

plt.figure(figsize=(10, 4))
plt.plot(df.index, df['患病人数'])
plt.title('Time Series Data')
plt.xticks(range(1,len(data),25),rotation=45)
plt.xlabel('Date')
plt.ylabel('Value')
plt.show()

二、逐年分解图

plt.figure(figsize=(16,8))
plt.grid(which='both')
years = int(np.round(len(data)/12))
for i in range(years):
    index = data.index[i*12:(i+1)*12]
    plt.plot(data.index[:12].month_name(),data.loc[index].values);
    plt.text(y=data.loc[index].values[11], x=11, s=data.index.year.unique()[i]);
plt.legend(data.index.year.unique(), loc=0);
plt.title('Monthly Home Sales per Year');

如图所示,就将不同年份的数据投射在相同的月份坐标轴上,可以看出不同年份之间的变化趋势有着相似的变化趋势,可以提出时间序列数据存在月份效应的假设,然后进一步进入模型研究,直到最终确定(日历和月历效应的研究可以参考博主的其他文章)

三、时间序列分解为长期趋势、季节性/周期性部分、残差

result1 = seasonal_decompose(data, model='additive')
# 绘制分解后的系列
plt.figure(figsize=(12, 10))
# 原始数据
plt.subplot(4, 1, 1)
plt.plot(result.index, result['bitcoin_price'], label='open', color='b')
plt.title('Data')
plt.xlabel('Date')
plt.ylabel('Data Value')
plt.grid(False)
plt.legend()
# 趋势分量
plt.subplot(4, 1, 2)
plt.plot(result.index, result1.trend, label='Trend', color='b')
plt.title('Trend Component')
plt.xlabel('Date')
plt.ylabel('Trend Value')
plt.grid(False)
plt.legend()
# 季节效应
plt.subplot(4, 1, 3)
plt.plot(result.index, result1.seasonal, label='Seasonal', color='b')
plt.title('Seasonal Component')
plt.xlabel('Date')
plt.ylabel('Seasonal Value')
plt.grid(False)
plt.legend()
# 残差
plt.subplot(4, 1, 4)
plt.plot(result.index, result1.resid, label='Residual', color='b')
plt.title('Residual Component')
plt.xlabel('Date')
plt.ylabel('Residual Value')
plt.grid(False)
plt.legend()
plt.tight_layout()
plt.show()

四、直方图和ACF、PACF图

def plot_data_properties(data, ts_plot_name="Time Series plot"):
    '''
    Summary:
    -------
    Plots various plots, including time series, autocorrelation,
    partial autocorrelation and distribution plots of data.
    
    Parameters:
    ----------
    ts_plot_name(String): The name of the time series plot
    data(pd.Dataframe, pd.Series, array): Time Series Data
    
    Returns:
    --------
    None
    
    '''
    plt.figure(figsize=(16,4))
    plt.plot(data)
    plt.title(ts_plot_name)
    plt.xticks(range(1,len(data),25),rotation=45) 
    plt.ylabel('Sales')
    plt.xlabel('Year')
    fig, axes = plt.subplots(1,3,squeeze=False)
    fig.set_size_inches(16,4)
    plot_acf(data, ax=axes[0,0], lags=48);
    plot_pacf(data, ax=axes[0,1], lags=48);
    sns.distplot(data, ax=axes[0,2])
    axes[0,2].set_title("Probability Distribution")

plot_data_properties(data);

关注gzh‘finance褪黑素’,还有很多金融、大数据相关的文章、代码、数据推送~

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

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

相关文章

1.2 Java全栈开发前端+后端(全栈工程师进阶之路)-前置课程JavaScript,看这一篇就够了

上一章我们讲了HTML的知识,那么我们现在要来学习,JavaScript 那么首先我们要知道JavaScript写在哪里。 JavaScript核心语法 js书写的位置 1、写在页面中的script标签下 只有在代码与页面有强关联的情况下才会写在页面里 2、写在指定的js文件下通过…

Oracle程序常驻程序内存优化【数据库实例优化系列二】

Oracle系统参数调整【数据库实例优化系列一】-CSDN博客 Oracle数据库中有一个软件包 dbms_shared_pool,它可以keep和unkeep,将用户经常使用的程序,比如存储过程、函数、序列、触发器、游标以及java source等数据库对象,长期保存在这一块区域。这些程序可以常驻这个区域(s…

【全开源】餐饮点餐系统小程序源码独立部署/上线/维护/更新_博纳软云

餐饮点餐系统小程序源码 基于ThinkPHPFastAdminUniApp开发的餐饮点餐系统,主要应用于餐饮,例如早餐、面馆、快餐、零食小吃等快捷扫码点餐需求,标准版本仅支持先付款后就餐模式,高级版本支持先付后就餐和先就餐后付费两种模式 餐…

【linuxC语言】fcntl和ioctl函数

文章目录 前言一、功能介绍二、具体使用2.1 fcntl函数2.2 ioctl函数 三、拓展:填写arg总结 前言 在Linux系统编程中,经常会涉及到对文件描述符、套接字以及设备的控制操作。fcntl和ioctl函数就是用来进行这些控制操作的两个重要的系统调用。它们提供了对…

系统评估和优化——Datawhale笔记

评估优化生成部分 在前面的章节中,我们讲到了如何评估一个基于 RAG 框架的大模型应用的整体性能。通过针对性构造验证集,可以采用多种方法从多个维度对系统性能进行评估。但是,评估的目的是为了更好地优化应用效果,要优化应用性能…

Creo Assembly “Save As“时,为什么关联的Drawing无法Save As

问题描述: Creo Assembly 进行“另存为”,勾选了“Copy Drawings”。但操作结果是,该Assembly相关联的Drawing没有被“另存为”。 原因分析: 查看Workspace,发现该Assembly a.asm相关联的Drawing为b.drw&#xff0…

与Apollo共创生态:Apollo 7周年大会带给我的启发和心得

Apollo 7周年大会 前不久的Apollo 7周年大会,吸引到我这个对自动驾驶有着浓厚兴趣的开发者,真的精彩,受益匪浅。Apollo 7周年大会展示了Apollo在自动驾驶领域的创新成果,探讨自动驾驶技术的未来发展趋势,并推动自动驾…

【好书推荐8】《智能供应链:预测算法理论与实战》

【好书推荐8】《智能供应链:预测算法理论与实战》 写在最前面编辑推荐内容简介作者简介目录精彩书摘前言/序言我为什么要写这本书这本书能带给你什么 致谢 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴…

想开发一款带有视频通话/共享屏幕功能的产品?那WebRTC是你必须要知道的!

作为一名技术爱好者,我总是对各种协议、各种功能感兴趣,两周前我想为我的开源项目ChatCraft集成视频通话功能,我就开始了对应技术的研究,然后我盯上了WebRTC。在这个研究过程中,我恶补了大量有关WebRTC的知识&#xff…

8.机器学习-十大算法之一朴素贝叶斯(Naive Bayes)算法原理讲解

8.机器学习-十大算法之一朴素贝叶斯(Naive Bayes)算法原理讲解 一摘要二个人简介三朴素贝叶斯算法简介朴素贝叶斯算法概念贝叶斯方法朴素贝叶斯算法贝叶斯公式 四贝叶斯算法的核心思想:利用贝叶斯定理进行分类五优缺点优点缺点 六朴素贝叶斯原…

从浏览器输入url到页面加载(八)你的web网站有几台服务器?

你有没有想过一个问题,做为一名前端开发,你的网站上线后,准备了几台服务器?前端静态资源用了几台,你调接口的那个后端部署了几台? 目录 1 没接触过这个问题很正常 2 当访问量上升的时候 2.1 提升带宽 …

计算机科学与技术就业方向和前景怎么样

计算机科学与技术专业的就业方向极为广泛,方向可以是软件开发与工程、网络与信息安全、数据科学与大数据分析等,几乎渗透到现代社会的每一个角落。以下是上大学网 (www.sdaxue.com)对计算机科学与技术专业一些主要的就业方向及其前景分析&…

GitLab(史上最全GitLab安装使用文章!!!)

GitLab 是一个基于网络的Git仓库管理工具,是开源的。基本每个公司都会有属于自己公司内部的GitLab 官方网站:https://about.gitlab.com/ GitLab文档:https://docs.gitlab.cn/jh/install/requirements.html 安装 所需配置 这里采用Cento…

PHP源码_最新Ai对话系统网站源码 ChatGPT+搭建教程+前后端

基于ChatGPT开发的一个人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论…

Cloudflare防火墙其他WAF设置

其他WAF设置 缓存设置 缓存设置好也可以帮助我们抵挡巨量的CC攻击。有些CC是很多IP随即攻击一个地址,如果我们的安全策略没有拦截到攻击。但是我们设置了缓存,那这些请求则会在CloudFlare边缘节点直接将缓存内容返回给请求。也达到了抗攻击的效果。 缓…

13.4.1 实验1:配置VTP

1、使用目的 通过本实验可以掌握 VTP三种模式的区别。VTP工作原理。VTP的配置和调试方法 2、实验拓扑 配置VTP的实验拓扑如下图所示 3、实验拓扑 3.1、实验准备 通过命令 delete nash:van.dat和erasestartup-config把3台交换机的配置清除干净,重启交换机&#…

基于深度学习的3D目标检测与跟踪

目标检测和跟踪对于自动驾驶来说是至关重要和基础的任务,旨在从场景中识别和定位出那些预定义类别的对象。在所有形式的自动驾驶数据中,3D点云学习引起了越来越多的关注。目前,有许多用于3D目标检测的深度学习方法。然而,鉴于点云…

MySQL数据库——事务操作-begin-commit-rollback

schooldb库——utf8字符集——utf8_general_ci排序规则 先创建库,再去使用下列的DDL语句。 DDL CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT COMMENT 学号,createDate datetime DEFAULT NULL COMMENT 创建时间,modifyDate datetime DEFAULT NULL …

stm32单片机开发一、中断之外部中断实验

stm32单片机的外部中断和定时器中断、ADC中断等都由stm32的内核中的NVIC模块控制,stm32的中断有很多中,比如供电不足中断,当供电不足时,会产生的一种中断,这么多中断如果都接在CPU上,或者说CPU去处理&#…

【LAMMPS学习】八、基础知识(5.2)粒度模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…