用Python实现时间序列模型实战——Day1:时间序列的基本概念

一、学习内容

1. 时间序列数据的定义与特点

定义

  • 时间序列数据是一组按时间顺序排列的观测值。时间序列的每个观测值都与特定时间点相关联。例如,气温每天的记录、股票每日的收盘价等。

特点

  • 时间依赖性:时间序列数据的一个基本特点是当前数据点可能依赖于之前的一个或多个数据点。这种依赖性可以用来进行预测。
  • 趋势:数据可能表现出随时间的长期上升或下降趋势。例如,随着经济发展,GDP 一般会显示上升趋势。
  • 季节性:数据在特定时间周期内反复出现的模式。季节性常见于许多现实世界的数据中,如每年的某些月份销售额上升。
  • 周期性:周期性波动与季节性相似,但周期更长且可能不固定,如经济周期。
  • 随机性:数据中难以解释的波动,可以被视为噪声,可能由随机因素引起。

2. 时间序列的类型

平稳时间序列

  • 平稳性是时间序列分析中的一个重要概念。一个时间序列被称为平稳的,如果它的统计性质(如均值、方差、自相关)随着时间保持恒定。平稳时间序列没有趋势和季节性,其波动性是恒定的。
  • 判断方法
    • 自相关函数 (ACF) 和偏自相关函数 (PACF) 的图可以帮助判断时间序列的平稳性。
    • 平稳性检验:如 ADF(Augmented Dickey-Fuller)检验。

非平稳时间序列

  • 非平稳时间序列的统计性质随着时间变化,例如,序列中存在明显的趋势、季节性或周期性。对于非平稳时间序列,常常需要通过差分、去趋势、去季节性等方法将其转化为平稳序列。

3. 基本术语

  • 趋势:数据在较长时间范围内的总体变化方向。例如,社会总消费水平随时间上升。
  • 季节性:在特定周期内数据表现出的反复波动模式,通常与自然或人为的季节性因素有关。例如,零售业的销售额在节假日期间会显著增加。
  • 周期性:类似于季节性,但周期性波动的周期较长,且可能不固定。例如,经济周期的波动通常不定期发生。
  • 随机性:难以解释的波动,通常来源于不可预测的外部因素。

4. 时间序列的可视化与初步分析

可视化的重要性

  • 可视化是时间序列分析的第一步,通过图表,我们可以直观地观察到数据的趋势、季节性、周期性和随机性。

如何进行可视化

  • 使用 pandasmatplotlib 进行可视化,可以帮助我们识别时间序列中的模式并初步分析其结构。

二、实战案例

1. 数据加载与初步查看

import pandas as pd
import matplotlib.pyplot as plt# 加载时间序列数据集
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv"
data = pd.read_csv(url, parse_dates=['Month'], index_col='Month')# 查看数据前几行
print("数据集的前几行:")
print(data.head())

运行结果:

数据集的前几行:Passengers
Month                 
1949-01-01         112
1949-02-01         118
1949-03-01         132
1949-04-01         129
1949-05-01         121

 程序解释:

  • 使用 pandas.read_csv 方法加载航空乘客数据集,并将 Month 列解析为日期格式并设为索引。然后使用 data.head() 查看前几行数据,以确认数据加载成功。
  • 该数据集记录了 1949 年 1 月至 1960 年 12 月的航空公司乘客数量。

2. 时间序列的初步可视化

# 绘制时间序列图
plt.figure(figsize=(12, 6))
plt.plot(data['Passengers'], color='blue', linewidth=2)
plt.title('Monthly Number of Airline Passengers (1949-1960)')
plt.xlabel('Date')
plt.ylabel('Number of Passengers')
plt.grid(True)
plt.show()

运行结果:

f94318d941d24bb0ad6c02d9b8603847.png

  程序解释:

  • 通过 matplotlibplot 函数绘制时间序列图,观察乘客数量随时间的变化。
  • 这一步帮助我们初步观察数据的趋势、季节性和随机波动。

3. 数据的描述性统计

# 检查数据的描述统计
print("\n数据的描述统计:")
print(data.describe())

 运行结果:

数据的描述统计:Passengers
count  144.000000
mean   280.298611
std    119.966317
min    104.000000
25%    180.000000
50%    265.500000
75%    360.500000
max    622.000000

程序解释: 

  • 使用 describe() 函数查看数据的描述性统计信息,如均值、标准差、最小值、最大值等,帮助我们了解数据的分布情况。

