Python代码示例 | 时间序列数据的组成

时间序列数据是以固定的时间间隔记录或收集的数据点序列。它是一种跟踪变量随时间演变的数据,如销售,股票价格,温度等。定期的时间间隔可以是每天,每周,每月,每季度或每年,数据通常表示为线图或时间序列图。时间序列数据通常用于经济、金融、天气预报和运营管理等领域,以分析趋势和模式,并进行预测或预报。

时间序列数据的组成

时间序列数据的组成部分是构成数据的基本模式或结构。在时间序列数据中有几个共同的组成部分。在时间序列数据中,可能出现几种类型的模式:

  • 趋势:数据中的长期向上或向下运动,表明随着时间的推移而普遍增加或减少。
  • 季节性:数据中定期出现的重复模式,例如每天、每周、每月或每年。
  • 周期性:数据中的一种模式,在特定数量的观测之后重复出现,这不一定与季节性有关。
  • 不规则性:数据中的随机波动,无法用趋势、季节性或周期来解释。
  • 自相关性:同一时间序列中的一个观测值与前一个观测值之间的相关性。
  • 离群值:与数据中的其他观测值显著不同的极端观测值。
  • 噪声:数据中不可预测和随机的变化。

通过识别时间序列数据中的这些模式,分析师可以更好地理解潜在的结构,并做出更准确的预测。

趋势

时间序列数据中的趋势是指数据中的长期向上或向下移动,表明随着时间的推移一般会增加或减少。趋势表示数据的基本结构,捕捉较长时期内变化的方向和幅度。在时间序列分析中,通常会建模并从数据中删除趋势,以更好地理解潜在模式并做出更准确的预测。时间序列数据中有几种类型的趋势:

  • 上升趋势:一种趋势,显示随着时间的推移,数据的价值往往会随着时间的推移而上升。
  • 下降趋势:显示随时间推移总体下降的趋势,其中数据的值倾向于随时间推移而下降。
  • 水平趋势:显示随时间无显著变化的趋势,其中数据值随时间保持不变。
  • 非线性趋势:一种趋势,显示出随时间变化的更复杂模式,包括随时间变化方向或幅度的上升或下降趋势。
  • 衰减趋势:一种趋势,显示变化幅度随时间逐渐下降,变化率随时间减慢。

重要的是要注意,时间序列数据可以具有这些类型的趋势的组合或同时存在的多个趋势。准确识别和建模趋势是时间序列分析的关键步骤,因为它可以显著影响预测的准确性和数据模式的解释。

下面是一个Python代码示例,它使用示例数据演示了时间序列数据中不同类型的趋势。

import numpy as np 
import matplotlib.pyplot as plt # Upward Trend 
t = np.arange(0, 10, 0.1) 
data = t + np.random.normal(0, 0.5, len(t)) 
plt.plot(t, data, label='Upward Trend') # Downward Trend 
t = np.arange(0, 10, 0.1) 
data = -t + np.random.normal(0, 0.5, len(t)) 
plt.plot(t, data, label='Downward Trend') # Horizontal Trend 
t = np.arange(0, 10, 0.1) 
data = np.zeros(len(t)) + np.random.normal(0, 0.5, len(t)) 
plt.plot(t, data, label='Horizontal Trend') # Non-linear Trend 
t = np.arange(0, 10, 0.1) 
data = t**2 + np.random.normal(0, 0.5, len(t)) 
plt.plot(t, data, label='Non-linear Trend') # Damped Trend 
t = np.arange(0, 10, 0.1) 
data = np.exp(-0.1*t) * np.sin(2*np.pi*t)\ + np.random.normal(0, 0.5, len(t)) 
plt.plot(t, data, label='Damped Trend') plt.legend() 
plt.show() 

在这里插入图片描述
上面的代码生成时间序列数据中五种不同类型趋势的图:向上、向下、水平、非线性和衰减。使用数学函数和随机噪声的组合来生成样本数据。

季节性

时间序列数据中的季节性是指在一个固定的时间段内重复的模式,例如一天,一周,一个月或一年。这些模式是由于常规事件(如假期、周末或季节变化)而出现的,并且可以存在于各种类型的时间序列数据中,如销售、天气或股票价格。
时间序列数据中有几种类型的季节性,包括:

  • 每周季节性:一种在7天内重复的季节性,常见于时间序列数据,如销售、能源使用或运输模式。
  • 每月季节性:一种在30或31天内重复的季节性,常见于时间序列数据,如销售或天气模式。
  • 每年季节性:一种在365天或366天内重复的季节性,常见于销售、农业或旅游模式等时间序列数据中。
  • 假期季节性:由特殊事件(如节假日、节日或体育赛事)引起的一种季节性,常见于销售、交通或娱乐模式等时间序列数据中。

