日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

使用遞歸圖 recurrence plot 表征時間序列

來源: 責編: 時間:2023-11-10 17:07:16 296觀看
導讀在本文中,我將展示如何使用遞歸圖 Recurrence Plots 來描述不同類型的時間序列。我們將查看具有500個數據點的各種模擬時間序列。我們可以通過可視化時間序列的遞歸圖并將其與其他已知的不同時間序列的遞歸圖進行比較,

在本文中,我將展示如何使用遞歸圖 Recurrence Plots 來描述不同類型的時間序列。我們將查看具有500個數據點的各種模擬時間序列。我們可以通過可視化時間序列的遞歸圖并將其與其他已知的不同時間序列的遞歸圖進行比較,從而直觀地表征時間序列。bgZ28資訊網——每日最新資訊28at.com

bgZ28資訊網——每日最新資訊28at.com

遞歸圖

Recurrence  Plots(RP)是一種用于可視化和分析時間序列或動態系統的方法。它將時間序列轉化為圖形化的表示形式,以便分析時間序列中的重復模式和結構。Recurrence Plots 是非常有用的,尤其是在時間序列數據中存在周期性、重復事件或關聯結構時。bgZ28資訊網——每日最新資訊28at.com

Recurrence Plots 的基本原理是測量時間序列中各點之間的相似性。如果兩個時間點之間的距離小于某個給定的閾值,就會在 Recurrence Plot 中繪制一個點,表示這兩個時間點之間存在重復性。這些點在二維平面上組成了一種圖像。bgZ28資訊網——每日最新資訊28at.com

import numpy as np import matplotlib.pyplot as plt  def recurrence_plot(data, threshold=0.1):    """    Generate a recurrence plot from a time series.     :param data: Time series data    :param threshold: Threshold to determine recurrence    :return: Recurrence plot    """    # Calculate the distance matrix    N = len(data)    distance_matrix = np.zeros((N, N))    for i in range(N):        for j in range(N):            distance_matrix[i, j] = np.abs(data[i] - data[j])     # Create the recurrence plot    recurrence_plot = np.where(distance_matrix <= threshold, 1, 0)     return recurrence_plot

上面的代碼創建了一個二進制距離矩陣,如果時間序列i和j的值相差在0.1以內(閾值),則它們的值為1,否則為0。得到的矩陣可以看作是一幅圖像。bgZ28資訊網——每日最新資訊28at.com

白噪聲

接下來我們將可視化白噪聲。首先,我們需要創建一系列模擬的白噪聲:bgZ28資訊網——每日最新資訊28at.com

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

圖片bgZ28資訊網——每日最新資訊28at.com

遞歸圖為這種白噪聲提供了有趣的可視化效果。對于任何一種白噪聲,圖看起來都是一樣的:bgZ28資訊網——每日最新資訊28at.com

# Generate and plot the recurrence plot recurrence = recurrence_plot(white_noise, threshold=0.1)  plt.figure(figsize=(8, 8)) plt.imshow(recurrence, cmap='binary', origin='lower') plt.title('Recurrence Plot') plt.xlabel('Time') plt.ylabel('Time') plt.colorbar(label='Recurrence') plt.show()

bgZ28資訊網——每日最新資訊28at.com

可以直觀地看到一個嘈雜的過程。可以看到圖中對角線總是黑色的。bgZ28資訊網——每日最新資訊28at.com

隨機游走

接下來讓我們看看隨機游走(Random Walk)是什么樣子的:bgZ28資訊網——每日最新資訊28at.com

# Generate 500 data points of a random walk steps = np.random.choice([-1, 1], size=500) # Generate random steps: -1 or 1 random_walk = np.cumsum(steps) # Cumulative sum to generate the random walk  # Plot the random walk time series plt.figure(figsize=(10, 6)) plt.plot(random_walk, label='Random Walk') plt.title('Random Walk Time Series') plt.xlabel('Time') plt.ylabel('Value') plt.legend() plt.grid(True) plt.show()

bgZ28資訊網——每日最新資訊28at.com

# Generate and plot the recurrence plot recurrence = recurrence_plot(random_walk, threshold=0.1)  plt.figure(figsize=(8, 8)) plt.imshow(recurrence, cmap='binary', origin='lower') plt.title('Recurrence Plot') plt.xlabel('Time') plt.ylabel('Time') plt.colorbar(label='Recurrence') plt.show()

bgZ28資訊網——每日最新資訊28at.com

SARIMA

SARIMA(4,1,4)(1,0,0,12)的模擬數據bgZ28資訊網——每日最新資訊28at.com

from statsmodels.tsa.statespace.sarimax import SARIMAX  # Define SARIMA parameters p, d, q = 4, 1, 4 # Non-seasonal order P, D, Q, s = 1, 0, 0, 12 # Seasonal order  # Simulate data model = SARIMAX(np.random.randn(100), order=(p, d, q), seasonal_order=(P, D, Q, s), trend='ct') fit = model.fit(disp=False) # Fit the model to random data to get parameters simulated_data = fit.simulate(nsimulatinotallow=500)  # Plot the simulated time series plt.figure(figsize=(10, 6)) plt.plot(simulated_data, label=f'SARIMA({p},o6guu0a,{q})({P},{D},{Q},{s})') plt.title('Simulated Time Series from SARIMA Model') plt.xlabel('Time') plt.ylabel('Value') plt.legend() plt.grid(True) plt.show()

bgZ28資訊網——每日最新資訊28at.com

recurrence = recurrence_plot(simulated_data, threshold=0.1)  plt.figure(figsize=(8, 8)) plt.imshow(recurrence, cmap='binary', origin='lower') plt.title('Recurrence Plot') plt.xlabel('Time') plt.ylabel('Time') plt.colorbar(label='Recurrence') plt.show()

