审稿人:拜托,请把模型时间序列去趋势!!

news2024/12/22 19:38:32


大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」

时间序列分析是数据科学中一个重要的领域。通过对时间序列数据的分析,我们可以从数据中发现规律、预测未来趋势以及做出决策。无论是股票市场的走势,还是气象数据的变化,都涉及到时间序列分析

在进行时间序列分析时,数据中的趋势(Trend)是一个重要的组成部分。趋势可以是上升、下降或者是平稳的。为了更准确地分析数据,往往需要去除这些趋势,得到一个无趋势的时间序列,这就是时间序列去趋势的必要性

本文将详细介绍时间序列去趋势的相关知识,包括去趋势的方法、代码示范、数学公式、横向对比、误区和注意事项等,旨在帮助大家深入理解和掌握时间序列去趋势的技术

1. 什么是时间序列去趋势

1.1 时间序列的定义

时间序列是按照时间顺序记录的一系列数据点。常见的时间序列数据包括股票价格、温度记录、经济指标等。这些数据具有时间相关性,即前后数据点之间存在一定的依赖关系

1.2 趋势的定义与分类

趋势是时间序列数据中的一种长期变化模式。趋势可以是线性的,也可以是非线性的。根据趋势的方向,主要分为三类:

  • 上升趋势:数据点随时间增加而上升
  • 下降趋势:数据点随时间增加而下降
  • 平稳趋势:数据点随时间变化较小,保持稳定

1.3 去趋势的基本概念

去趋势是指从时间序列数据中去除长期趋势成分,使得数据更加平稳和易于分析。去趋势后的数据称为残差(Residuals),它们不包含趋势成分,只保留随机波动部分。去趋势的方法有很多,包括移动平均法、差分法和多项式拟合法等

2. 时间序列去趋势的方法

2.1 移动平均法

移动平均法是一种通过计算数据在一定窗口内的平均值来平滑数据的方法。它可以有效地去除数据中的短期波动,揭示长期趋势。移动平均分为简单移动平均和加权移动平均,后者在计算平均值时对较新的数据赋予更大的权重

2.2 差分法

差分法通过计算相邻数据点之间的差值来去除趋势。差分可以是一次差分、二次差分,甚至更高次差分。一次差分可以去除线性趋势,而二次差分可以去除二次趋势(即抛物线趋势)。差分后的数据更加平稳,适合进一步分析

2.3 多项式拟合法

多项式拟合法通过拟合一个多项式函数来描述数据的趋势,然后从原始数据中减去这个拟合的多项式。多项式的阶数决定了拟合的复杂程度。较低阶的多项式只能捕捉简单的趋势,而高阶多项式可以拟合更复杂的趋势

3. 代码示范

3.1 使用移动平均法去趋势

在这段代码示例中,我们将展示如何使用移动平均法对时间序列数据进行去趋势处理。我们会通过一个武侠世界的江湖事件数据集来展示这个过程。江湖上每天都有风云变幻,这些数据点记录了江湖中的各种事件,例如门派纷争、奇遇探险、恩怨情仇等。为了更好地分析这些数据,我们需要去除其中的长期趋势。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 生成武侠元素数据集
np.random.seed(0)
date_range = pd.date_range(start='1/1/2023', periods=100, freq='D')
data = pd.DataFrame({
    '日期': date_range,
    '江湖事件': np.random.randn(100).cumsum()
})
data.set_index('日期', inplace=True)

# 计算移动平均
window_size = 5
data['移动平均'] = data['江湖事件'].rolling(window=window_size).mean()

# 去趋势
data['去趋势数据'] = data['江湖事件'] - data['移动平均']

# 可视化
plt.figure(figsize=(14, 7))
plt.plot(data.index, data['江湖事件'], label='原始数据')
plt.plot(data.index, data['移动平均'], label='移动平均', color='red')
plt.plot(data.index, data['去趋势数据'], label='去趋势数据', color='green')
plt.legend()
plt.title('使用移动平均法去趋势')
plt.xlabel('日期')
plt.ylabel('江湖事件')
plt.show()