重要的是要注意,时间序列数据可以同时存在多种类型的季节性,准确识别和建模季节性是时间序列分析的关键步骤。

下面是一个Python代码示例,它使用样本数据演示了时间序列数据中不同类型的季节性:

import numpy as np 
import matplotlib.pyplot as plt # generate sample data with different types of seasonality 
np.random.seed(1) 
time = np.arange(0, 366) # weekly seasonality 
weekly_seasonality = np.sin(2 * np.pi * time / 7) 
weekly_data = 5 + weekly_seasonality # monthly seasonality 
monthly_seasonality = np.cos(2 * np.pi * time / 30) 
monthly_data = 5 + monthly_seasonality # annual seasonality 
annual_seasonality = np.sin(2 * np.pi * time / 365) 
annual_data = 5 + annual_seasonality # plot the data 
plt.figure(figsize=(12, 8)) 
plt.plot(time, weekly_data, label='Weekly Seasonality') 
plt.plot(time, monthly_data, label='Monthly Seasonality') 
plt.plot(time, annual_data, label='Annual Seasonality') 
plt.legend(loc='upper left') 
plt.show() 

在这里插入图片描述
上面的代码生成了一个图,显示了生成的样本数据的三个图表,具有不同类型的季节性。这些数据代表了周、月和年季节性对单个时间序列的不同影响。x轴表示时间,y轴表示添加相应季节性分量后的时间序列值。绘图使用matplotlib库来显示图形,使用NumPy库来生成数据和进行数学运算。图例函数向图中添加图例以帮助区分不同的图形。show函数在屏幕上显示绘图。

周期性

时间序列数据中的周期性是指在特定时间间隔内数据中出现的重复模式或周期性波动。这可能是由于各种因素,如季节性(每日,每周,每月,每年),趋势和其他潜在模式。

季节性和周期性的区别

季节性是指数据中在固定时间间隔(如每天、每周、每月或每年)内发生的重复模式。季节性是一种可预测和重复的模式,可能是由于各种因素,如天气,假期和人类行为。

另一方面,周期性是指在未指定的时间间隔内数据中出现的重复模式或波动。这些模式可能是由于各种因素,如经济周期,趋势和其他基本模式。周期性不限于固定的时间间隔,可以具有不同的频率,这使得识别和建模变得更加困难。

总而言之,季节性是指在固定时间间隔内发生的数据中的重复模式,而周期性是指在未指定的时间间隔内发生的重复模式。

import numpy as np 
import matplotlib.pyplot as plt # Generate sample data with cyclic patterns 
np.random.seed(1) 
time = np.array([0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330]) 
data = 10 * np.sin(2 * np.pi * time / 50)\ + 20 * np.sin(2 * np.pi * time / 100) # Plot the data 
plt.figure(figsize=(12, 8)) 
plt.plot(time, data, label='Cyclic Data') 
plt.legend(loc='upper left') 
plt.xlabel('Time (days)') 
plt.ylabel('Value') 
plt.title('Cyclic Time Series Data') 
plt.show() 

在这里插入图片描述
上述代码生成具有两个循环模式的组合的时间序列数据。sin函数用于生成循环模式,每个模式具有不同的频率。时间变量定义为具有不均匀时间间隔的12个时间点的数组,以表示数据的不规则采样。使用Matplotlib库绘制数据,该库显示了数据随时间的循环模式,时间间隔不均匀。

不规则性

时间序列数据中的不规则性是指数据中不遵循数据一般模式的意外或异常波动。这些波动可能由于各种原因而发生,例如测量误差、意外事件或其他噪声源。不确定性可能对时间序列模型和预测的准确性产生重大影响,因为它们可能掩盖数据中的潜在趋势和季节性模式。

import numpy as np 
import matplotlib.pyplot as plt # Generate sample time series data 
np.random.seed(1) 
time = np.arange(0, 100) 
data = 5 * np.sin(2 * np.pi * time / 20) + 2 * time # Introduce irregularities by adding random noise 
irregularities = np.random.normal(0, 5, len(data)) 
irregular_data = data + irregularities # Plot the original data and the data with irregularities 
plt.figure(figsize=(12, 8)) 
plt.plot(time, data, label='Original Data') 
plt.plot(time, irregular_data, label='Data with Irregularities') 
plt.legend(loc='upper left') 
plt.show() 

在这里插入图片描述
上面的代码生成一个具有正弦模式和线性趋势的时间序列,然后引入随机噪声以在数据中创建不规则性。由此产生的图显示,不规则性会显著影响时间序列数据的外观,使识别潜在模式变得更加困难。

自相关性

