如何以編程方式檢測數據系列的片段以適應不同的曲線?
是否有任何記錄的算法可以將給定數據集的部分分成不同的最佳擬合曲線?
例如,大多數人在查看此數據圖表時會很容易地將其分為 3 部分:正弦曲線段、線性段和反指數段。事實上,我用一個正弦波、一條線和一個簡單的指數公式製作了這個特殊的。
是否有現有的算法可以找到這樣的部分,然後可以分別將其擬合到各種曲線/直線上,以形成一種數據子集最佳擬合的複合系列?
請注意,儘管該示例的段的末端幾乎對齊,但不一定是這種情況;分段截止時的值也可能會突然波動。也許這些情況會更容易被發現。
更新:這是一小部分真實數據的圖像:
更新 2:這是一組異常小的真實數據(只有 509 個數據點):
4,53,53,53,53,58,56,52,49,52,56,51,44,39,39,39,37,33,27,21,18,12,19,30,45,66,92,118,135,148,153,160,168,174,181,187,191,190,191,192,194,194,194,193,193,201,200,199,199,199,197,193,190,187,176,162,157,154,144,126,110,87,74,57,46,44,51,60,65,66,90,106,99,87,84,85,83,91,95,99,101,102,102,103,105,110,107,108,135,171,171,141,120,78,42,44,52,54,103,128,82,103,46,27,73,123,125,77,24,30,27,36,42,49,32,55,20,16,21,31,78,140,116,99,58,139,70,22,44,7,48,32,18,16,25,16,17,35,29,11,13,8,8,18,14,0,10,18,2,1,4,0,61,87,91,2,0,2,9,40,21,2,14,5,9,49,116,100,114,115,62,41,119,191,190,164,156,109,37,15,0,5,1,0,0,2,4,2,0,48,129,168,112,98,95,119,125,191,241,209,229,230,231,246,249,240,99,32,0,0,2,13,28,39,15,15,19,31,47,61,92,91,99,108,114,118,121,125,129,129,125,125,131,135,138,142,147,141,149,153,152,153,159,161,158,158,162,167,171,173,174,176,178,184,190,190,185,190,200,199,189,196,197,197,196,199,200,195,187,191,192,190,186,184,184,179,173,171,170,164,156,155,156,151,141,141,139,143,143,140,146,145,130,126,127,127,125,122,122,127,131,134,140,150,160,166,175,192,208,243,251,255,255,255,249,221,190,181,181,181,181,179,173,165,159,153,162,169,165,154,144,142,145,136,134,131,130,128,124,119,115,103,78,54,40,25,8,2,7,12,25,13,22,15,33,34,57,71,48,16,1,2,0,2,21,112,174,191,190,152,153,161,159,153,71,16,28,3,4,0,14,26,30,26,15,12,19,21,18,53,89,125,139,140,142,141,135,136,140,159,170,173,176,184,180,170,167,168,170,167,161,163,170,164,161,160,163,163,160,160,163,169,166,161,156,155,156,158,160,150,149,149,151,154,156,156,156,151,149,150,153,154,151,146,144,149,150,151,152,151,150,148,147,144,141,137,133,130,128,128,128,136,143,159,180,196,205,212,218,222,225,227,227,225,223,222,222,221,220,220,220,220,221,222,223,221,223,225,226,227,228,232,235,234,236,238,240,241,240,239,237,238,240,240,237,236,239,238,235
這是圖表,一些已知的現實世界元素邊緣的****近似位置用虛線標記,這是我們通常不會擁有的奢侈品:
然而,我們確實擁有的一種奢侈是事後諸葛亮:在我的案例中,數據不是時間序列,而是與空間相關的;一次分析整個數據集(通常是 5000 - 15000 個數據點)才有意義,而不是持續分析。
我對這個問題的解釋是,OP 正在尋找適合所提供示例形狀的方法,而不是 HAC 殘差。此外,需要不需要大量人工或分析師干預的自動化例程。Box-Jenkins 可能不合適,儘管他們在這個線程中強調,因為他們確實需要大量的分析師參與。
R 模塊用於這種類型的非基於矩的模式匹配。排列分佈聚類是由馬克斯普朗克研究所的科學家開發的一種模式匹配技術,符合您概述的標準。它的應用是時間序列數據,但不限於此。這是已開發的 R 模塊的引用:
pdc:Andreas Brandmaier 的基於復雜性的時間序列聚類的 R 包
除了 PDC,還有機器學習,由加州大學歐文分校的 Eamon Keogh 開發的 iSax 例程也值得比較。
最後,還有這篇關於數據粉碎的論文:Uncovering Lurking Order in Data查托帕迪耶和利普森。除了聰明的標題之外,還有一個嚴肅的目的在起作用。以下是摘要:“從自動語音識別到發現不尋常的星星,幾乎所有自動發現任務的基礎是能夠相互比較和對比數據流,識別連接和發現異常值。然而,儘管數據很普遍,但自動化方法沒有跟上步伐。一個關鍵瓶頸是當今大多數數據比較算法依賴於人類專家來指定數據的哪些“特徵”與比較相關。在這裡,我們提出了一種估計任意來源之間相似性的新原則數據流,既不使用領域知識也不使用學習。我們展示了將這一原則應用於分析來自許多現實世界具有挑戰性問題的數據,包括消除與癲癇發作有關的腦電圖模式的歧義,從心音記錄中檢測異常心臟活動以及從原始光度法對天文物體進行分類。在所有這些情況下,在沒有獲得任何領域知識的情況下,我們展示了與領域專家設計的專業算法和啟發式算法所達到的準確性相當的性能。我們建議,數據粉碎原則可能會為理解日益複雜的觀察打開大門,尤其是當專家不知道該尋找什麼時。” 在所有這些情況下,在沒有獲得任何領域知識的情況下,我們展示了與領域專家設計的專業算法和啟發式算法所達到的準確性相當的性能。我們建議,數據粉碎原則可能會為理解日益複雜的觀察打開大門,尤其是當專家不知道該尋找什麼時。” 在所有這些情況下,在沒有獲得任何領域知識的情況下,我們展示了與領域專家設計的專業算法和啟發式算法所達到的準確性相當的性能。我們建議,數據粉碎原則可能會為理解日益複雜的觀察打開大門,尤其是當專家不知道該尋找什麼時。”
這種方法遠遠超出了曲線擬合。值得一試。