在这个示例中,我们首先生成了一个包含江湖事件数据的时间序列。这些数据通过随机生成的方式模拟了江湖中的各种动态变化。然后,我们计算了一个窗口大小为5的移动平均值,表示江湖事件的短期波动趋势。接着,从原始数据中减去移动平均值,得到去趋势后的数据,使得我们能够更清晰地看到江湖事件的实际变化。最后,我们对原始数据、移动平均值和去趋势数据进行了可视化。

3.2 使用差分法去趋势

在这段代码示例中,我们将展示如何使用差分法对时间序列数据进行去趋势处理。在江湖世界中,每日的恩怨情仇、门派纷争等事件,具有一定的连续性。通过差分法,我们可以去除这些数据中的趋势,更加聚焦于事件的短期变化。

# 使用差分法去趋势

# 生成示例数据
data['差分数据'] = data['江湖事件'].diff().dropna()

# 可视化
plt.figure(figsize=(14, 7))
plt.plot(data.index, data['江湖事件'], label='原始数据')
plt.plot(data.index, data['差分数据'], label='差分数据', color='green')
plt.legend()
plt.title('使用差分法去趋势')
plt.xlabel('日期')
plt.ylabel('江湖事件')
plt.show()

在这个示例中,我们对时间序列数据进行了差分操作,得到了去趋势后的数据,并进行了可视化。通过这种方法,我们能够去除江湖事件数据中的长期趋势,更好地分析事件的短期波动。

3.3 使用多项式拟合法去趋势

在这段代码示例中,我们将展示如何使用多项式拟合法对时间序列数据进行去趋势处理。江湖世界的动态变化有时并不是线性的,而是复杂的多项式趋势。通过拟合一个多项式,我们可以准确地描述这些趋势,并将其从数据中去除。

# 使用多项式拟合法去趋势

# 拟合多项式
poly_order = 3
data['多项式趋势'] = np.polyval(np.polyfit(range(len(data)), data['江湖事件'], poly_order), range(len(data)))

# 去趋势
data['去趋势数据_多项式'] = data['江湖事件'] - data['多项式趋势']

# 可视化
plt.figure(figsize=(14, 7))
plt.plot(data.index, data['江湖事件'], label='原始数据')
plt.plot(data.index, data['多项式趋势'], label='多项式拟合', color='red')
plt.plot(data.index, data['去趋势数据_多项式'], label='去趋势数据', color='green')
plt.legend()
plt.title('使用多项式拟合法去趋势')
plt.xlabel('日期')
plt.ylabel('江湖事件')
plt.show()

在这个示例中,我们拟合了一个三次多项式以描述江湖事件数据的趋势,然后从原始数据中减去这个拟合的多项式,得到了去趋势后的数据,并进行了可视化。这样,我们就能更清晰地看到江湖事件中的短期变化和异常波动。

每天一个简洁明了的小案例,如果你对这类文章感兴趣,欢迎订阅、点赞和分享

4. 数学公式

4.1 移动平均公式

移动平均是一种简单的时间序列去趋势方法,计算公式如下:

4.2 差分公式

差分法用于去除时间序列中的趋势,通过计算相邻数据点的差值来实现。一次差分的计算公式如下:

4.3 多项式拟合公式

多项式拟合法通过拟合一个多项式来去除趋势。一般形式的多项式拟合公式如下:

5. 横向对比

5.1 时间序列去趋势 vs 平滑

去趋势和平滑都是时间序列分析中的常见操作,但它们的目的不同。去趋势是为了去除数据中的长期趋势成分,使得数据更加平稳和易于分析;而平滑是为了去除数据中的短期波动,使得数据中的长期趋势更加明显

在方法上,去趋势通常使用移动平均法、差分法和多项式拟合法等;而平滑则通常使用简单移动平均、加权移动平均和指数平滑等方法

5.2 时间序列去趋势 vs 季节性调整

去趋势和季节性调整都是为了消除数据中的特定成分,使得数据更加平稳和易于分析。去趋势是去除数据中的长期趋势,而季节性调整是去除数据中的周期性波动

在方法上,去趋势通常使用移动平均法、差分法和多项式拟合法等;而季节性调整则通常使用季节性分解方法(如 STL 分解)和回归模型等

5.3 不同去趋势方法的比较

不同的去趋势方法有不同的优缺点,适用于不同类型的数据:

  • 移动平均法:简单易用,适用于平稳数据,但对突变和非线性趋势处理较差
  • 差分法:适用于线性趋势数据,但高次差分容易引入噪声
  • 多项式拟合法:适用于非线性趋势数据,但阶数选择不当容易过拟合

