AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

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

時間序列結構變化分析:Python實現時間序列變化點檢測

來源: 責編: 時間:2024-09-10 09:45:54 85觀看
導讀平穩性是時間序列分析與預測的核心概念。在平穩條件下,時間序列的統計特性(如均值)在時間維度上保持不變,僅存在隨機波動。但是實際數據集中很少觀察到完全的平穩性。時間序列通常會經歷結構性斷裂或變化。這些變化會引入

平穩性是時間序列分析與預測的核心概念。在平穩條件下,時間序列的統計特性(如均值)在時間維度上保持不變,僅存在隨機波動。AgW28資訊網——每日最新資訊28at.com

但是實際數據集中很少觀察到完全的平穩性。時間序列通常會經歷結構性斷裂或變化。這些變化會引入非平穩性,從而改變時間序列的整體分布,這些標志著變化開始的時間點被稱為變化點。AgW28資訊網——每日最新資訊28at.com

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

在時間序列分析和預測中,準確檢測結構變化至關重要。新出現的分布模式往往會導致歷史數據失去代表性,進而影響基于這些數據訓練的模型的有效性。因此需要采用最新數據更新模型或采取其他適當策略。對于歷史數據中的變化點,可以通過特征工程方法(如干預分析)進行處理。AgW28資訊網——每日最新資訊28at.com

但需要注意的是,結構變化與異常值是兩個不同的概念。異常值是指與時間序列的基本結構或分布所定義的正常行為顯著偏離的觀測值。而變化點則是指時間序列的整體結構發生轉變,導致分布特性的改變。AgW28資訊網——每日最新資訊28at.com

接下來,我們首先詳細探討不同類型的結構變化。AgW28資訊網——每日最新資訊28at.com

結構變化的類型

結構變化可以分為多種類型。深入理解這些變化的性質對于選擇適當的處理策略至關重要。AgW28資訊網——每日最新資訊28at.com

水平變化

水平變化主要體現在序列的均值或方差上。均值的變化表現為平均水平的移動,可以是永久性的,也可以是暫時性的。AgW28資訊網——每日最新資訊28at.com

永久性水平移動是指序列的平均值永久性地轉移到一個新的水平。例如當一家零售企業開設新店時,銷售時間序列可能會轉移到一個更高的水平,反映出擴大的客戶基礎。AgW28資訊網——每日最新資訊28at.com

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

暫時性水平移動是指平均值在一段時間后恢復到原有水平。例如制造工廠的一臺機器因維修而臨時停機,生產時間序列在維修期間會出現暫時性的低值。一旦機器恢復運行,生產水平預計會回到正常狀態。AgW28資訊網——每日最新資訊28at.com

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

方差變化

方差的變化會導致時間序列離散程度的增加或減少,具有非恒定方差的時間序列通常被稱為異方差序列。方差的變化同樣可以是永久性的或暫時性的。AgW28資訊網——每日最新資訊28at.com

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

