<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 如何用 ARCH 和 GARCH 模擬波動率進行時間序列預測 > 原文: [https://machinelearningmastery.com/develop-arch-and-garch-models-for-time-series-forecasting-in-python/](https://machinelearningmastery.com/develop-arch-and-garch-models-for-time-series-forecasting-in-python/) 當使用 ARIMA 等經典方法對時間序列建模時,方差或波動率隨時間的變化可能會導致問題。 ARCH 或自回歸條件異方差性方法提供了一種模擬時間序列變化的方法,該時間序列是時間相關的,例如增加或減少波動率。這種方法的擴展名為 GARCH 或廣義自回歸條件異方差,允許該方法支持時間相關波動率的變化,例如增加和減少同一系列中的波動率。 在本教程中,您將發現 ARCH 和 GARCH 模型,用于預測時間序列的方差。 完成本教程后,您將了解: * 時間序列中的方差問題以及 ARCH 和 GARCH 模型的需求。 * 如何配置 ARCH 和 GARCH 模型。 * 如何在 Python 中實現 ARCH 和 GARCH 模型。 讓我們開始吧。 ![How to Develop ARCH and GARCH Models for Time Series Forecasting in Python](https://img.kancloud.cn/b1/4e/b14e83d91a06bb8b1be6ce72531f9f25_640x427.jpg) 如何開發用于 Python 時間序列預測的 ARCH 和 GARCH 模型 照片由 [Murray Foubister](https://www.flickr.com/photos/mfoubister/28627606528/) ,保留一些權利。 ## 教程概述 本教程分為五個部分;他們是: 1. 方差問題 2. 什么是 ARCH 模型? 3. 什么是 GARCH 模型? 4. 如何配置 ARCH 和 GARCH 模型 5. Python 中的 ARCH 和 GARCH 模型 ## 方差問題 可以針對單變量時間序列數據開發自回歸模型,該數據是靜止的(AR),具有趨勢(ARIMA),并且具有季節性成分(SARIMA)。 這些自回歸模型不建模的單變量時間序列的一個方面是方差隨時間的變化。 經典地,方差的適度變化的時間序列有時可以使用功率變換來調整,例如通過采用 [Log 或使用 Box-Cox 變換](https://machinelearningmastery.com/power-transform-time-series-forecast-data-python/)。 有一些時間序列,方差隨時間變化一致。在金融領域的時間序列的背景下,這將被稱為增加和減少波動率。 在方差以系統方式增加的時間序列中,例如增加趨勢,該系列的這種性質稱為[異方差性](https://en.wikipedia.org/wiki/Heteroscedasticity)。這是統計數據中的一個奇特的詞匯,意味著整個系列的變化或不等方差。 如果方差的變化可以隨時間相關,則可以使用自回歸過程(例如 ARCH)對其進行建模。 ## 什么是 ARCH 模型? [自回歸條件異方差性](https://en.wikipedia.org/wiki/Autoregressive_conditional_heteroskedasticity)或 ARCH,是一種明確模擬時間序列中隨時間變化的方法。 具體地,ARCH 方法將時間步長的方差建模為來自平均過程(例如,零均值)的殘差的函數。 > Engle(1982)引入的 ARCH 過程明確地認識到無條件和條件方差之間的差異,允許后者隨著時間的推移而變化,作為過去錯誤的函數。 - [廣義自回歸條件異方差](https://www.sciencedirect.com/science/article/pii/0304407686900631),1986。 必須指定滯后參數以定義要包括在模型中的先前殘留錯誤的數量。使用 GARCH 模型的符號(稍后討論),我們可以將此參數稱為“ _q_ ”。最初,這個參數被稱為“ _p_ ”,在本教程后面使用的 arch Python 包中也被稱為“ _p_ ”。 * **q** :包含在 ARCH 模型中的滯后平方殘差的數量。 一個普遍接受的 ARCH 模型的表示法是用 q 參數 ARCH(q)指定 ARCH()函數;例如,ARCH(1)將是一階 ARCH 模型。 該方法期望該系列是固定的,而不是方差的變化,這意味著它沒有趨勢或季節性成分。 ARCH 模型用于預測未來時間步的方差。 > [ARCH]是平均零,連續不相關的過程,具有以過去為條件的非常數方差,但是具有恒定的無條件方差。對于此類流程,最近的過去提供了有關一期預測差異的信息。 - [具有英國通貨膨脹方差估計的自回歸條件異方差](http://www.jstor.org/stable/1912773),1982。 在實踐中,這可以用于在使用另一個自回歸模型(例如 ARMA 或類似物)之后對殘差的預期方差進行建模。 > 該模型應僅適用于不相關且不包含趨勢或季節變化的預白化殘差序列{e_t},例如可在擬合滿意的 SARIMA 模型后獲得。 - 第 148 頁,[入門時間序列與 R](https://amzn.to/2smB9LR) ,2009。 ## 什么是 GARCH 模型? 廣義自回歸條件異方差性(GARCH)是 ARCH 模型的擴展,它將移動平均分量與自回歸分量結合在一起。 具體地,該模型包括滯后方差項(例如,如果對另一個過程的白噪聲殘余誤差進行建模,則觀察)以及來自平均過程的滯后殘差。 移動平均分量的引入允許模型既模擬隨時間變化的條件變化以及隨時間變化的變化。例子包括條件增加和方差減少。 因此,該模型引入了一個新參數“p”,它描述了滯后方差項的數量: * **p** :GARCH 模型中包含的滯后變化數。 * **q** :要包含在 GARCH 模型中的滯后殘差的數量。 GARCH 模型的普遍接受的符號是用 _p_ 和 _q_ 參數 GARCH(p,q)指定 GARCH()函數;例如,GARCH(1,1)將是一階 GARCH 模型。 GARCH 模型包含 ARCH 模型,其中 GARCH(0,q)等效于 ARCH(q)模型。 > 對于 p = 0,該過程簡化為 ARCH(q)過程,并且對于 p = q = 0,E(t)僅為白噪聲。在 ARCH(q)過程中,條件方差僅被指定為過去樣本方差的線性函數,而 GARCH(p,q)過程也允許滯后條件方差進入。這對應于某種自適應學習機制。 - [廣義自回歸條件異方差](https://www.sciencedirect.com/science/article/pii/0304407686900631),1986。 與 ARCH 一樣,GARCH 預測未來的方差并期望該系列是固定的,而不是方差的變化,這意味著它沒有趨勢或季節性成分。 ## 如何配置 ARCH 和 GARCH 模型 ARCH 模型的配置最好在 ACF 和 PACF 時間序列方差圖的背景下理解。 這可以通過從系列中的每個觀察值中減去平均值并對結果求平方來實現,或者如果您已經在處理來自另一個模型的白噪聲殘差,則可以通過平方觀察來實現。 > 如果相關圖看起來是白噪聲[...],那么可以通過查看平方值的相關圖來檢測波動率,因為平方值等于方差(假設系列被調整為具有零均值)。 - 第 146-147 頁, [R](https://amzn.to/2smB9LR) 的入門時間序列,2009 年。 然后可以解釋 ACF 和 PACF 圖以估計 p 和 q 的值,其方式與對 ARMA 模型所做的類似。 有關如何執行此操作的詳細信息,請參閱帖子: * [自相關和部分自相關的溫和介紹](https://machinelearningmastery.com/gentle-introduction-autocorrelation-partial-autocorrelation/) ## Python 中的 ARCH 和 GARCH 模型 在本節中,我們將了解如何使用 [arch 庫](https://github.com/bashtage/arch)在 Python 中開發 ARCH 和 GARCH 模型。 首先,讓我們準備一個可用于這些示例的數據集。 ### 測試數據集 我們可以使用受控的方差模型創建數據集。 最簡單的情況是一系列隨機噪聲,其中均值為零,方差從 0.0 開始并穩步增加。 我們可以使用 [gauss()函數](https://docs.python.org/3/library/random.html)在 Python 中實現這一點,該函數生成具有指定均值和標準差的高斯隨機數。 ```py # create dataset data = [gauss(0, i*0.01) for i in range(1,100+1)] ``` 我們可以繪制數據集,以了解方差線性變化的外觀。下面列出了完整的示例。 ```py # create a simple white noise with increasing variance from random import gauss from random import seed from matplotlib import pyplot # seed pseudorandom number generator seed(1) # create dataset data = [gauss(0, i*0.01) for i in range(0,100)] # plot pyplot.plot(data) pyplot.show() ``` 運行該示例將創建并繪制數據集。我們可以看到系列過程中方差的明顯變化。 ![Line Plot of Dataset with Increasing Variance](https://img.kancloud.cn/9a/cf/9acf3543c1162273244e533919edc8d0_1280x960.jpg) 具有增大的方差的數據集線圖 ### 自相關 我們知道人為數據集的方差存在自相關。 不過,我們可以看一下[自相關圖](https://machinelearningmastery.com/gentle-introduction-autocorrelation-partial-autocorrelation/)來證實這種期望。下面列出了完整的示例。 ```py # check correlations of squared observations from random import gauss from random import seed from matplotlib import pyplot from statsmodels.graphics.tsaplots import plot_acf # seed pseudorandom number generator seed(1) # create dataset data = [gauss(0, i*0.01) for i in range(0,100)] # square the dataset squared_data = [x**2 for x in data] # create acf plot plot_acf(squared_data) pyplot.show() ``` 運行該示例會創建平方觀測值的自相關圖。我們看到方差與大約 15 個滯后時間步長之間存在顯著的正相關。 這可能會為 ARCH 模型中的參數提供合理的值。 ![Autocorrelation Plot of Data with Increasing Variance](https://img.kancloud.cn/b0/38/b038476294134770e81e0dc99f0f9441_1280x960.jpg) 具有增大方差的數據的自相關圖 ## ARCH 模型 開發 ARCH 模型包括三個步驟: 1. 定義模型 2. 適合模型 3. 做一個預測。 在擬合和預測之前,我們可以將數據集拆分為訓練和測試集,以便我們可以將模型擬合到訓練上并評估其在測試集上的表現。 ```py # split into train/test n_test = 10 train, test = data[:-n_test], data[-n_test:] ``` 可以通過調用 [arch_model()函數](http://arch.readthedocs.io/en/latest/univariate/introduction.html#arch.arch_model)來定義模型。我們可以為該系列的平均值指定一個模型:在這種情況下, _mean ='Zero'_ 是一個合適的模型。然后我們可以指定方差的模型:在這種情況下 _vol ='ARCH'_。我們還可以為 ARCH 模型指定滯后參數:在這種情況下 _p = 15_ 。 注意,在 arch 庫中,ARCH / GARCH 的 _p_ 和 _q_ 參數的名稱已被顛倒。 ```py # define model model = arch_model(train, mean='Zero', vol='ARCH', p=15) ``` 通過調用 [fit()函數](http://arch.readthedocs.io/en/latest/univariate/mean.html#arch.univariate.ZeroMean.fit),可以使模型適合數據。此功能有很多選項,但默認設置足以讓您入門。這將返回一個擬合模型。 ```py # fit model model_fit = model.fit() ``` 最后,我們可以通過在擬合模型上調用 [forecast()函數](http://arch.readthedocs.io/en/latest/univariate/introduction.html#arch.univariate.base.ARCHModelResult.forecast)來進行預測。我們可以指定預測的范圍。 在這種情況下,我們將預測數據集的最后 10 個時間步的方差,并從模型的訓練中扣除它們。 ```py # forecast the test set yhat = model_fit.forecast(horizon=n_test) ``` 我們可以將所有這些結合在一起;下面列出了完整的示例。 ```py # example of ARCH model from random import gauss from random import seed from matplotlib import pyplot from arch import arch_model # seed pseudorandom number generator seed(1) # create dataset data = [gauss(0, i*0.01) for i in range(0,100)] # split into train/test n_test = 10 train, test = data[:-n_test], data[-n_test:] # define model model = arch_model(train, mean='Zero', vol='ARCH', p=15) # fit model model_fit = model.fit() # forecast the test set yhat = model_fit.forecast(horizon=n_test) # plot the actual variance var = [i*0.01 for i in range(0,100)] pyplot.plot(var[-n_test:]) # plot forecast variance pyplot.plot(yhat.variance.values[-1, :]) pyplot.show() ``` 運行該示例定義并擬合模型,然后預測數據集的最后 10 個時間步的方差。 創建線圖,將預期方差系列與預測方差進行比較。雖然模型沒有調整,但預測的方差看起來合理。 ![Line Plot of Expected Variance to Predicted Variance using ARCH](https://img.kancloud.cn/dc/c0/dcc0a411608b40464a48a5d82cd95b68_1280x960.jpg) 用 ARCH 預測方差的線性圖到預測方差 ## GARCH 模型 我們可以使用 arch 庫輕松地擬合 GARCH 模型。 _arch_model()_ 函數可以指定 GARCH 而不是 ARCH 模型 vol ='GARCH'以及兩者的滯后參數。 ```py # define model model = arch_model(train, mean='Zero', vol='GARCH', p=15, q=15) ``` 鑒于線性增加的方差,數據集可能不適合 GARCH 模型,但是,下面列出了完整的示例。 ```py # example of ARCH model from random import gauss from random import seed from matplotlib import pyplot from arch import arch_model # seed pseudorandom number generator seed(1) # create dataset data = [gauss(0, i*0.01) for i in range(0,100)] # split into train/test n_test = 10 train, test = data[:-n_test], data[-n_test:] # define model model = arch_model(train, mean='Zero', vol='GARCH', p=15, q=15) # fit model model_fit = model.fit() # forecast the test set yhat = model_fit.forecast(horizon=n_test) # plot the actual variance var = [i*0.01 for i in range(0,100)] pyplot.plot(var[-n_test:]) # plot forecast variance pyplot.plot(yhat.variance.values[-1, :]) pyplot.show() ``` 下面列出了預期和預測方差的圖。 ![Line Plot of Expected Variance to Predicted Variance using GARCH](https://img.kancloud.cn/79/8d/798d8bbaa0eac17f5b807a6b7aa93fa2_1280x960.jpg) 使用 GARCH 預測方差與預測方差的線圖 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 論文和書籍 * [具有英國通貨膨脹方差估計的自回歸條件異方差](http://www.jstor.org/stable/1912773),1982。 * [廣義自回歸條件異方差](https://www.sciencedirect.com/science/article/pii/0304407686900631),1986。 * 第 7 章,非平穩模型, [R](https://amzn.to/2smB9LR) 的入門時間序列,2009。 ### API * [ARCH Python 庫 GitHub 項目](https://github.com/bashtage/arch) * [ARCH Python 庫 API 文檔](http://arch.readthedocs.io/en/latest/) ### 用品 * [維基百科上的自回歸條件異方差](https://en.wikipedia.org/wiki/Autoregressive_conditional_heteroskedasticity) * [維基百科上的異方差](https://en.wikipedia.org/wiki/Heteroscedasticity) * [GARCH 和 ARCH 有什么區別?](https://www.quora.com/What-is-the-difference-between-GARCH-and-ARCH) ## 摘要 在本教程中,您發現了 ARCH 和 GARCH 模型,用于預測時間序列的方差。 具體來說,你學到了: * 時間序列中的方差問題以及 ARCH 和 GARCH 模型的需求。 * 如何配置 ARCH 和 GARCH 模型。 * 如何在 Python 中實現 ARCH 和 GARCH 模型。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看