选择合适的方法需要根据具体数据的特点进行综合考虑

6. 误区和注意事项

6.1 忽视数据周期性

在进行时间序列去趋势时,忽视数据中的周期性成分是一个常见的误区。如果数据中存在明显的季节性或周期性波动,直接去趋势可能导致错误的分析结果。应该先进行季节性调整,再进行去趋势处理

6.2 过度拟合

在使用多项式拟合法去趋势时,选择过高的多项式阶数会导致过度拟合。这意味着拟合的多项式过于复杂,不仅拟合了趋势,还拟合了噪声部分,导致去趋势后的数据反而更难分析。应该根据数据特性选择合适的多项式阶数

6.3 方法选择不当

不同的去趋势方法适用于不同类型的数据,选择不当的方法可能无法有效去除趋势。例如,移动平均法适用于平稳数据,但对非线性趋势效果较差;差分法适用于线性趋势数据,但高次差分容易引入噪声。在选择方法时,应根据数据特点进行综合考虑

6.4 数据预处理不足

在进行去趋势之前,数据的预处理非常重要。缺失值、异常值等数据问题如果不解决,可能会影响去趋势的效果。在进行去趋势前,应该对数据进行清洗和处理,确保数据质量

6.5 忽视残差分析

去趋势后的残差数据仍然需要进行分析,以确保去趋势的有效性。忽视残差分析可能导致误导性的结论。在去趋势后,应该检查残差数据的分布、平稳性等特征,确保去趋势处理正确

7. 纵向关联

7.1 趋势与噪声的区分

在时间序列数据中,趋势和噪声是两个主要的成分。趋势代表数据的长期变化模式,而噪声则是数据中的随机波动部分。有效的去趋势方法应该能够很好地区分并去除趋势,同时保留噪声部分以进行进一步分析

7.2 时间序列预测中的去趋势

去趋势在时间序列预测中起着重要的作用。通过去除数据中的趋势成分,可以使得预测模型更加专注于捕捉数据的短期波动和周期性变化。去趋势后的数据更适合于建立自回归模型、移动平均模型等预测模型

7.3 去趋势对模型性能的影响

去趋势处理可以显著提高预测模型的性能。去除趋势后,数据变得更加平稳,模型可以更容易地捕捉数据中的潜在模式和规律。然而,如果去趋势方法选择不当,可能会引入噪声或丢失重要信息,反而降低模型的预测性能。因此,选择合适的去趋势方法至关重要

在进行时间序列分析和预测时,应充分考虑去趋势处理的必要性和方法选择,确保数据处理的正确性和预测结果的准确性

8. 实际应用案例

8.1 股票市场分析

在股票市场分析中,时间序列去趋势可以帮助我们更好地理解股票价格的变化模式。通过去除长期趋势,我们可以更清楚地观察到股票价格的短期波动,从而做出更精准的投资决策。例如,在分析一只股票的历史价格时,先去除趋势可以发现潜在的买入和卖出信号

8.2 气象数据处理

气象数据具有明显的季节性和长期趋势。通过去趋势处理,我们可以去除气象数据中的长期趋势,专注于季节性变化和异常天气事件的分析。例如,在分析温度变化时,去除长期上升或下降的趋势,可以更好地观察到季节性波动和突发的气温变化

8.3 经济指标预测

经济指标如 GDP、通货膨胀率等也常常包含长期趋势和周期性变化。去趋势处理可以帮助经济学家更准确地预测经济指标的短期变化,为制定经济政策提供支持。例如,在分析 GDP 增长率时,去除长期趋势可以更清楚地看到短期经济波动,从而更好地预测未来的经济走势

[ 抱个拳,总个结 ]

去趋势是时间序列分析中不可或缺的一个步骤,帮助我们去除数据中的长期趋势,使得数据更加平稳和易于分析。本文详细介绍了时间序列去趋势的基本概念、常用方法、数学公式以及实际应用案例

  • 移动平均法、差分法和多项式拟合法是常用的去趋势方法,各有优缺点,选择合适的方法需要根据数据特性进行综合考虑
  • 在去趋势过程中,需要注意避免忽视数据周期性、过度拟合、方法选择不当以及数据预处理不足等问题
  • 去趋势处理对于时间序列预测模型的性能至关重要,合理的去趋势方法可以提高模型的预测准确性
  • 实际应用中,去趋势方法在股票市场分析、气象数据处理和经济指标预测等领域具有重要的实际意义