方差的周期性變化是波動聚類現象的典型特征。波動聚類指的是時間序列呈現出低方差期和高方差期交替出現的模式。換言之,大(?。┓茸兓鶗B續出現。AgW28資訊網——每日最新資訊28at.com

以下是表示每小時風速變化的時間序列示例,展示了波動聚類現象:AgW28資訊網——每日最新資訊28at.com

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

具有波動聚類特征的時間序列示例。AgW28資訊網——每日最新資訊28at.com

波動聚類在氣象學(如風速分析)和金融學(如資產價格研究)等領域中較為常見。AgW28資訊網——每日最新資訊28at.com

基于Python的變化點檢測代碼實現

變化點檢測算法旨在精確識別時間序列分布發生顯著變化的時間點。本節將詳細探討多種變化點檢測方法的實際應用。AgW28資訊網——每日最新資訊28at.com

我們從 datasetsforecast 庫中加載一個示例時間序列數據:AgW28資訊網——每日最新資訊28at.com

from datasetsforecast.m4 import M4    dataset, *_ = M4.load('./data', 'Monthly')    series = dataset.query(f'unique_id=="M1430"').reset_index(drop=True)   series['time'] = pd.date_range(end='2023-12-01', periods=series.shape[0], freq='M')

此數據集是非常有名的銷量預測比賽M4AgW28資訊網——每日最新資訊28at.com

利用kats進行變化點檢測

kats是Meta開發的一個功能強大的時間序列分析庫。它提供了多種變化檢測方法,包括CUSUM(累積和)和貝葉斯在線變化點檢測等。AgW28資訊網——每日最新資訊28at.com

kats要求使用特定的數據結構,可以按以下方式進行設置:AgW28資訊網——每日最新資訊28at.com

from kats.consts import TimeSeriesData    ts = TimeSeriesData(df=series[['time', 'y']])

CUSUM(累積和)是一種廣泛應用于檢測時間序列均值變化的方法。其原理是計算相對于預期值的偏差累積和。如果序列的均值保持穩定,累積和將呈現圍繞零的隨機波動。累積和的持續正向(或負向)變化則表明均值發生了上升(或下降)移動。AgW28資訊網——每日最新資訊28at.com

以下代碼展示了如何使用kats中的CUSUM方法:AgW28資訊網——每日最新資訊28at.com

from kats.tests.detectors.test_cusum_detection import CUSUMDetector    model = CUSUMDetector(ts)   change_points = model.detector(direction=['decrease', 'increase'])   model.plot(change_points)

detector方法的 direction 參數用于指定需要監測的變化方向。在本例中我們同時監測序列的上升和下降變化。AgW28資訊網——每日最新資訊28at.com

CUSUM方法實現了對變化點的準確檢測:AgW28資訊網——每日最新資訊28at.com

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

另一種與CUSUM相似的方法是在移動平均的基礎上計算z分數。kats中的 RobustStatDetector 就采用了這種方法:AgW28資訊網——每日最新資訊28at.com

from kats.tests.detectors.test_robust_stat_detection import RobustStatDetector    model = RobustStatDetector(ts)   change_points = model.detector(p_value_cutoff=0.001, comparison_window=12)   model.plot(change_points)

在這個方法中,我們將p值閾值設置為0.001,窗口大小設置為12(對應于一年的數據,因為該序列是按月收集的)。AgW28資訊網——每日最新資訊28at.com

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

使用kats中的RobustStatDetector檢測變化點。RobustStatDetector在這個例子中檢測到了幾個相互靠近的變化點。AgW28資訊網——每日最新資訊28at.com

利用ruptures進行變化點檢測

ruptures庫同樣提供了多種變化點檢測算法的實現,包括PELT(修剪精確線性時間)、基于核的算法和動態規劃算法等。AgW28資訊網——每日最新資訊28at.com

以下是使用PELT算法檢測均值變化的示例:AgW28資訊網——每日最新資訊28at.com

import ruptures as rpt    # 將時間序列轉換為numpy數組   signal = series['y'].values    # 擬合PELT模型   model = rpt.Pelt(model="rbf").fit(signal)    # 獲取變化點   result = model.predict(pen=10)

PELT算法的核心思想是將時間序列分割成具有不同統計特性(如均值)的多個片段。它通過最小化一個用戶定義的成本函數來實現這一目標,該函數的具體形式取決于需要檢測的變化類型。在這個例子中我們使用了基于徑向基函數的模型(model="rbf")。AgW28資訊網——每日最新資訊28at.com

以下是PELT模型的檢測結果:AgW28資訊網——每日最新資訊28at.com

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

變化點的處理策略

在識別出變化點后,下一步就是采取適當的處理措施。以下是幾種常用的處理方法:AgW28資訊網——每日最新資訊28at.com

差分法

對時間序列進行差分是處理均值變化的一種有效方法。這種技術通過計算連續觀測值之間的差值來穩定序列的平均水平。AgW28資訊網——每日最新資訊28at.com

以下是示例序列的一階差分結果:AgW28資訊網——每日最新資訊28at.com

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

差分法能夠有效消除許多類型的非平穩性,使得后續的分析和建模工作更加可靠。AgW28資訊網——每日最新資訊28at.com

虛擬變量法

另一種處理變化點的方法是引入虛擬變量。這種方法在變化點之前賦值為0,之后賦值為1,從而在模型中顯式地表示結構變化。AgW28資訊網——每日最新資訊28at.com

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

虛擬變量法允許模型捕捉變化前后的不同行為,提高了模型的靈活性和準確性。AgW28資訊網——每日最新資訊28at.com

區制轉換模型

對于暫時性變化,區制轉換模型(regime-switching)是一種較為復雜但有效的建模方法。這類模型能夠根據當前的狀態或區制采用不同的參數設置。AgW28資訊網——每日最新資訊28at.com

閾值自回歸(TAR)模型是區制轉換模型的一個典型例子。TAR模型對不同范圍的時間序列值采用不同的參數,從而能夠捕捉復雜的非線性動態。AgW28資訊網——每日最新資訊28at.com

總結結論

通過本文的分析,我們可以得出以下幾點重要結論:AgW28資訊網——每日最新資訊28at.com

  1. 時間序列常常受到結構變化的影響,這些變化會顯著改變序列的統計分布特性。
  2. 結構變化可能發生在均值或方差上,并且可能是永久性的或暫時性的。準確識別變化的性質對于選擇適當的處理方法至關重要。
  3. 現代統計和機器學習提供了多種變化點檢測方法,如CUSUM和PELT算法。這些方法在kats和ruptures等Python庫中都有實現,為實踐應用提供了便利。
  4. 對于檢測到的變化點,可以采用多種處理策略。差分法和引入虛擬變量是處理均值變化的常用方法,而對于更復雜的情況,可以考慮使用區制轉換模型。
  5. 數據預處理在處理結構變化中扮演著關鍵角色。合適的預處理不僅可以穩定序列的方差,還能為后續的建模工作奠定基礎。

通過深入理解時間序列的結構變化,并靈活運用各種檢測和處理方法,分析人員可以顯著提高時間序列模型的準確性和可靠性,為決策提供更有力的支持。AgW28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-112713-0.html時間序列結構變化分析:Python實現時間序列變化點檢測

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

上一篇: 面試官:如何實現線程池任務編排?

下一篇: SpringBoot異步接口實現:提高系統的吞吐量

標簽:
  • 熱門焦點
Top