时间序列数据中的自相关性是指时间序列中观测值之间的相似程度,作为它们之间的时滞的函数。自相关性是时间序列与其滞后版本之间相关性的度量。换句话说,它衡量时间序列中的值在不同的时间滞后中彼此之间的密切关系。

自相关是理解时间序列属性的有用工具,因为它可以提供有关数据中的底层模式和依赖关系的信息。例如,如果一个时间序列在某个时间滞后处是正自相关的,这表明时间序列中的一个正值很可能在一定时间之后被另一个正值跟随。另一方面,如果一个时间序列在某个时间滞后处是负自相关的,这表明时间序列中的正值很可能在一定时间之后被负值跟随。

自相关可以使用各种统计技术来计算,例如皮尔逊相关系数或自相关函数(ACF)。自相关函数提供了不同时滞的自相关的图形表示,并可用于识别时间序列中的主要模式和依赖关系。

import numpy as np 
import matplotlib.pyplot as plt # generate random time series data with autocorrelation 
np.random.seed(1) 
data = np.random.randn(100) 
data = np.convolve(data, np.ones(10) / 10, mode='same') # visualize the time series data 
plt.plot(data) 
plt.show() 

在这里插入图片描述
此代码使用NumPy生成随机时间序列数据,然后对数据应用移动平均滤波器以创建自相关。

离群值

时间序列数据中的离群值是与序列中的其余数据点显著不同的数据点。这可能是由于各种原因,如测量误差,极端事件或基础数据生成过程的变化。离群值可能对时间序列分析和建模的结果产生重大影响,因为它们可能会扭曲数据的统计特性。

噪声

时间序列数据中的噪声是指并非由潜在模式或趋势引起的随机波动或变化。它通常被认为是数据中的任何不可预测和随机变化。这些波动可能来自各种来源,例如测量误差、基础过程中的随机波动或数据记录或处理中的误差。噪声的存在可能会使识别数据中的潜在趋势或模式变得困难,因此在进行任何进一步分析之前消除或减少噪声非常重要。

总结

总之,时间序列数据可以分解为几个组成部分,包括趋势,季节性,周期性,不规则性,自相关性,离群值和噪声。了解这些组成对于有效地分析和建模时间序列数据至关重要。通过识别和隔离这些组成部分,我们可以更好地了解时间序列数据中的潜在模式和关系,这可以为决策提供信息并提高预测准确性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sublime Text 3配置 C# 开发环境

Sublime Text 3配置 C# 开发环境 一、引言二、主要内容1. 初识 Sublime Text 32. 初识 C#3. 接入 .NET Framework3.1 下载 .NET Framework3.2 环境变量配置 4. 配置 C# 开发环境5. 编写 C# 代码6. 运行 C# 代码 三、总结 一、引言 C# 是一种面向对象的编程语言,由微…

【华为数据之道学习笔记】6-5数据地图的核心价值

数据供应者与消费者之间往往存在一种矛盾:供应者做了大量的数据治理工作、提供了大量的数据,但数据消费者却仍然不满意,他们始终认为在使用数据之前存在两个重大困难。 1)找数难 企业的数据分散存储在上千个数据库、上百万张物理表…

配置https环境

为什么要配置https环境 在使用 HTML5 的 API 时,很多 API 只能在 https 保证安全的情况下才能开启。这就要求我们在本地开发环境也能够配置 https,否则你需要每次部署到配有 https 的测试环境中才能看到预览效果,这对开发的敏捷度造成了极大…

项目进度管理:常用项目管理工具推荐

工欲善其事必先利其器,借助项目管理工具可以帮助项目经理更好的管理项目,起到事半功倍的效果。 使用项目管理工具来管理项目,有助于事情的快速落地,提升做事效率,也能让事情做的更周到全面 选择项目管理工具时可以参…

通过几个基本概念说一下为什么openGauss是当下之选?

Database、Schema、User都是数据库的基本概念,SQL标准中也有明确规范。但不同数据库的具体实现也不尽相同,有些甚至大相径庭。这就导致用户在做国产化选型和数据库迁移时可能会遇到种种困难。本文从这几个基本概念展开,说说为什么openGauss系…

数据结构之进阶二叉树(二叉搜索树和AVL树、红黑树的实现)超详细解析,附实操图和搜索二叉树的实现过程图

绪论​ “生命有如铁砧,愈被敲打,愈能发出火花。——伽利略”;本章主要是数据结构 二叉树的进阶知识,若之前没学过二叉树建议看看这篇文章一篇掌握二叉树,本章的知识从浅到深的对搜索二叉树的使用进行了介绍和对其底层…

linux 内核的 lru_list 的结构