希望通过本文的介绍,大侠能更好地理解和应用时间序列去趋势的方法,提升数据分析和预测的能力

- 科研为国分忧,创新与民造福 -

日更时间紧任务急,难免有疏漏之处,还请大侠海涵 内容仅供学习交流之用,部分素材来自网络,侵联删

[ 算法金,碎碎念 ]

日更近 200 天

公众号读者

破 15000

奥力给

全网同名,日更万日,让更多人享受智能乐趣

如果觉得内容有价值,烦请大侠多多 分享、在看、点赞,助力算法金又猛又持久、很黄很 BL 的日更下去;

同时邀请大侠 关注、星标 算法金,围观日更万日,助你功力大增、笑傲江湖

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

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

相关文章

体育时间:“中国第一”的出海代表们,一致瞄准了这一赛道?

2024年无疑又是一个体育赛事超级大年。 从1月的亚洲杯,2月的世乒团体锦标赛、第14届冬运会、到6月欧洲杯与美洲杯隔空对决,巴黎奥运会也将在7月盛大开赛,随后则还有8月的巴黎残奥会,对于期待万分的体育粉丝们,这将是极…

RapidLayout:中英文版面分析推理库

引言 继上一篇文章之后,我这里想着将360发布的版面分析模型整合到现有的rapid_layout仓库中,便于大家快速使用。 不曾想到,我这整理工作越做越多了,好在整体都是往更好方向走。 起初,rapid_layout项目是在RapidStru…

代码随想录训练营Day 64|卡码网98. 所有可达路径(深搜)

1.所有可达路径 98. 所有可达路径 | 代码随想录 代码&#xff1a; &#xff08;深搜&#xff09;邻接矩阵表示 #include <iostream> #include <vector> using namespace std; vector<int> path; vector<vector<int>> result; void dfs(const ve…

2024年史上最难就业季,该如何逆风翻盘?

前言 【2024年被称为最难就业年&#xff0c;1158万大学生面临难题】 IT互联网依然是大学生最向往行业&#xff0c;制造业受欢迎度升高智联招聘调研数据显示&#xff0c;2024届求职毕业生期望行业中&#xff0c;IT/通信/电子/互联网、政府/非盈利机构、文化/传媒/娱乐/体育行业…

urfread刷算法题day1|LeetCode2748.美丽下标的数目

题目 题目链接 LeetCode2748.美丽下标对的数目 题目描述 给你一个下标从 0 开始的整数数组 nums 。 如果下标对 i、j 满足 0 ≤ i < j < nums.length &#xff0c; 如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 &#xff0c; 则认为 nums[i] 和 nums…

大模型应用开发实践:RAG与Agent

RAG planning是任务拆解的一些方法。 Agent RAG现在基本上推荐LangChain开发框架。而Agent目前没有一个通用的好的开发框架/范式。 学习路径

uni-app的uni-list列表组件高效使用举例 (仿知乎日报实现)

目录 前言 uni-list组件介绍 基本使用 高级配置与自定义 仿知乎日报实现 知乎的api接口 后台服务实现 知乎日报首页 轮播图界面实现 客户端接口实现 uni-list列表使用 插入日期分割线 下滑分页的实现 完整页面代码 其他资源 前言 在移动应用开发领域&#xff0…

18V-180V降12V500mA恒压模块WT5118

18V-180V降12V500mA恒压模块WT5118 WT5118是一款能够将输入电压范围从18V至180V降低至12V并保持恒定输出电流500mA的恒压模块。 WT5118 是一款专为开关电源设计的集成了 180V 高电压 MOSFET 的 DC-DC 控制器。这个设备具备内置高压启动和自供电功能&#xff0c;能够满足快速启…

ICP备案调用公安身份证接口核验证件真实性未通过解决方法

网站备案或APP备案提供初审后提示管局审核未通过“调用公安身份证接口核验证件真实性未通过未通过信息为主体/网站负责人”被系统自动退回&#xff0c;阿里云百科整理详细调用公安身份证接口核验证件真实性未通过的解决方法&#xff1a; 原因分析&#xff1a;调用公安身份证接…

