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

當(dāng)前位置:首頁 > 科技  > 軟件

時間序列結(jié)構(gòu)變化分析:Python實(shí)現(xiàn)時間序列變化點(diǎn)檢測

來源: 責(zé)編: 時間:2024-09-10 09:45:54 126觀看
導(dǎo)讀平穩(wěn)性是時間序列分析與預(yù)測的核心概念。在平穩(wěn)條件下,時間序列的統(tǒng)計(jì)特性(如均值)在時間維度上保持不變,僅存在隨機(jī)波動。但是實(shí)際數(shù)據(jù)集中很少觀察到完全的平穩(wěn)性。時間序列通常會經(jīng)歷結(jié)構(gòu)性斷裂或變化。這些變化會引入

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

但是實(shí)際數(shù)據(jù)集中很少觀察到完全的平穩(wěn)性。時間序列通常會經(jīng)歷結(jié)構(gòu)性斷裂或變化。這些變化會引入非平穩(wěn)性,從而改變時間序列的整體分布,這些標(biāo)志著變化開始的時間點(diǎn)被稱為變化點(diǎn)。uJu28資訊網(wǎng)——每日最新資訊28at.com

uJu28資訊網(wǎng)——每日最新資訊28at.com

在時間序列分析和預(yù)測中,準(zhǔn)確檢測結(jié)構(gòu)變化至關(guān)重要。新出現(xiàn)的分布模式往往會導(dǎo)致歷史數(shù)據(jù)失去代表性,進(jìn)而影響基于這些數(shù)據(jù)訓(xùn)練的模型的有效性。因此需要采用最新數(shù)據(jù)更新模型或采取其他適當(dāng)策略。對于歷史數(shù)據(jù)中的變化點(diǎn),可以通過特征工程方法(如干預(yù)分析)進(jìn)行處理。uJu28資訊網(wǎng)——每日最新資訊28at.com

但需要注意的是,結(jié)構(gòu)變化與異常值是兩個不同的概念。異常值是指與時間序列的基本結(jié)構(gòu)或分布所定義的正常行為顯著偏離的觀測值。而變化點(diǎn)則是指時間序列的整體結(jié)構(gòu)發(fā)生轉(zhuǎn)變,導(dǎo)致分布特性的改變。uJu28資訊網(wǎng)——每日最新資訊28at.com

接下來,我們首先詳細(xì)探討不同類型的結(jié)構(gòu)變化。uJu28資訊網(wǎng)——每日最新資訊28at.com

結(jié)構(gòu)變化的類型

結(jié)構(gòu)變化可以分為多種類型。深入理解這些變化的性質(zhì)對于選擇適當(dāng)?shù)奶幚聿呗灾陵P(guān)重要。uJu28資訊網(wǎng)——每日最新資訊28at.com

水平變化

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

永久性水平移動是指序列的平均值永久性地轉(zhuǎn)移到一個新的水平。例如當(dāng)一家零售企業(yè)開設(shè)新店時,銷售時間序列可能會轉(zhuǎn)移到一個更高的水平,反映出擴(kuò)大的客戶基礎(chǔ)。uJu28資訊網(wǎng)——每日最新資訊28at.com

uJu28資訊網(wǎng)——每日最新資訊28at.com

暫時性水平移動是指平均值在一段時間后恢復(fù)到原有水平。例如制造工廠的一臺機(jī)器因維修而臨時停機(jī),生產(chǎn)時間序列在維修期間會出現(xiàn)暫時性的低值。一旦機(jī)器恢復(fù)運(yùn)行,生產(chǎn)水平預(yù)計(jì)會回到正常狀態(tài)。uJu28資訊網(wǎng)——每日最新資訊28at.com

uJu28資訊網(wǎng)——每日最新資訊28at.com

方差變化

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

uJu28資訊網(wǎng)——每日最新資訊28at.com

方差的周期性變化是波動聚類現(xiàn)象的典型特征。波動聚類指的是時間序列呈現(xiàn)出低方差期和高方差期交替出現(xiàn)的模式。換言之,大(小)幅度變化往往會連續(xù)出現(xiàn)。uJu28資訊網(wǎng)——每日最新資訊28at.com

以下是表示每小時風(fēng)速變化的時間序列示例,展示了波動聚類現(xiàn)象:uJu28資訊網(wǎng)——每日最新資訊28at.com

uJu28資訊網(wǎng)——每日最新資訊28at.com

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

波動聚類在氣象學(xué)(如風(fēng)速分析)和金融學(xué)(如資產(chǎn)價格研究)等領(lǐng)域中較為常見。uJu28資訊網(wǎng)——每日最新資訊28at.com

基于Python的變化點(diǎn)檢測代碼實(shí)現(xiàn)

變化點(diǎn)檢測算法旨在精確識別時間序列分布發(fā)生顯著變化的時間點(diǎn)。本節(jié)將詳細(xì)探討多種變化點(diǎn)檢測方法的實(shí)際應(yīng)用。uJu28資訊網(wǎng)——每日最新資訊28at.com

我們從 datasetsforecast 庫中加載一個示例時間序列數(shù)據(jù):uJu28資訊網(wǎng)——每日最新資訊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')

此數(shù)據(jù)集是非常有名的銷量預(yù)測比賽M4uJu28資訊網(wǎng)——每日最新資訊28at.com

利用kats進(jìn)行變化點(diǎn)檢測

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

kats要求使用特定的數(shù)據(jù)結(jié)構(gòu),可以按以下方式進(jìn)行設(shè)置:uJu28資訊網(wǎng)——每日最新資訊28at.com

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

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

