【数据挖掘】时间序列教程【一】
第一章 说明
对于时间序列的研究,可以追溯到19世纪末和20世纪初。当时,许多学者开始对时间相关的经济和社会现象进行研究,尝试发现其规律和趋势。其中最早的时间序列研究可以追溯到法国经济学家易贝尔(Maurice Allais)和英国经济学家詹姆斯·克拉克(James Clark)的研究。随着时间序列分析方法的不断发展和应用,时间序列研究逐渐成为了统计学、经济学、金融学、工程学等领域重要的研究方向。
第二章、时态数据的结构
时间序列数据为
-
根据时间编制索引的观测值或测量值
-
而不是Xi,我们用Xt表示
为什么这会让事情变得不同?
-
时间索引具有特殊的排序。
-
随时间测量的数据不可交换,这是我们在索引数据时通常假设的我我.
-
时间也可以有其特殊的含义,代表其他未观察到的变量。
需要明确的是,时间序列数据的一个关键属性是,它与通常分析的其他类型的数据区分开来,我们不认为我们可以随机排列数据的索引并以相同的分布对数据进行建模。数据有排序。此外,数据独立的较强假设通常不适用。
时间序列数据的一个有趣且可能令人不安的特征是,原始形式的数据提供的真实信息很少。从某种意义上说,原始数据是最无用的数据形式。因此,绘制或汇总原始数据通常无法提供对正在发生的事情或为什么发生的很多见解。但是,由于时间索引具有如此特殊的意义,我们可以使用时间索引将时间序列数据分解为不同时间尺度的变化。时间尺度分析的正式方法有时称为傅里叶分析或光谱分析,但也有一些非正式方法也很有用。
考虑时间序列数据的另一种方法是,时间序列实际上表示在不同时间尺度上变化的时间序列的混合。分析时间序列数据的部分工作是
-
挑选时间尺度的混合并描述它们之间的区别
-
根据经验属性或手头的科学问题确定感兴趣的时间尺度
2.1 示例:空气污染与健康
例如,我们可能有兴趣研究长期暴露于环境空气污染如何影响您的预期寿命。例如,一些研究表明,与生活在更清洁的城市相比,一生生活在污染更严重的城市会使您的预期寿命减少多达 6 个月。在考虑如何解决这个问题以及如何分析数据时,我们主要感兴趣的是比较城市之间的长期平均污染水平,也许是几十年。我们不太可能关心某一天甚至一个月的污染水平有多高。
另一方面,许多研究表明,空气污染的短期峰值会增加一个城市的心血管和呼吸系统疾病的死亡人数和住院人数。在这种情况下,我们可能有兴趣将空气污染的日常变化与住院或死亡率的日常变化进行比较。总体长期平均污染水平没有什么意义。
考虑以下 10–1987 年期间密歇根州底特律的颗粒物 (PM1999) 数据的时间序列图。
有人可能会问一个看似简单的问题:底特律的空气污染在1987年至1999年期间有所改善吗?事实上,在这段时间内,污染水平总体上略有下降,但持续不断。
实际上,当我们查看拟合的简单线性回归模型结果时,我们看到斜率的系数为负。
# A tibble: 2 x 5term estimate std.error statistic p.value<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) 48.4 1.67 28.9 9.59e-170
2 date -0.00157 0.000184 -8.54 1.77e- 17
但是,在查看上面的图时,很难不注意到定期发生的极端峰值。粗略阅读该图显示了PM10水平达到100 \(mu\)g/m\(^3\)的天数。因此,底特律的PM10随着时间的推移而下降,但我们在某些日子里仍然会经历高水平。情况是否有所改善?
当然,答案与我们考虑数据的时间尺度有关。在长期的时间尺度上,事情似乎正在减少,因此趋势平稳。然而,在短期时间尺度上,我们仍然会看到大的峰值。没有一个答案;答案取决于时间尺度。
从政策角度来看,我们可以采用不同的策略来影响长期和短期时间尺度的空气污染。为了长期改变污染水平,我们可能会尝试将当地经济从基于化石燃料的能源转变为更可再生、污染更少的能源。这样的计划可能会产生重大影响,但需要大量时间才能实施。为了应对污染的短期波动,我们可能会实施交通禁令或有针对性的基于源的干预措施等政策,以缓解短期高峰。
现在假设我们想看看底特律的死亡率和空气污染之间是否存在任何关联。我们可以制作一个简单的散点图来查看是否存在简单的关联。
现在,这个散点图是我们在没有时间序列数据时可能会制作的。但是,由于我们确实有时间序列数据,因此我们应该立即开始根据不同的时间尺度变化来思考问题。我们关心的是污染和死亡率之间的长期关联,还是关心短期关联?
上图中显示的整体关联可以用简单的线性回归模型进行量化。
# A tibble: 2 x 5term estimate std.error statistic p.value<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) 46.0 0.226 204. 0
2 pm10 0.0275 0.00564 4.88 0.00000108
两者之间似乎存在正相关,表明空气污染水平的增加与死亡率的增加有关。但是,我们能做更多的事情来获得更多的洞察力吗?
让我们计算PM10的年平均值,并对年度死亡总数求和,并制作这些年度汇总统计数据的散点图。
从这个图中我们可以看到,这种关联似乎相当强(当然,只有 13 个数据点)。当我们为这些数据拟合线性模型时,我们得到以下内容。
# A tibble: 2 x 5term estimate std.error statistic p.value<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) 10388. 987. 10.5 0.00000000725
2 pm10 190. 29.4 6.47 0.00000579
从一年到下一年,年平均PM10变化一个单位,与190.4例死亡的变化有关。
现在,我们可以将PM10的每日偏差与其年平均值进行比较,并查看该偏差与每日死亡率之间的关联。
# A tibble: 2 x 5term estimate std.error statistic p.value<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) 46.9 0.116 404. 0
2 pm10dev 0.0142 0.00574 2.47 0.0136
这里的关联要小得多,但当然我们只关注PM10的每日变化,而不是年度变化。我们预计PM10从一天到第二天的一个单位变化会带来大量死亡。
人们可能会想知道:哪个估计是正确的?是日平均PM10与死亡率之间的关联,还是年平均PM10与死亡率之间的关联?答案是两者都是“正确的”,但每个都回答了不同的问题。日平均值着眼于短期变化,可以解释为代表污染的“急性”影响,而年平均值可能会重新反映空气污染水平的“慢性”影响。
在不同时间尺度上观察关联时要考虑的另一个问题是,在这个时间尺度上存在的混杂因素是什么?在观察PM10的逐年变化时,可能存在许多混杂因素,这些混杂因素也因PM10和死亡率而异。在观察PM10的每日变化时,每年平稳变化的相同混杂因素可能不会引起关注。但是,可能还有其他混杂因素每天都需要考虑。
2.2 固定变化与随机变化
大多数时间序列书籍倾向于将时间序列想象为仅由随机现象组成,而不是固定和随机现象的混合。因此,建模通常侧重于时序模型的随机方面。然而,世界上许多实时序列是由我们可能认为的固定和随机变化组成的。
-
温度数据具有非“随机”的昼夜和季节性成分
-
空气污染数据可能会根据交通或通勤模式产生星期的影响
虽然有时很容易将一切都视为随机的,但当我们缺乏对真正潜在现象的观察时,这通常是一根拐杖。此外,当某些东西是固定的时,将它视为随机将导致违反我们通常做出的平稳性假设(见下文)。
根据应用程序的性质,对固定或随机的相同现象进行建模可能是有意义的。换句话说,这取决于。
-
在生物医学和公共卫生应用中,我们通常处理完全观察到的数据集,并试图解释“发生了什么?
-
我们正在描述过去,也许是对未来做出推断
-
在金融或控制系统应用中,我们可能会根据过去对未来事件进行预测。从过去数据中看似固定的事情将来可能会发生变化,因此我们可能希望允许模型“适应”未知的未来模式。
考虑以下 1990–1992 年马里兰州巴尔的摩的日平均温度图。正如人们从温度数据中预期的那样,有一个强烈的季节性模式,在夏季达到顶峰,在冬季出现低谷。
现在,这种所谓的季节性模式是固定的还是随机的?历史告诉我们,季节性模式是相当可预测的。我们通常不相信夏天可以冻僵,冬天也可以达到90度(F)。
讨论此问题的更正式方式可能是使用以下模型。设 \(y_1, y_2, \dots\) 是巴尔的摩每天 \(t\) 的温度值,并考虑以下模型,
\[ y_t = \mu + \varepsilon_t, \]
其中 \(\varepsilon\) 是期望值 \(\mu\) 和观测值 \(y_t\) 之间的随机偏差。在没有任何计算机的帮助下,我们可能会查看上面的图并估计\(\mu\)大约是50-55度。但是现在,假设您的工作是预测 \(t\) 的任何值的 \(\varepsilon_t\) 的值。很明显,如果 \(t\) 在年中下降,则很可能是 \(\varepsilon_t > 0\),如果 \(t\) 在年初或年底附近下降,那么很可能是 \(\varepsilon_t < 0\)。因此,我们只需知道 \(t\) 的值即可获得有关偏差 \(\varepsilon\) 的重要信息。换句话说,序列\(\varepsilon_t\)中嵌入了一个固定的季节性效应,我们可能很难将其视为“随机”。
但现在考虑以下模型。
\[ y_t = y_{t-1} + \varepsilon_t。 \]
此模型将 \(y_t\) 的值预测为与时间 \(t-1\) 处的值的偏差。所以今天的值等于昨天的值加上一个小的偏差。现在,假设您的工作是预测 \(\varepsilon_t\) 的值。这有点难,对吧?如果我知道昨天是70度,我确定今天会比70度温暖吗?还是更冷?如果我知道昨天是20度,我确定今天会更暖和还是更冷?在此模型中,偏差\(\varepsilon_t\)可能看起来更“随机”或更难预测。没有一个固定的规则说今天的温度总是比昨天的温度更暖(或更冷)。
考虑下面的不同时间序列,它显示了股票代码为 SPY 的交易所交易基金的加权中间交易价格。该基金追踪美国股票的标准普尔500指数。请注意,x 轴上的时间刻度以微秒为单位。
与温度时间序列相比,该图看起来不那么规则,并且没有可识别的模式。此外,在微秒级,我们可能不太熟悉这种股票价格可能存在的固定模式。有经验的交易者可能知道,在一天中的给定时间,在几十万微秒的窗口内,这种模式总是会出现。
然而,对于金融,有一种被称为有效市场假说的理论认为这种固定模式不应该存在。如果存在这样一个固定的模式,它将代表一个套利机会,或者一个没有风险的赚钱机会。例如,在上面的图中,我们可以在 2 万微秒的时间买入股票,然后在 5 万微秒左右卖出,以获得轻松的利润。如果这种模式每天都存在,我们可以告诉我们的经纪人每天执行这笔交易以获得微薄的利润。然而,随着这种模式的消息泄露到市场上,越来越多的人会开始和我同时买入,和我同时卖出。这将在买入时提高价格,在卖出时降低价格,最终获利机会将消失。
有效市场假说表明,这种固定模式的存在极不可能。因此,将此类数据建模为随机数据可能更有意义,而不是固定数据。这表明可以采用不同的建模策略和不同类型的模型。我们不会在这里详细讨论这些类型的模型。
2.3 时间序列分析的目标
人们希望从时间序列分析中得到什么?正在回答哪些问题?
2.3.1 预测
鉴于过去和现在,未来会是什么样子(及其不确定性)?
-
鉴于过去10年的季度每股收益,苹果公司下个季度的每股收益是多少?
-
鉴于过去200年的全球平均气温,未来100年全球平均气温是多少?
2.3.2 过滤
鉴于过去和现在的观察,我应该如何更新我对自然真实状态的估计?
-
鉴于我目前对航天器位置和速度的估计,我应该如何根据新的陀螺仪和雷达测量更新我对位置和速度的估计?
-
鉴于美国每月失业数据的历史以及我对当前失业水平的估计,我应该如何根据劳工统计局发布的最新数据修改我的估计?
-
考虑到捐赠回报的历史,当年的回报,以及每年花费捐赠价值的目标百分比的需要,大学应该在下一个财政年度从捐赠基金中花费多少?
2.3.3 时间尺度分析
给定一组观察到的数据,哪些时间尺度的变化主导或解释了数据中的大部分时间变化。
-
马里兰州巴尔的摩的温度观测是否有强烈的季节性周期?
-
环境空气污染与死亡率之间的关联主要是由污染水平的年度大幅变化还是短期峰值驱动的?
2.3.4 回归建模
给定两种现象的时间序列,它们之间有什么关联?
-
每日空气污染水平与心脏住院每日数值之间有什么关联?
-
一个国家失业率的变化与国内生产总值的变化之间的滞后(以月为单位)是多少?
-
大飓风发生后两周内发生的累计超额死亡人数是多少?
2.3.5 平滑
给定一个完整的(嘈杂的)数据集,我可以推断出过去自然的真实状态吗?
-
给定一个噪声测量信号,我能从数据中重建真实信号吗?
-
现在我的宇宙飞船已经绕月飞行了,它离月球最近的距离是多少?
-
(待续)
相关文章:

【数据挖掘】时间序列教程【一】
第一章 说明 对于时间序列的研究,可以追溯到19世纪末和20世纪初。当时,许多学者开始对时间相关的经济和社会现象进行研究,尝试发现其规律和趋势。其中最早的时间序列研究可以追溯到法国经济学家易贝尔(Maurice Allais)…...
优化索引粒度参数提升ClickHouse查询性能
当对高基数列进行过滤查询时,总是希望尽可能跳过更多的行。否则需要处理更多数据、需要更多资源。ClickHouse缺省在MergeTree表读取8192行数据块,但我们可以在创建表时调整该index_granularity 参数。本文通过示例说明如何调整该参数优化查询性能。 inde…...

selenium\webdriver\remote\errorhandler.py:242: SessionNotCreatedException问题解决
报错信息: raise exception_class(message, screen, stacktrace) E selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 112 E Current browser versi…...

MySQL 备份与恢复
MySQL 备份与恢复 一、数据库备份的分类1.1 数据备份的重要性1.2 数据库备份的分类1.2.1 从物理与逻辑的角度,分为物理备份和逻辑备份1.2.2 从数据库的备份策略角度,分为完全备份,差异备份和增量备份1.2.3 常见的备份方法 二、MySQL完全备份与…...

js中改变this指向的三种方式
js中改变this指向的三种方式 1、call方法2、apply方法3、bind方法 1、call方法 使用 call 方法调用函数,同时指定函数中 this 的值,使用方法如下代码所示: <script>const obj {uname: 刘德华}function fn(x, y) {console.log(this) …...
小程序中如何进行数据传递和通信
103. 小程序中如何进行数据传递和通信? 1. 使用页面参数传递数据: 在小程序中,可以通过页面参数来传递数据。当跳转到一个新页面时,可以将需要传递的数据作为参数传入,然后在目标页面的onLoad函数中获取参数。 示例…...

Vue3项目中引入ElementUI使用详解
目录 Vue3项目中引入 ElementUI1.安装2.引入2.1 全局引入2.2 按需引入viteWebpack 3.使用 Vue3项目中引入 ElementUI ElementUI是一个强大的PC端UI组件框架,它不依赖于vue,但是却是当前和vue配合做项目开发的一个比较好的ui框架,其包含了布局…...

计算机启动
按下主机上的 power 键后,第一个运行的软件是 BIOS,BIOS 全称叫 Base Input & Output System,即基本输入输出系统。 (8086的1MB内存) 地址 0~0x9FFFF 处是 DRAM,顶部的 0xF0000~0xFFFFF&am…...

Unity学习笔记--EventSystem事件系统在使用上需要注意的地方(很基础,但是很多人会忘记!!!)
目录 前言代码Unity 场景配置运行报错分析解决办法拓展(预告) 前言 之前有写过一篇关于事件系统实现以及使用的文章 Unity学习笔记–C#事件系统的实现与应用 最近在使用的时候遇到了一些问题,所以在此记录下,也为看到这篇文章的人…...

高手必备:JVM调优的常用命令和参数一网打尽!
大家好,我是小米!在今天的技术分享中,我将和大家一起探讨JVM调优中的常用命令和参数。作为一名热爱技术的小伙伴,希望通过本篇文章的分享,能够帮助大家更好地理解和掌握JVM调优的方法和技巧。 JVM的结构 首先&#x…...

Uniapp 开发 ①(快速上手)
作者 : SYFStrive 博客首页 : HomePage 📜: UNIAPP开发 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 Ǵ…...

【数据库原理与实践】知识点归纳(下)
第6章 规范化理论 一、关系模式设计中存在的问题 关系、关系模式、关系数据库、关系数据库的模式 关系模式看作三元组:R < U,F >,当且仅当U上的一个关系r满足F时,r称为关系模式R < U,F >的一个关系 第一范式(1NF&…...
代码随想录day34
1005.K次取反后最大化的数组和 本题主要是想到排序的时候要按绝对值大小排序。 class Solution { static bool cmp(int a,int b){return abs(a)>abs(b); } public:int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(),nums.end(),cmp);…...

CSS知识点汇总(八)--Flexbox
1. flexbox(弹性盒布局模型)是什么,适用什么场景? 1. flexbox(弹性盒布局模型)是什么 Flexible Box 简称 flex,意为”弹性布局”,可以简便、完整、响应式地实现各种页面布局。采用…...

ASCII、Unicode、UTF-8、GBK
入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、定义 1、ASCII 2、Unicode 3、UTF-8 4、GB2312 5、GBK 6、\u和\x 二、相互转化 1、str 与 ASCII 2、str与utf-…...

【安全】使用docker安装Nessus
目录 一、准备docker环境服务器(略) 二、安装 2.1 搜索镜像 2.2 拉取镜像 2.3 启动镜像 三、离线更新插件 3.1 获取challenge 3.2 官方注册获取激活码 3.3 使用challenge码和激活码获取插件下载地址 3.4 下载的插件以及许可协议复制到容器内 四…...

【Hadoop综合实践】手机卖场大数据综合项目分析
🚀 本文章实现了基于MapReduce的手机浏览日志分析 🚀 文章简介:主要包含了数据生成部分,数据处理部分,数据存储部分与数据可视化部分 🚀 【本文仅供参考!!非唯一答案】其中需求实现的…...

服务器技术(三)--Nginx
Nginx介绍 Nginx是什么、适用场景 Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 Nginx专为性能优化而开发,性能是其最重要的考量…...

OpenCV——总结《车牌识别》之《常用的函数介绍》
1. cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10))element cv2.getStructuringElement(shape, ksize[, anchor])用于创建形态学操作的结构元素(structuring element)。 参数解释: shape:结构元素的形状,可以…...

chatgpt赋能python:如何利用Python进行自动化办公
如何利用Python进行自动化办公 在现代办公环境中,自动化成为了一种趋势。利用计算机程序自动处理重复性劳动,可以提高生产效率和工作质量,同时也能够让工作更加轻松。Python作为一种常用的编程语言,在自动化办公中发挥了重要作用…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...