索引和深分页优化案例

一、初始状态没加索引 总数据100w左右 浅分页 查询10条需要1.5s左右 select * from timer_task where app hzhXtimer order by run_timer limit 0,10深分页查询10条需要1.7s左右 select * from timer_task where app hzhXtimer order by run_timer limit 100000,10看执…

论文阅读--Cross-view Transformers for real-time Map-view Semantic Segmentation

一种新的2D维度的bev特征提取方案&#xff0c;其通过引入相机先验信息&#xff08;相机内参和外参&#xff09;构建了一个多视图交叉注意力机制&#xff0c;能够将多视图特征映射为BEV特征。 cross view attention&#xff1a;BEV位置编码由根据相机标定结果&#xff08;内参和…

RabbitMQ(六)仲裁队列、流式队列、异地容灾(联邦队列Federation Queue)

文章目录 仲裁队列1、创建交换机2、创建仲裁队列3、验证主节点宕机不影响消息发送和接收 流式队列&#xff08;不推荐&#xff0c;Kafka主场&#xff09;概念 异地容灾一、Federation插件概述 二、Federation交换机1、总体说明2、准备工作3、启用联邦插件4、添加上游连接端点5、…

[Ansible详解]

Ansible 1.主机组清单设置 #组 #父组与子组[组名] [组名]ip ipip ip[组名 : vars] [组名2]ansible_user=用户 …

【已解决】better-scroll在PC端如何开启鼠标滚动以及如何始终显示滚动条

总结 需要安装插件 mouse-wheel 和 scrollbar 在PC端如何开启鼠标滚动? 需要安装官方提供的滚动插件&#xff1a;mouse-wheel https://better-scroll.github.io/docs/zh-CN/plugins/mouse-wheel.html 为了开启鼠标滚动功能&#xff0c;你需要首先引入 mouseWheel 插件&…

VBA基础知识点总结

VBA教程 VBScript教程 数据类型 数字数据类型 非数字数据类型 变量&常量 可以通过Dim、Public或Private语句声明变量。 变量语法&#xff1a;Dim <<variable_name>> As <<variable_type>>&#xff08;需要在使用它们之前声明&#xff09; 常量语…

对错问题:凡事没有绝对的对与错,要看义所在、良知所在

孔子说&#xff1a;君子对于天下所发生的很多事&#xff0c;如评判政策变动、战争等&#xff0c;没有绝对的对&#xff0c;也没有绝对的错&#xff0c;一切要看事情本身是否符合“ 义 ”。

[信号与系统]傅里叶变换、卷积定理、和为什么时域的卷积等于频域相乘。

前言 最近学习以下IIR滤波器和FIR滤波器 前置 1. 时域和频域 时域和频域代表着频率和时间与振幅的一一对应关系 2. 卷积运算 关于卷积的定义&#xff0c;详情请看 这篇文章能让你明白卷积 卷积运算是一种数学运算&#xff0c;广泛应用于信号处理、图像处理、控制系统和概…

吴恩达机器学习 第三课 week1 无监督学习算法(上)

目录 01 学习目标 02 无监督学习 03 K-means聚类算法 3.1 K-means聚类算法原理 3.2 k-means算法实现 3.3 利用k-means算法压缩图片 04 总结 01 学习目标 &#xff08;1&#xff09;了解无监督学习算法 &#xff08;2&#xff09;掌握K-means聚类算法实现步骤 &#xff…

AWS-PatchAsgInstance自动化定时ASG组打补丁

问题 需要给AWS的EC2水平自动扩展组AutoScaling Group&#xff08;ASG&#xff09;中的EC2自动定期打补丁。 创建自动化运行IAM角色 找到创建角色入口页面&#xff0c;如下图&#xff1a; 开始创建Systems Manager自动化运行的IAM角色&#xff0c;如下图&#xff1a; 设置…

ppt模版免费下载网站大全

PPT是我们传达信息、分享知识、展示项目和进行商务沟通的重要工具。一个设计精美、布局合理的PPT不仅能吸引观众的注意力&#xff0c;还能有效提升演讲者的专业形象。PPT模版可以帮助我们高效制作出精美的PPT&#xff0c;下面小编就来和大家分享一些免费无需注册登录就可以直接…