4. 年度趋势的可视化

# 可视化各个年份的数据趋势
data['Year'] = data.index.year
plt.figure(figsize=(12, 6))
for year in data['Year'].unique():yearly_data = data[data['Year'] == year]plt.plot(yearly_data.index.month, yearly_data['Passengers'], label=str(year))plt.title('Yearly Trends in Airline Passengers')
plt.xlabel('Month')
plt.ylabel('Number of Passengers')
plt.legend()
plt.grid(True)
plt.show()

 运行结果:

3af80dcd794f44a3a1d8d163e37008e0.png

程序解释: 

  • 将数据按年份进行分割,并绘制每年的月度乘客数量趋势。这样可以直观地比较每一年之间的季节性变化和年度增长趋势。

三、结果分析

1. 趋势

  • 从时间序列图可以看出,航空乘客数量呈现出明显的上升趋势。这意味着随着时间的推移,航空旅行变得越来越普及。

2. 季节性

  • 在每年的乘客数量中,可以清晰地观察到季节性波动。例如,乘客数量在年中某些月份(如夏季)达到峰值,而在冬季通常会有下降。这表明航空旅行具有明显的季节性。

3. 随机性

  • 尽管存在趋势和季节性,但数据中也包含了一些随机波动,这可能是由于外部因素或数据本身的随机性导致的。

4. 年度分析

  • 年度趋势图显示,不同年份的乘客数量趋势基本一致,但随着时间推移,各年份的乘客数量逐渐增加。这种逐年增长的趋势反映了航空行业的扩展和经济的发展。

通过这些详细的分析和可视化,我们能够更好地理解时间序列数据的基本特征。这为后续更深入的时间序列分析和建模奠定了坚实的基础。

 

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

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

相关文章

Eureka的生命周期管理:服务注册、续约与下线的完整流程解析

Eureka的生命周期管理:服务注册、续约与下线的完整流程解析 引言 在分布式系统中,服务发现是微服务架构的核心问题之一。Eureka是Netflix开源的一个服务发现框架,它能够有效地管理微服务的生命周期,包括服务注册、续约和下线。这…

8.27-dockerfile的应用+私有仓库的创建

一、dockerfile应用 通过dockerfile创建⼀个在启动容器时,就可以启动httpd服务的镜像 1.步骤 : 1.创建⼀个⽬录,⽤于存储Docker file所使⽤的⽂件2.在此⽬录中创建Docker file⽂件,以及镜像制作所使⽤的⽂件3.使⽤docker build创建镜像4.使…

基于x86 平台opencv的图像采集和seetaface6的图像质量评估功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.3 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的图像质量评估功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的图像质量评估模块…

全新的大语言模型Grok-2,最新测评!!

埃隆马斯克再次引发轰动,他旗下的xAI公司推出了全新的大语言模型Grok-2! 最新的Grok-2测试版已经发布,用户可以在𝕏平台上体验小版本的Grok-2 mini。 马斯克还通过一种谜语般的方式揭开了困扰大模型社区一个多月的谜团&#xff1a…

Java笔试面试题AI答之面向对象(2)

文章目录 7. Java中的组合、聚合和关联有什么区别?1. 关联(Association)2. 聚合(Aggregation)3. 组合(Composition)总结 8. 请设计一个符合开闭原则的设计模式的例子?策略模式示例1.…

每日刷力扣SQL(九)

1484.按日期分组销售产品 转载 首先,根据题目的描述以及给出的示例。我们能得到结果集中各个字段的含义如下: ① sell_date:卖出产品的日期(应该不用解释了) ② num_sold:当前这个日期下&…

工业软件架构2:(QT和C++实现)

工业软件架构 - 事件驱动 - 2 1. 命令模式的使用命令模式(Command Pattern)命令模式的基本概念命令模式的运作机制1. 定义命令接口2. 实现具体命令3. 调用者类4.扩展命令模式的功能撤销命令:宏命令:总结2. MVVM 模式的使用View(界面)部分则通过绑定与 ViewModel 交互:3.…

FFmpeg的入门实践系列三(基础知识)

欢迎诸位来阅读在下的博文~ 在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力 文章目录 前期博客一、音视频常用术语二、FFmpeg库的结构介绍三、FFmpeg的常用函数初始化封装格式编解码器相关 四、FFmpeg常用的数…

FastCGI简述