以下代碼展示了如何使用kats中的CUSUM方法:uJu28資訊網(wǎng)——每日最新資訊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 參數(shù)用于指定需要監(jiān)測的變化方向。在本例中我們同時監(jiān)測序列的上升和下降變化。uJu28資訊網(wǎng)——每日最新資訊28at.com

CUSUM方法實(shí)現(xiàn)了對變化點(diǎn)的準(zhǔn)確檢測:uJu28資訊網(wǎng)——每日最新資訊28at.com

uJu28資訊網(wǎng)——每日最新資訊28at.com

另一種與CUSUM相似的方法是在移動平均的基礎(chǔ)上計(jì)算z分?jǐn)?shù)。kats中的 RobustStatDetector 就采用了這種方法:uJu28資訊網(wǎng)——每日最新資訊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值閾值設(shè)置為0.001,窗口大小設(shè)置為12(對應(yīng)于一年的數(shù)據(jù),因?yàn)樵撔蛄惺前丛率占模?/span>uJu28資訊網(wǎng)——每日最新資訊28at.com

uJu28資訊網(wǎng)——每日最新資訊28at.com

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

利用ruptures進(jìn)行變化點(diǎn)檢測

ruptures庫同樣提供了多種變化點(diǎn)檢測算法的實(shí)現(xiàn),包括PELT(修剪精確線性時間)、基于核的算法和動態(tài)規(guī)劃算法等。uJu28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

以下是PELT模型的檢測結(jié)果:uJu28資訊網(wǎng)——每日最新資訊28at.com

圖片uJu28資訊網(wǎng)——每日最新資訊28at.com

變化點(diǎn)的處理策略

在識別出變化點(diǎn)后,下一步就是采取適當(dāng)?shù)奶幚泶胧R韵率菐追N常用的處理方法:uJu28資訊網(wǎng)——每日最新資訊28at.com

差分法

對時間序列進(jìn)行差分是處理均值變化的一種有效方法。這種技術(shù)通過計(jì)算連續(xù)觀測值之間的差值來穩(wěn)定序列的平均水平。uJu28資訊網(wǎng)——每日最新資訊28at.com

以下是示例序列的一階差分結(jié)果:uJu28資訊網(wǎng)——每日最新資訊28at.com

uJu28資訊網(wǎng)——每日最新資訊28at.com

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

虛擬變量法

另一種處理變化點(diǎn)的方法是引入虛擬變量。這種方法在變化點(diǎn)之前賦值為0,之后賦值為1,從而在模型中顯式地表示結(jié)構(gòu)變化。uJu28資訊網(wǎng)——每日最新資訊28at.com

圖片uJu28資訊網(wǎng)——每日最新資訊28at.com

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

區(qū)制轉(zhuǎn)換模型

對于暫時性變化,區(qū)制轉(zhuǎn)換模型(regime-switching)是一種較為復(fù)雜但有效的建模方法。這類模型能夠根據(jù)當(dāng)前的狀態(tài)或區(qū)制采用不同的參數(shù)設(shè)置。uJu28資訊網(wǎng)——每日最新資訊28at.com

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

總結(jié)結(jié)論

通過本文的分析,我們可以得出以下幾點(diǎn)重要結(jié)論:uJu28資訊網(wǎng)——每日最新資訊28at.com

  1. 時間序列常常受到結(jié)構(gòu)變化的影響,這些變化會顯著改變序列的統(tǒng)計(jì)分布特性。
  2. 結(jié)構(gòu)變化可能發(fā)生在均值或方差上,并且可能是永久性的或暫時性的。準(zhǔn)確識別變化的性質(zhì)對于選擇適當(dāng)?shù)奶幚矸椒ㄖ陵P(guān)重要。
  3. 現(xiàn)代統(tǒng)計(jì)和機(jī)器學(xué)習(xí)提供了多種變化點(diǎn)檢測方法,如CUSUM和PELT算法。這些方法在kats和ruptures等Python庫中都有實(shí)現(xiàn),為實(shí)踐應(yīng)用提供了便利。
  4. 對于檢測到的變化點(diǎn),可以采用多種處理策略。差分法和引入虛擬變量是處理均值變化的常用方法,而對于更復(fù)雜的情況,可以考慮使用區(qū)制轉(zhuǎn)換模型。
  5. 數(shù)據(jù)預(yù)處理在處理結(jié)構(gòu)變化中扮演著關(guān)鍵角色。合適的預(yù)處理不僅可以穩(wěn)定序列的方差,還能為后續(xù)的建模工作奠定基礎(chǔ)。

通過深入理解時間序列的結(jié)構(gòu)變化,并靈活運(yùn)用各種檢測和處理方法,分析人員可以顯著提高時間序列模型的準(zhǔn)確性和可靠性,為決策提供更有力的支持。uJu28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-112713-0.html時間序列結(jié)構(gòu)變化分析:Python實(shí)現(xiàn)時間序列變化點(diǎn)檢測

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

上一篇: 面試官:如何實(shí)現(xiàn)線程池任務(wù)編排?

下一篇: SpringBoot異步接口實(shí)現(xiàn):提高系統(tǒng)的吞吐量

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 江源县| 黄龙县| 合水县| 高密市| 西平县| 深水埗区| 太仆寺旗| 桂平市| 平湖市| 丰都县| 镇坪县| 石家庄市| 墨竹工卡县| 满城县| 昭觉县| 陵水| 余姚市| 安庆市| 田林县| 汨罗市| 习水县| 梓潼县| 通渭县| 九龙县| 游戏| 轮台县| 云阳县| 涡阳县| 额敏县| 青神县| 邵东县| 阳曲县| 临清市| 合肥市| 天水市| 青州市| 大荔县| 阜新| 汨罗市| 罗甸县| 西贡区|