在linux的slab分配的入口slab_alloc有一个传入参数lru,它的作用是使每个slab对象在unused,但可能后面继续使用的时候,不需要free,可以先放在lru_list上。lru_list的结构为: struct list_lru {struct list_lru_node *n…

DiffUtil + RecyclerView 在 Kotlin中的使用

很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。 文章目录 1 DiffUtil 用来解决什么问题?2 DiffUtil 是什么?3 DiffUtil的使用4 参考文章 1 DiffUtil 用来解决什么问题? List发生变化, 我们使用 RecyclerView.Adapter.notifyDataChanged很熟练了 …

WiFi+蓝牙物联网定制方案——五大核心难点

WiFi蓝牙物联网定制方案可以根据具体需求进行定制: 1、设备连接方案:采用WiFi和蓝牙技术,将物联网设备与智能手机、平板电脑等设备进行连接,实现数据传输和远程控制。 2、数据传输方案:通过WiFi和蓝牙技术,…

Vue表格中鼠标移入移出input显示隐藏 ,有输入值不再隐藏

Vue表格中鼠标移入移出input显示隐藏 , 不再隐藏的效果 <el-tableref"table":data"tableDatas"borderstyle"width: 100%":span-method"arraySpanMethod"id"table"row-key"id"cell-mouse-enter"editCell&q…

Laravel框架使用phpstudy本地安装的composer用Laravel 安装器进行安装搭建

一、首先需要安装Laravel 安装器 composer global require laravel/installer 二、安装器安装好后&#xff0c;可以使用如下命令创建项目 laravel new sys 三、本地运行 php artisan serve 四、 使用Composer快速安装Laravel5.8框架 安装指定版本的最新版本&#xff08;推荐&a…

C#合并多个Word文档(微软官方免费openxml接口)

g /// <summary>/// 合并多个word文档&#xff08;合并到第一文件&#xff09;/// </summary>/// <param name"as_word_paths">word文档完整路径</param>/// <param name"breakNewPage">true(默认值)&#xff0c;合并下一个…

Linux:ACL 权限控制

ACL 概述 ACL&#xff08;Access Control List&#xff09;&#xff0c;主要作用可以提供除属主、属组、其他人的 rwx 权限之外的 细节权限设定。 ACL 的权限控制 &#xff08;1&#xff09;使用者&#xff08;user&#xff09; &#xff08;2&#xff09;群组&#xff08;grou…

如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1

本系列将分成三个部分&#xff0c;您将学习如何使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana&#xff0c;以及如何在 Grafana 上创建一个简单的控制面板。Prometheus 和 Grafana 是 Kubernetes 最受欢迎的两种开源监控工具。学习如何使用 Helm 集成这两个工具&#x…

类和对象

1 类定义&#xff1a; class ChecksumAccumulator {// class definition goes here } 你就能创建 ChecksumAccumulator 对象&#xff1a;new CheckSumAccumulator 注&#xff1a;1scala类中成员默认是public类型&#xff0c;若设为私有属性则必须加private关键字。在scala中是…

NLP论文阅读记录 - | 使用 BRIO 训练范式进行抽象文本摘要

文章目录 前言0、论文摘要一、Introduction二.相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果标准抽象模型微调抽象模型微调抽象模型和 BRIO微调抽象模型和 BRIO-Loop 五 总结结论局限 前言 Abstractive Text Summarization Using th…

OpenCV | 告别人工目检:深度学习技术引领工业品缺陷检测新时代

文章目录 机器视觉缺陷检测工业上常见缺陷检测方法内容简介作者简介目录读者对象如何阅读本书获取方式 机器视觉 机器视觉是使用各种工业相机&#xff0c;结合传感器跟电气信号实现替代传统人工&#xff0c;完成对象识别、计数、测量、缺陷检测、引导定位与抓取等任务。其中工…

【项目问题解决】% sql注入问题

目录 【项目问题解决】% sql注入问题 1.问题描述2.问题原因3.解决思路4.解决方案1.前端限制传入特殊字符2.后端拦截特殊字符-正则表达式3.后端拦截特殊字符-拦截器 5.总结6.参考 文章所属专区 项目问题解决 1.问题描述 在处理接口入参的一些sql注入问题&#xff0c;虽然通过M…

flutter开发windows应用的库

一、window_manager 这个插件允许 Flutter 桌面应用调整窗口的大小和位置 地址&#xff1a;https://github.com/leanflutter/window_manager二、win32 一个包&#xff0c;它使用FFI包装了一些最常见的Win32 API调用&#xff0c;使Dart代码可以访问这些调用&#xff0c;而不需…

node.js mongoose index(索引)

目录 简介 索引类型 单索引 复合索引 文本索引 简介 在 Mongoose 中&#xff0c;索引&#xff08;Index&#xff09;是一种用于提高查询性能的数据结构&#xff0c;它可以加速对数据库中文档的检索操作 索引类型 单索引、复合索引、文本索引、多键索引、哈希索引、地理…