<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 如何將時間序列數據分解為趨勢和季節性 > 原文: [https://machinelearningmastery.com/decompose-time-series-data-trend-seasonality/](https://machinelearningmastery.com/decompose-time-series-data-trend-seasonality/) 時間序列分解涉及將一系列視為水平,趨勢,季節性和噪聲分量的組合。 分解提供了一個有用的抽象模型,用于一般地考慮時間序列,以及更好地理解時間序列分析和預測中的問題。 在本教程中,您將發現時間序列分解以及如何使用 Python 自動將時間序列拆分為其組件。 完成本教程后,您將了解: * 時間序列分析分析方法及其如何幫助預測。 * 如何在 Python 中自動分解時間序列數據。 * 如何分解加法和乘法時間序列問題并繪制結果。 讓我們開始吧。 ![How to Decompose Time Series Data into Trend and Seasonality](https://img.kancloud.cn/f6/60/f6605c7bed4b3f3b751d7cd3d9cbefb8_640x425.jpg) 如何將時間序列數據分解為趨勢和季節性 攝影: [Terry Robinson](https://www.flickr.com/photos/suburbanadventure/11285514073/) ,保留一些權利。 ## 時間序列組件 選擇預測方法的有用抽象是將時間序列分解為系統和非系統組件。 * **Systematic** :具有一致性或重復性的時間序列的組成部分,可以進行描述和建模。 * **Non-Systematic** :無法直接建模的時間序列的組成部分。 給定的時間序列被認為包括三個系統組件,包括水平,趨勢,季節性和一個稱為噪聲的非系統組件。 這些組件定義如下: * **等級**:系列中的平均值。 * **趨勢**:系列中的增加或減少值。 * **季節性**:系列中重復的短期周期。 * **Noise** :系列中的隨機變化。 ## 結合時間序列組件 一系列被認為是這四個組成部分的集合或組合。 所有系列都有水平和噪音。趨勢和季節性組件是可選的。 將組件視為加法或乘法組合是有幫助的。 ### 添加模型 添加劑模型表明組分如下加在一起: ```py y(t) = Level + Trend + Seasonality + Noise ``` 添加劑模型是線性的,其中隨時間的變化始終以相同的量進行。 線性趨勢是直線。 線性季節性具有相同的頻率(周期寬度)和幅度(周期的高度)。 ### 乘法模型 乘法模型表明組件乘以如下: ```py y(t) = Level * Trend * Seasonality * Noise ``` 乘法模型是非線性的,例如二次或指數。變化隨時間增加或減少。 非線性趨勢是曲線。 非線性季節性隨時間具有增加或減少的頻率和/或幅度。 ## 分解為工具 這是一個有用的抽象。 分解主要用于時間序列分析,作為分析工具,它可用于為您的問題提供預測模型。 它提供了一種思考時間序列預測問題的結構化方法,通常在建模復雜性方面,特別是在如何最佳地捕獲給定模型中的每個組件方面。 在數據準備,模型選擇和模型調整期間,您可能需要考慮和解決這些組件中的每一個。您可以在對趨勢進行建模并從數據中減去趨勢時明確地解決它,或者通過為算法提供足夠的歷史記錄來隱式地解決趨勢(如果趨勢可能存在)。 您可能會或可能無法將您的特定時間序列干凈或完美地分解為添加劑或乘法模型。 現實世界的問題是混亂和嘈雜。可能存在加法和乘法組件。可能會出現增長趨勢,隨后呈下降趨勢。可能存在與重復季節性成分混合的非重復循環。 然而,這些抽象模型提供了一個簡單的框架,您可以使用它來分析數據并探索思考和預測問題的方法。 ## 自動時間序列分解 [有一些方法可以自動分解](https://www.otexts.org/fpp/6/3)的時間序列。 statsmodels 庫在名為 [seasonal_decompose()](http://www.statsmodels.org/dev/generated/statsmodels.tsa.seasonal.seasonal_decompose.html)的函數中提供了樸素或經典分解方法的實現。它要求您指定模型是加法還是乘法。 兩者都會產生結果,在解釋結果時必須小心謹慎。對時間序列圖和一些匯總統計數據的回顧通常可以是一個很好的開始,可以了解您的時間序列問題是否具有加性或乘法性。 _seasonal_decompose()_ 函數返回結果對象。結果對象包含用于從分解中訪問四個數據的數組。 例如,下面的代碼段顯示了假設添加模型如何將一系列分解為趨勢,季節和殘差分量。 結果對象提供對趨勢和季節性系列的訪問作為數組。它還提供對殘差的訪問,殘差是趨勢之后的時間序列,并且刪除了季節性組件。最后,還存儲原始數據或觀察數據。 ```py from statsmodels.tsa.seasonal import seasonal_decompose series = ... result = seasonal_decompose(series, model='additive') print(result.trend) print(result.seasonal) print(result.resid) print(result.observed) ``` 通過調用 _plot()_ 函數,可以直接從結果對象繪制這四個時間序列。例如: ```py from statsmodels.tsa.seasonal import seasonal_decompose from matplotlib import pyplot series = ... result = seasonal_decompose(series, model='additive') result.plot() pyplot.show() ``` 我們來看一些例子。 ## 添加劑分解 我們可以創建一個時間序列,包括從 1 到 99 的線性增長趨勢和一些隨機噪聲,并將其分解為一個加法模型。 因為時間序列是設計的并且是作為一組數字提供的,所以我們必須指定觀察的頻率( _freq = 1_ 參數)。如果提供了 Pandas Series 對象,則不需要此參數。 ```py from random import randrange from pandas import Series from matplotlib import pyplot from statsmodels.tsa.seasonal import seasonal_decompose series = [i+randrange(10) for i in range(1,100)] result = seasonal_decompose(series, model='additive', freq=1) result.plot() pyplot.show() ``` 運行該示例將創建系列,執行分解,并繪制 4 個結果系列。 我們可以看到整個系列被視為趨勢組件而且沒有季節性。 ![Additive Model Decomposition Plot](https://img.kancloud.cn/4c/36/4c36d3e2c707cc9b21db2d3a4a8b0bfa_800x600.jpg) 加性模型分解圖 我們還可以看到殘差圖顯示為零。這是一個很好的例子,其中樸素或經典的分解無法將我們從線性趨勢中添加的噪聲分開。 樸素分解方法很簡單,并且有更高級的分解,例如使用 [Loess 或 STL 分解](https://www.otexts.org/fpp/6/5)進行季節性和趨勢分解。 使用自動分解方法時需要謹慎和健康的懷疑態度。 ## 乘法分解 我們可以將二次時間序列設計為從 1 到 99 的時間步長的平方,然后假設乘法模型將其分解。 ```py from pandas import Series from matplotlib import pyplot from statsmodels.tsa.seasonal import seasonal_decompose series = [i**2.0 for i in range(1,100)] result = seasonal_decompose(series, model='multiplicative', freq=1) result.plot() pyplot.show() ``` 運行這個例子,我們可以看到,就像在附加情況下一樣,趨勢很容易被提取并且完全表征時間序列。 ![Multiplicative Model Decomposition Plot](https://img.kancloud.cn/b0/de/b0de0fac222605f6e0e6fda1c244f338_800x600.jpg) 乘法模型分解圖 指數變化可以通過數據變換線性變化。在這種情況下,通過取平方根可以使二次趨勢成為線性。通過采用自然對數,可以使季節性的指數增長成線性。 同樣,將分解視為一種潛在有用的分析工具非常重要,但要考慮探索可以應用于您的問題的許多不同方式,例如轉換后的數據或殘差模型錯誤。 讓我們看一下真實世界的數據集。 ## 航空公司乘客數據集 航空公司乘客數據集描述了一段時間內航空公司乘客的總數。 這些單位是數千名航空公司乘客的數量。從 1949 年到 1960 年,每月有 144 次觀察。 [了解更多信息并從數據市場](https://datamarket.com/data/set/22u3/international-airline-passengers-monthly-totals-in-thousands-jan-49-dec-60)下載數據集。 使用文件名“ _airline-passengers.csv_ ”將數據集下載到當前工作目錄。 首先,讓我們繪制原始觀察圖。 ```py from pandas import Series from matplotlib import pyplot series = Series.from_csv('airline-passengers.csv', header=0) series.plot() pyplot.show() ``` 回顧線圖,它表明可能存在線性趨勢,但很難確定是否會引人注目。還有季節性,但周期的幅度(高度)似乎在增加,這表明它是乘法的。 ![Plot of the Airline Passengers Dataset](https://img.kancloud.cn/a6/ab/a6ab6b3ed20c8ccc87827a2b08d8769c_800x600.jpg) 航空公司乘客數據集的情節 我們將假設一個乘法模型。 以下示例將航空公司乘客數據集分解為乘法模型。 ```py from pandas import Series from matplotlib import pyplot from statsmodels.tsa.seasonal import seasonal_decompose series = Series.from_csv('airline-passengers.csv', header=0) result = seasonal_decompose(series, model='multiplicative') result.plot() pyplot.show() ``` 運行該示例繪制觀察,趨勢,季節和剩余時間序列。 我們可以看到從該系列中提取的趨勢和季節性信息似乎是合理的。殘差也很有趣,顯示了該系列早期和晚期的高度可變性。 ![Multiplicative Decomposition of Airline Passenger Dataset](https://img.kancloud.cn/8c/ef/8cef18d50558dcfee19b2f849bfb6d25_800x600.jpg) 航空旅客數據集的乘法分解 ## 進一步閱讀 本節列出了一些用于進一步閱讀時間序列分解的資源。 * 第 2.2 節時間序列組件, [R 實用時間序列預測:動手指南](http://www.amazon.com/dp/0997847913?tag=inspiredalgor-20)。 * 第 6.3 節,經典分解,[預測:原則和實踐](http://www.amazon.com/dp/0987507109?tag=inspiredalgor-20) ## 摘要 在本教程中,您發現了時間序列分解以及如何使用 Python 分解時間序列數據。 具體來說,你學到了: * 將時間序列分解為水平,趨勢,季節性和噪聲的結構。 * 如何使用 Python 自動分解時間序列數據集。 * 如何分解加法或乘法模型并繪制結果。 您對時間序列分解或本教程有任何疑問嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看