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.mzph.cn/news/240002.shtml

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

相关文章

Java小案例-Bean是如何注入到Spring中的,有几种注入方式

前言 关于Bean注入Spring容器的方式网上也有很多相关文章,但是很多文章可能会存在以下常见的问题 注入方式总结的不全 没有分析可以使用这些注入方式背后的原因 没有这些注入方式在源码中的应用示例 ... 所以本文就带着解决上述的问题的目的来重新梳理一下Bea…

关于增强监控以检测针对Outlook Online APT活动的动态情报

一、基本内容 2023年6月,联邦民事行政部门(FCEB)在其Microsoft 365(M365)云环境中发现了可疑活动。该机构迅速向Microsoft和网络安全和基础设施安全局(CISA)报告了此情况。经过深入调查&#x…

【数字通信原理】复习笔记

哈喽ノhi~ 小伙伴们许久没有更新啦~ 花花经历了漫长的考试周~ 要被累成花干啦。今天来更新《数字通信原理》手写笔记给需要的小伙伴~ (注:这是两套笔记,是需要结合来看的哦~) 第一套的笔记请结合bilibili:张锦皓的复习课程来哦。 第…

图神经网络并在 TensorFlow 中实现

asokraju.medium.com 一、说明 本文将引导您了解图神经网络 (GNN) 并使用 TensorFlow 实现该网络。在后续的 文章中,我们讨论 GNN 的不同变体及其实现。这是一个分步计划: 图神经网络 (GNN) 的使用:我们首先讨论 GNN 是什么、它们如何工作以及…

Leetcode—415.字符串相加【简单】

2023每日刷题(六十八) Leetcode—415.字符串相加 实现代码 class Solution { public:string addStrings(string num1, string num2) {string ans;int len1 num1.size();int len2 num2.size();int i len1 - 1, j len2 - 1;int sum 0, c 0;while(i…

MFC 自定义压缩,解压缩工具

界面效果如下: 对外提供的接口如下: public: void setCallback(zp::Callback callback, void* param); bool open(const zp::String& path, bool readonly false); bool create(const zp::String& path, const zp::String& inputPath)…

关于“Python”的核心知识点整理大全37

目录 13.6.2 响应外星人和飞船碰撞 game_stats.py settings.py alien_invasion.py game_functions.py ship.py 注意 13.6.3 有外星人到达屏幕底端 game_functions.py 13.6.4 游戏结束 game_stats.py game_functions.py 13.7 确定应运行游戏的哪些部分 alien_inva…

C#学习笔记 - C#基础知识 - C#从入门到放弃 - C# 结构、类与属性

C# 入门基础知识 - C# 结构、类与属性 第9节 结构、类与属性9.1 结构的使用9.2 枚举9.3 面向对象概述9.4 类与对象的关系9.5 类的声明9.6 属性的使用9.6.1 属性9.6.2 属性使用 9.7 构造函数和析构函数9.7.1 构造函数9.7.2 析构函数 9.8 类的继承9.9 类的封装9.10 类的多态 更多…

非阻塞 IO(NIO)

文章目录 非阻塞 IO(NIO)模型驱动程序应用程序模块使用 非阻塞 IO(NIO) 上一节中 https://blog.csdn.net/tyustli/article/details/135140523,使用等待队列头实现了阻塞 IO 程序使用时,阻塞 IO 和非阻塞 IO 的区别在于文件打开的时候是否使用了 O_NONB…

Zookeeper的学习笔记

Zookeeper概念 Zookeeper是一个树形目录服务,简称zk。 Zookeeper是一个分布式的、开源的分布式应用程序的协调服务 Zookeeper提供主要的功能包括:配置管理,分布式锁,集群管理 Zookeeper命令操作 zk数据模型 zk中的每一个节点…

15-高并发-如何扩容

对于一个发展初期的系统来说,不太确定商业模型到底行不行,最好的办法是按照最小可行产品方法进行产品验证,因此,刚开始的功能会比较少,是一个大的单体应用,一般按照三层架构进行设计开发,使用单…

数字信号的理解

1 数字信号处理简介 数字信号处理 digital signal processing(DSP)经常与实际的数字系统相混淆。这两个术语都暗示了不同的概念。数字信号处理在本质上比实际的数字系统稍微抽象一些。数字系统是涉及的硬件、二进制代码或数字域。这两个术语之间的普遍混…

理解按需自动导入 unplugin-auto-import unplugin-vue-components

文章目录 unplugin-auto-import基础使用构建工具引入插件配置插件 import:配置自动导入规则使用预设自动引入第三方库自动导入 TypeScript 类型vue 预设的自动导入配置 dts:让编辑器环境识别 ts 类型eslintrc:解决 eslint 检查错误dirs&#…

使用PE信息查看工具和Dependency Walker工具排查因为库版本不对导致程序启动报错问题

目录 1、问题说明 2、问题分析思路 3、问题分析过程 3.1、使用Dependency Walker打开软件主程序,查看库与库的依赖关系,查看出问题的库 3.2、使用PE工具查看dll库的时间戳 3.3、解决办法 4、最后 VC常用功能开发汇总(专栏文章列表&…

链表常见题型(1)

1.反转链表 1.1反转链表 如果我们想要反转链表,那应该有head的next指针指向空,其余结点的next指针反过来,指向它的上一个结点,那我们在执行该操作的时候就需要定义变量cur(current)表示我们当前遍历到的结点,变量pre(…

【后台报错】插入时sql报错,varchar撑爆

后台的一个报错。按照正常的需要复现,或者查一下日志。但是凭借多年经验和大胆猜测,以及对自己代码要自信 引用一下文章 目测7*15 105项。每个id有9个数字加上分隔符刚好十个。大概就是超过了定义的一千的varchar长度。直接改数据库就好了。 简单粗暴…

【金猿CIO展】乖宝宠物CIO王天刚:以数据为核心,转变业务模式

‍ 王天刚 本文由乖宝宠物CIO王天刚撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度趋势人物榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 随着社会经济的快速发展,“宠物经济”悄然崛起,宠物在家中的角色地位有时…

c语言:计算1+2+3……+n的和|练习题

一、题目 输入一个数n,计算123……n的和 二、代码截图【带注释】 三、源代码【带注释】 #include int main() { int num0; printf("请输入要运算的数:"); scanf("%d",&num); sumResult(num);//相加结果函数 } //计算打印…

【智能家电】东胜物联离在线语音方案为厨电企业赋能,实现厨房智能化控制

近年来,我国厨电市场蓬勃发展。据行业统计数据显示,至今年6月,市场规模已达356亿元,同比增长8.8%。随着数字科技、物联网和人工智能的兴起,厨电产品正在朝着更智能、多功能化的方向迅速发展。 为此厨电厂商正在积极布…

EarMaster Pro 7 简体中文破解版 v7.2.0.42 电脑版

软件介绍 EarMaster破解版一款功能强大的专业级别多媒体音乐教育学习软件,EarMaster破解版提供了大量音乐相关的学习内容,用户在这里可以学习基础的和弦、音阶、节奏,也可以提升自己的音感,如果基础已经很扎实了,还可…