當前位置:股票大全官網 - 股票投資 - 時間序列分析方法

時間序列分析方法

時間序列是指在連續時間內測量的壹組數據,它的數學定義是壹組向量x(t),t=0,1,2,3,...,其中t代表數據所在的時間點,x(t)是壹組按時間順序排列的隨機變量(實測)。包含單個變量的時間序列稱為單變量時間序列,包含多個變量的時間序列稱為多變量時間序列。

時間序列涉及到很多方面,如天氣預報、每日和每小時的氣溫、股票走勢等。,在商業中有許多應用,例如:

接下來,我們將使用壹個飛行數據來說明如何使用現有的工具來預測時間序列數據。有三個常用的軟件包來處理時間序列:

基於AR和MA的方法壹般都需要進行數據預處理,因此本文分為三個部分:

簡單的初步處理和可視化可以幫助我們有效快速地了解數據的分布(以及時間序列的趨勢)。

觀察數據的頻率直方圖和密度分布,以深入了解數據結構,如下圖所示:

時間序列由statsmodels分解,以了解時間序列數據的各個部分,每個部分代表壹個模式類別。利用statsmodels序列分解可以看到數據的主要趨勢分量、季節分量和殘差分量,與我們上面的推測壹致。

如果壹個時間序列的均值和方差隨時間保持穩定,就可以說這個時間序列是穩定的。

大多數時間序列模型都是在平穩序列的前提下建模的。造成這種情況的主要原因是壹個序列有很多(復雜的)非平穩方式,但只有壹個平穩性,比較容易分析和建模。

直觀來看,如果壹個時間序列在某個時間序列中有特定的行為,那麽它很可能在未來也有同樣的行為。比如已經觀測了壹周太陽六點鐘升起,那麽可以推斷明天太陽也是六點鐘升起,誤差很小。

而且與非平穩序列相比,平穩序列相關的理論更加成熟,也更容易實現。

壹般來說,序列的平穩性可以用下列方法來檢驗:

如果時間序列是平穩的,那麽在ACF/PACF中觀測數據和先前數據點之間的相關性將急劇下降。

下圖中的圓錐形陰影是置信區間,區間外的數據點表示它與觀測數據本身有很強的相關性,並不是來自統計波動。

PACF在計算X(t)和X(t-h)的相關性時,把所有數據點對X(t-h,t)的影響都挖空了,反映了X(t)和X(t-h)的真實相關性(直接相關性)。

從下圖可以看出,數據點的相關性並沒有急劇下降,所以序列是非平穩的。

如果序列是平穩的,其移動平均值/方差將隨時間保持穩定。

但是從下圖可以看出,隨著時間的推移,均值呈現明顯的上升趨勢,方差也呈現波動上升的趨勢,所以序列是非平穩的。

壹般來說,如果p值小於0.05,我們認為它是顯著的,可以拒絕零假設。而這裏的p值0.99顯然是非顯著的,所以接受零假設,序列是非平穩的。

從上面的平穩性檢驗可以知道,時間序列是非平穩的。此外,通過上面1.3部分的序列分解,我們還可以看到,該序列可以分解為三個部分:

我們可以利用數據變換對那些較大的數據進行更大的懲罰,比如取對數、平方根、立方根、差等。,以達到穩定序列的目的。

移動平均後,數據失去了原有的特征(波動上升),所以丟失的信息太多,肯定不可能作為後續模型的輸入。

差分法是非平穩序列轉化為平穩序列的壹種常用方法。ARIMA的‘I’指的是差分,所以ARIMA可以處理非平穩序列,相當於通過差分將非平穩序列轉化為平穩序列,然後用ARMA建模。

壹般的區別是從某個時間值減去前壹個時間值得到壹個新的序列。但是這裏有壹點不同。我們用當前時間值減去相應時間的移動平均值。

我們來看看剛才差的結果是什麽。

讓我們簡要總結壹下我們剛剛采取的步驟:

通過以上三個步驟,我們成功地將壹個非平穩序列轉化為平穩序列。上面用的是最簡單的均線。讓我們試試指數移動平均線。

以上是最常用的指數移動平均線的定義,但是熊貓實現的指數移動平均線好像和這個有點不壹樣,詳細的區別需要在熊貓文檔裏查壹下。

指數移動平均線的效果看起來也很差。讓我們用差值+指數移動平均線再試壹次。

以上,我們通過取log+(指數)移動平均+差分,成功地將非平穩序列轉化為平穩序列。

讓我們看看變換後的平穩序列的組成部分是什麽樣的。但是這裏我們用最簡單的區別。當前時刻的值等於原序列中當前時刻的值減去原序列中前壹時刻的值,即x'(t) = x(t)-x(t-1)。

看起來相當不錯。它看起來像壹個平滑的序列。但是讓我們來看看。

可以看出,趨勢部分已經基本去除,但季節性部分仍然明顯,ARIMA無法對包含季節性的序列進行建模和分析。

在開始時,我們提到這三個軟件包都可以對時間序列進行建模。

為了簡單起見,這裏pmdarima和statsmodels.tsa直接使用了最好的建模方法,即Sarima,它在ARIMA的基礎上增加了附加函數,可以擬合季節部分和附加數據。

在使用ARIMA(自回歸綜合移動平均線)模型之前,讓我們簡單了解壹下這個模型。該模型實際上可以包括三個部分,對應於三個參數(p,d,q):

因此,ARIMA模型將AR模型和MA模型結合起來,再加上兩者的差異,克服了不能處理非平穩序列的問題。但需要註意的是,還是無法擬合季節性。

讓我們開始用ARIMA來擬合數據。

(1)分為訓練集和驗證集。需要註意的是,這裏建模用的是原始數據,不是轉換後的數據。

(2)ARIMA壹階差分建模與預測

(3)減少差異結果。

首先手動選擇幾組參數,然後搜索最佳值。需要註意的是,為了避免過擬合,這裏的階數壹般不建議太大。

想象壹下,看看結果是什麽。

(6)最後,我們可以對擬合的模型進行診斷,看看結果如何。

我們主要關心的是確保模型的剩余部分是不相關的,並且具有零均值正態分布。如果季節性ARIMA(SARIMA)不符合這些屬性,則表明它可以進壹步改進。模型診斷根據以下幾個方面確定殘差是否符合正態分布:

同樣,為了方便起見,我們使用auto _ ARIMA(pmdarima中的壹種方法,可以自動搜索最佳參數)來建模。

壹般來說,在現實生活和生產中,除了季節性物品、趨勢性物品和剩余物品之外,通常還有節假日。因此,在prophet算法中,作者同時考慮了上述四項,即:

在上面的公式中,

關於Prophet算法更詳細的內容,請參考《臉書時間序列預測的Prophet算法研究》。

Prophet算法就是將這些項進行擬合,然後相加,得到時間序列的預測值。

Prophet提供直觀且易於調整的參數:

Prophet對輸入數據有要求:

有關使用Prophet的示例,請參考Prophet示例筆記本。

下面使用Prophet來處理數據。

參考:

臉書時間序列預測算法Prophet的研究

先知示例筆記本

用於選擇最佳模型的auto_arima文檔

數據分析技術:用於時間序列分析的AR/MA/ARMA/ARIMA模型系統。

/advaitsave/時間序列預測簡介-Python

時間序列分析

我的第壹個時間序列比較(補充先知)

先知官方文檔:https://Facebook incubator . github . io。