FastCGI (FCGI) 是一种协议,用于改善 Web 服务器和应用程序之间的通信效率。它是在 CGI(Common Gateway Interface)的基础上发展起来的,旨在解决 CGI 在处理大量并发请求时存在的性能问题。 CGI的由来 最早的Web服务器只能简单地…

WHAT - Jamstack(JavaScript, APIs, and Markup 与 Serverless 无服务器架构)

目录 一、介绍1. JavaScript2. APIs3. Markup4. Jamstack 的优势5. Jamstack 架构的工作流程 二、常见的 Jamstack 技术栈三、无服务器架构(Serverless)无服务器架构的核心概念1. 函数即服务(FaaS)2. 后端即服务(BaaS&…

解决 JS WebSocket 心跳检测 重连

解决 JS WebSocket 心跳检测 重连 文章目录 解决 JS WebSocket 心跳检测 重连一、WebSocket 心跳检测的作用二、心跳检测的处理方案1. 创建 WebSocket 连接2. 心跳参数设置3. 心跳检测逻辑4. 心跳包响应处理5. 断线重连机制 三、总结 一、WebSocket 心跳检测的作用 WebSocket 是…

序列化组件对比

1、msgpack介绍 1.MsgPack产生的数据更小,从而在数据传输过程中网络压力更小 2.MsgPack兼容性差,必须按照顺序保存字段 3.MsgPack是二进制序列化格式,兼容跨语言 官网地址: https://msgpack.org/ 官方介绍:Its lik…

C++ 移动构造函数为什么设置noexcept?

答案显然是&#xff1a; 移动构造函数设置了noexcept后STL的容器可以显著提高性能。 For example: class MyClass { public:MyClass(int v) { val v; }MyClass(const MyClass& o) {val o.val;std::cout << "Copy constructor " << val << …

Go 语言协程管理精解

1.基础 协程切换需要操作寄存器&#xff0c;这些操作需要通过汇编辅助实现。另外&#xff0c;每一个协程都有一个协程栈&#xff0c;实际上协程栈也是有结构的。汇编程序和栈结构这些概念可能大部分开发者都不太了解&#xff0c;在介绍协程管理之间&#xff0c;先简要介绍。 1…

一、undo log、Buffer Pool、WAL、redo log

目录 1、undo log2、Buffer Pool3、WAL4、redo log5、总结6、问题 1、undo log undo log日志是一种用于撤销回退的逻辑日志&#xff0c;在事务未提交前会记录相反的操作到undo log&#xff0c;当事务回滚&#xff0c;使用undo log 进行回滚&#xff0c;保证了事务的原子性。MV…

【生活英语】1、高兴与难过

【生活英语】1、高兴与难过 一、我非常非常开心二、心情三、不开心四、运气五、英语对话1、We broke up2、中奖了 一、我非常非常开心 (1) I’m really happy. (2) I’m really overjoyed. (3) I couldn’t be happier. I couldn’t agree with you more. 我非常赞同你。 (4) …

C++ TinyWebServer项目总结(8. 高性能服务器程序框架)

《Linux 高性能服务器编程》一书中&#xff0c;把这一章节作为全书的核心&#xff0c;同时作为后续章节的总览。这也意味着我们在经历了前置知识的学习后&#xff0c;正式进入了 Web 服务器项目的核心部分&#xff01; 前置内容回顾&#xff1a; 1. C TinyWebServer项目总结&…

每日一问:GET请求和POST请求的区别

每日一问&#xff1a;GET请求和POST请求的区别 在Web开发中&#xff0c;GET请求和POST请求是最常见的两种HTTP请求方法。尽管它们在功能上有许多相似之处&#xff0c;但在使用场景、数据传递方式、缓存策略等方面存在显著差异。了解这些区别不仅有助于我们在开发中做出正确的选…

Docker拉取镜像-2024-07-有效

Docker拉取镜像-有效 配置加速地址 首先&#xff0c;创建Docker配置目录&#xff1a;sudo mkdir -p /etc/docker然后&#xff0c;编辑daemon.json文件&#xff0c;添加以下加速地址&#xff1a;sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors"…

go gc信息如何查看

目录 1.几种常见方法1.1.设置环境变量 GODEBUG打印GC日志1.2.使用 debug.ReadGCStats1.3.使用 runtime.ReadMemStats 2.GC日志打印示例3.参考 在Go语言中&#xff0c;可以通过设置环境变量和使用运行时包中的调试功能来打印垃圾回收&#xff08;GC&#xff09;的信息。 1.几种…