首页 > 其他分享 >使用递归图 recurrence plot 表征时间序列

使用递归图 recurrence plot 表征时间序列

时间:2023-11-09 15:12:59浏览次数:36  
标签:plot Recurrence plt 递归 recurrence 序列 data

在本文中,我将展示如何使用递归图 Recurrence Plots 来描述不同类型的时间序列。我们将查看具有500个数据点的各种模拟时间序列。我们可以通过可视化时间序列的递归图并将其与其他已知的不同时间序列的递归图进行比较,从而直观地表征时间序列。

递归图

Recurrence Plots(RP)是一种用于可视化和分析时间序列或动态系统的方法。它将时间序列转化为图形化的表示形式,以便分析时间序列中的重复模式和结构。Recurrence Plots 是非常有用的,尤其是在时间序列数据中存在周期性、重复事件或关联结构时。

Recurrence Plots 的基本原理是测量时间序列中各点之间的相似性。如果两个时间点之间的距离小于某个给定的阈值,就会在 Recurrence Plot 中绘制一个点,表示这两个时间点之间存在重复性。这些点在二维平面上组成了一种图像。

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. def recurrence_plot(data, threshold=0.1):
  4. """
  5. Generate a recurrence plot from a time series.
  6. :param data: Time series data
  7. :param threshold: Threshold to determine recurrence
  8. :return: Recurrence plot
  9. """
  10. # Calculate the distance matrix
  11. N = len(data)
  12. distance_matrix = np.zeros((N, N))
  13. for i in range(N):
  14. for j in range(N):
  15. distance_matrix[i, j] = np.abs(data[i] - data[j])
  16. # Create the recurrence plot
  17. recurrence_plot = np.where(distance_matrix <= threshold, 1, 0)
  18. return recurrence_plot

上面的代码创建了一个二进制距离矩阵,如果时间序列i和j的值相差在0.1以内(阈值),则它们的值为1,否则为0。得到的矩阵可以看作是一幅图像。

白噪声

接下来我们将可视化白噪声。首先,我们需要创建一系列模拟的白噪声:

  1. # Set a seed for reproducibility
  2. np.random.seed(0)
  3. # Generate 500 data points of white noise
  4. white_noise = np.random.normal(size=500)
  5. # Plot the white noise time series
  6. plt.figure(figsize=(10, 6))
  7. plt.plot(white_noise, label='White Noise')
  8. plt.title('White Noise Time Series')
  9. plt.xlabel('Time')
  10. plt.ylabel('Value')
  11. plt.legend()
  12. plt.grid(True)
  13. plt.show()

递归图为这种白噪声提供了有趣的可视化效果。对于任何一种白噪声,图看起来都是一样的:

 

https://avoid.overfit.cn/post/6b385fd6e8d64f2cb62d9caafd05389b

标签:plot,Recurrence,plt,递归,recurrence,序列,data
From: https://www.cnblogs.com/deephub/p/17821709.html

相关文章

  • matplotlib网格坐标刻度
    matplotlib网格坐标刻度目录matplotlib网格坐标刻度概要网格设置坐标轴坐标轴范围双坐标轴反转坐标轴坐标轴的位置刻度主次刻度颜色大小角度样式刻度标签文本刻度密度中文乱码处理参考资料概要plt.title()#标题plt.grid() #网格plt.xlabel()#坐标说明plt.......
  • C语言程序设计 函数递归调用示例
    函数递归调用示例(教材习题5.3,运行结果012345)#include<stdio.h>voidfun(intk);voidmain(){intw=5;fun(w);}voidfun(intk){if(k>0)fun(k-1);printf("%d",k);}......
  • 二叉树前中后序遍历(递归和非递归)+层次遍历
    直接看代码啦!前中后指的是跟被访问的次序!递归很好理解,重点是非递归!!!1#define_CRT_SECURE_NO_WARNINGS2#include<iostream>3#include<fstream>4usingnamespacestd;56typedefstructTreeNode7{8intdata;9intflag;10str......
  • C语言程序设计 练习题参考答案 第五章 (2) 递归函数
    /*5.10编写函数,求Fibonacci数列的第n项*/#include"stdio.h"intfibonacci(intn);voidmain(){intn;printf("求Fibonacci数列的第n项,请输入n\n");scanf("%d",&n);/*VC6中n要小于?*/printf("Fibonacci数列的第%d项为%d",n,......
  • C语言程序设计 求阶乘递归函数调用示例
    ......
  • Python 利用pandas和matplotlib绘制双柱状图
    在数据分析和可视化中,常用的一种图形类型是柱状图。柱状图能够清晰地展示不同分类变量的数值,并支持多组数据进行对比。本篇文章将介绍如何使用Python绘制双柱状图。准备工作在开始绘制柱状图之前,需要先安装matplotlib和pandas这两个Python库。可以通过pip安装:pipinstallmatp......
  • ggplot ggplot2 画图
     折线图-ggplot2 http://blog.163.com/yugao1986@126/blog/static/6922850820131161531421/http://blog.sina.com.cn/s/blog_7cffd1400101f50v.html《RGraphicsCookbook-ByWinstonChang》#======================折线图library(ggplot2) #作图library(gcookbook) #案例......
  • 01_二叉树的递归遍历
    二叉树的递归遍历递归算法的三要素确定递归函数的参数和返回值:确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件:写完了递归算法,运行的时候,经常会遇到栈溢出的错误,就是没写终......
  • 小白函数递归------新手
    1.递归是什么?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。 #include<stdio.h>voidprint(){ printf("hehe"); print();}intmain(){ printf("hehe"); print();}在上面的函数中函数实现了自己调用自己,去实现我们想要去实现的功能,这种就是函数......
  • 前端歌谣-第贰拾三课-递归
    前言我是歌谣最好的种树是十年前其次是现在今天继续给大家带来的是递归的讲解环境配置npminit-yyarnaddvite-D修改page.json配置端口{"name":"demo1","version":"1.0.0","description":"","main":"index.js",&......