bgZ28資訊網——每日最新資訊28at.com

混沌的數據

def logistic_map(x, r):    """Logistic map function."""    return r * x * (1 - x)  # Initialize parameters N = 500         # Number of data points r = 3.9         # Parameter r, set to a value that causes chaotic behavior x0 = np.random.rand() # Initial value  # Generate chaotic time series data chaotic_data = [x0] for _ in range(1, N):    x_next = logistic_map(chaotic_data[-1], r)    chaotic_data.append(x_next)  # Plot the chaotic time series plt.figure(figsize=(10, 6)) plt.plot(chaotic_data, label=f'Logistic Map (r={r})') plt.title('Chaotic Time Series') plt.xlabel('Time') plt.ylabel('Value') plt.legend() plt.grid(True) plt.show()

bgZ28資訊網——每日最新資訊28at.com

recurrence = recurrence_plot(chaotic_data, threshold=0.1)  plt.figure(figsize=(8, 8)) plt.imshow(recurrence, cmap='binary', origin='lower') plt.title('Recurrence Plot') plt.xlabel('Time') plt.ylabel('Time') plt.colorbar(label='Recurrence') plt.show()

bgZ28資訊網——每日最新資訊28at.com

標準普爾500指數

作為最后一個例子,讓我們看看從2013年10月28日至2023年10月27日的標準普爾500指數真實數據:bgZ28資訊網——每日最新資訊28at.com

import pandas as pd  df = pd.read_csv('standard_and_poors_500_idx.csv', parse_dates=True) df['Date'] = pd.to_datetime(df['Date']) df.set_index('Date', inplace = True) df.drop(columns = ['Open', 'High', 'Low'], inplace = True)  df.plot() plt.title('S&P 500 Index - 10/28/2013 to 10/27/2023') plt.ylabel('S&P 500 Index') plt.xlabel('Date');

bgZ28資訊網——每日最新資訊28at.com

recurrence = recurrence_plot(df['Close/Last'], threshold=10)  plt.figure(figsize=(8, 8)) plt.imshow(recurrence, cmap='binary', origin='lower') plt.title('Recurrence Plot') plt.xlabel('Time') plt.ylabel('Time') plt.colorbar(label='Recurrence') plt.show()

bgZ28資訊網——每日最新資訊28at.com

選擇合適的相似性閾值是 遞歸圖分析的一個關鍵步驟。較小的閾值會導致更多的重復模式,而較大的閾值會導致更少的重復模式。閾值的選擇通常需要根據數據的特性和分析目標進行調整。bgZ28資訊網——每日最新資訊28at.com

這里我們不得不調整閾值,最終確得到的結果為10,這樣可以獲得更大的對比度。上面的遞歸圖看起來很像隨機游走遞歸圖和無規則的混沌數據的混合體。bgZ28資訊網——每日最新資訊28at.com

總結

在本文中,我們介紹了遞歸圖以及如何使用Python創建遞歸圖。遞歸圖給了我們一種直觀表征時間序列圖的方法。遞歸圖是一種強大的工具,用于揭示時間序列中的結構和模式,特別適用于那些具有周期性、重復性或復雜結構的數據。通過可視化和特征提取,研究人員可以更好地理解時間序列數據并進行進一步的分析。bgZ28資訊網——每日最新資訊28at.com

從遞歸圖中可以提取各種特征,以用于進一步的分析。這些特征可以包括重復點的分布、Lempel-Ziv復雜度、最長對角線長度等。bgZ28資訊網——每日最新資訊28at.com

遞歸圖在多個領域中得到了廣泛應用,包括時間序列分析、振動分析、地震學、生態學、金融分析、生物醫學等。它可用于檢測周期性、異常事件、相位同步等。bgZ28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-20045-0.html使用遞歸圖 recurrence plot 表征時間序列

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 系統架構七個非功能性需求

下一篇: 線性回歸,核技巧和線性核

標簽:
  • 熱門焦點
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設置樣式。可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁&ldquo;充值中心&rdquo;入口上線了本機生活界面。壹覽商業發現,該界面目前主要
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就&ldquo;胡錫進炒股是否知道認真報道&rdquo;展開討論。有
  • 華為發布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發者大會2023(HDC.Together)大會上,HarmonyOS 4正式發布。自2019年發布以來,HarmonyOS一直以用戶為中心,經歷四年多的發展HarmonyOS已
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • 三星折疊屏手機去年銷售近1000萬臺 今年目標定為1500萬

    7月29日消息,三星率先發力可折疊手機市場,在全球市場已經取得了非常亮眼的成績,接下來會進一步鞏固和擴大這一優勢。三星在推出Galaxy Z Flip5和Galax
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創佳績。今年618期間,一加手機全渠道銷量同比增長362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購買

    2022年1月份在國際消費電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現在已經可以購買了,這款筆記本電腦被譽為世界上最薄的 14 英寸游戲筆
Top 主站蜘蛛池模板: 侯马市| 洮南市| 通州市| 廊坊市| 平乐县| 巴东县| 滨海县| 福贡县| 米泉市| 海淀区| 时尚| 黑龙江省| 崇阳县| 大港区| 桦南县| 佛教| 泽州县| 赤壁市| 新沂市| 方山县| 奉新县| 新昌县| 长宁区| 定兴县| 阿荣旗| 淮滨县| 临颍县| 饶平县| 石景山区| 嘉荫县| 寿光市| 思茅市| 东丽区| 道真| 镇巴县| 洪湖市| 民勤县| 阳山县| 中方县| 盐亭县| 二连浩特市|