<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國際加速解決方案。 廣告
                # 使用 Python 的置信區間理解時間序列預測不確定性 > 原文: [https://machinelearningmastery.com/time-series-forecast-uncertainty-using-confidence-intervals-python/](https://machinelearningmastery.com/time-series-forecast-uncertainty-using-confidence-intervals-python/) 時間序列預測模型既可以進行預測,也可以為這些預測提供置信區間。 置信區間為真實觀察提供了較高和較低的期望。這些對于評估預測的實際可能結果的范圍以及更好地理解模型的技能非常有用 在本教程中,您將了解如何使用 Python 計算和解釋時間序列預測的置信區間。 具體來說,您將學到: * 如何使用 ARIMA 模型進行預測并收集預測診斷信息。 * 如何解釋預測的置信區間并配置不同的間隔。 * 如何在最近觀察的背景下繪制置信區間。 讓我們潛入。 ![Understand Time Series Forecast Uncertainty Using Confidence Intervals with Python](https://img.kancloud.cn/3d/28/3d287aedef8da6f6f054310ea60fbc9a_640x426.jpg) 使用 Python 的置信區間來理解時間序列預測不確定性 照片由 [Bernard Spragg 撰寫。 NZ](https://www.flickr.com/photos/volvob12b/10324852255/) ,保留一些權利。 ## ARIMA 預測 statsmodels Python 庫中的 ARIMA 實現可用于擬合 [ARIMA](http://statsmodels.sourceforge.net/0.6.0/generated/statsmodels.tsa.arima_model.ARIMA.html) 模型。 它返回一個 ARIMAResults 對象。該對象提供 [forecast()](http://statsmodels.sourceforge.net/devel/generated/statsmodels.tsa.arima_model.ARIMAResults.forecast.html)函數,該函數可用于對未來時間步驟進行預測,并默認在訓練數據結束后的下一個時間步驟預測值。 假設我們只預測下一個時間步,那么 forecast()方法返回三個值: * **預測**。以訓練時間序列為單位的預測值。 * **標準錯誤**。模型的[標準誤差](https://en.wikipedia.org/wiki/Standard_error)。 * **置信區間**。預測的 95%[置信區間](https://en.wikipedia.org/wiki/Confidence_interval)。 在本教程中,我們將更好地理解 ARIMA 預測提供的置信區間。 在我們深入研究之前,讓我們首先看一下我們將用作本教程上下文的 Daily Female Births 數據集。 ## 每日女性出生數據集 該數據集描述了 1959 年加利福尼亞州每日女性出生人數。 單位是計數,有 365 個觀測值。數據集的來源歸功于 Newton(1988)。 [您可以從數據市場網站](https://datamarket.com/data/set/235k/daily-total-female-births-in-california-1959)了解更多信息并下載數據集。 下載數據集并將其保存在當前工作目錄中,文件名為“ _daily-total-female-births.csv_ ”。 下面的示例加載并繪制數據集。 ```py from pandas import Series from matplotlib import pyplot series = Series.from_csv('daily-total-female-births.csv', header=0) series.plot() pyplot.show() ``` 運行該示例將加載數據集并將其繪制為線圖。 ![Daily Female Births Dataset](https://img.kancloud.cn/4e/b3/4eb3708b59d0dbf97da9b606bb8da472_800x600.jpg) 每日女性出生數據集 ## 預測置信區間 在本節中,我們將訓練 ARIMA 模型,使用它進行預測,并檢查置信區間。 首先,我們將訓練數據集拆分為訓練和測試數據集。幾乎所有觀測都將用于訓練,我們將最后一次觀測作為測試數據集,我們將對其進行預測。 訓練 ARIMA(5,1,1)模型。這不是這個問題的最佳模型,只是一個很好的模型用于演示目的。 然后使用訓練的模型通過調用 _forecast()_ 函數進行預測。然后打印預測結果。 下面列出了完整的示例。 ```py from pandas import Series from statsmodels.tsa.arima_model import ARIMA series = Series.from_csv('daily-total-female-births.csv', header=0) X = series.values X = X.astype('float32') size = len(X) - 1 train, test = X[0:size], X[size:] model = ARIMA(train, order=(5,1,1)) model_fit = model.fit(disp=False) forecast, stderr, conf = model_fit.forecast() print('Expected: %.3f' % test[0]) print('Forecast: %.3f' % forecast) print('Standard Error: %.3f' % stderr) print('95%% Confidence Interval: %.3f to %.3f' % (conf[0][0], conf[0][1])) ``` 運行該示例將打印測試集中的預期值,后跟預測值的預測值,標準誤差和置信區間。 ```py Expected: 50.000 Forecast: 45.878 Standard Error: 6.996 95% Confidence Interval: 32.167 to 59.590 ``` ## 解釋置信區間 _forecast()_ 函數允許指定置信區間。 _forecast()_ 函數的 _alpha_ 參數指定置信度。它默認設置為 alpha = 0.05,這是 95%的置信區間。這是一個明智且廣泛使用的置信區間。 α為 0.05 意味著 ARIMA 模型將估計預測周圍的上限值和下限值,其中實際值不會在該范圍內的可能性僅為 5%。 換句話說,95%置信區間表明真實觀察很可能在該范圍內。 在上面的例子中,預測值為 45.878。 95%置信區間表明真實觀察結果很可能落在 32.167 和 59.590 之間的值范圍內。 真實的觀察結果是 50.0 并且在這個范圍內。 我們可以通過幾種方式收緊可能值的范圍: * 我們可以要求范圍更窄但是增加實際觀察的統計可能性超出范圍。 * 我們可以開發出具有更強預測能力的模型,從而進行更準確的預測。 此外,置信區間也受到模型所做的假設的限制,例如由模型擬合的誤差分布擬合具有零均值(例如白噪聲)的高斯分布。 擴展上面的例子,我們可以用一些不同的常用置信區間報告我們的預測,即 80%,90%,95%和 99%。 下面列出了完整的示例。 ```py from pandas import Series from statsmodels.tsa.arima_model import ARIMA series = Series.from_csv('daily-total-female-births.csv', header=0) X = series.values X = X.astype('float32') size = len(X) - 1 train, test = X[0:size], X[size:] model = ARIMA(train, order=(5,1,1)) model_fit = model.fit(disp=False) intervals = [0.2, 0.1, 0.05, 0.01] for a in intervals: forecast, stderr, conf = model_fit.forecast(alpha=a) print('%.1f%% Confidence Interval: %.3f between %.3f and %.3f' % ((1-a)*100, forecast, conf[0][0], conf[0][1])) ``` 運行該示例將打印每個 _alpha_ 值的預測和置信區間。 我們可以看到,我們每次都獲得相同的預測值,并且隨著我們對“更安全”間隔的需求增加而擴展的間隔。我們可以看到,在這種特定情況下,80%可以很好地捕獲我們的實際值。 ```py 80.0% Confidence Interval: 45.878 between 36.913 and 54.844 90.0% Confidence Interval: 45.878 between 34.371 and 57.386 95.0% Confidence Interval: 45.878 between 32.167 and 59.590 99.0% Confidence Interval: 45.878 between 27.858 and 63.898 ``` ## 繪制置信區間 置信區間可以直接繪制。 ARIMAResults 對象提供 [plot_predict()](http://statsmodels.sourceforge.net/devel/generated/statsmodels.tsa.arima_model.ARIMAResults.plot_predict.html)函數,可用于進行預測并繪制顯示最近觀察結果,預測和置信區間的結果。 與 _forecast()_ 函數一樣,可以通過指定 _alpha_ 參數來配置置信區間。默認值為 0.05(95%置信度),這是一個合理的默認值。 以下示例顯示使用此函數繪制的相同預測。 ```py from pandas import Series from matplotlib import pyplot from statsmodels.tsa.arima_model import ARIMA series = Series.from_csv('daily-total-female-births.csv', header=0) X = series.values X = X.astype('float32') size = len(X) - 1 train, test = X[0:size], X[size:] model = ARIMA(train, order=(5,1,1)) model_fit = model.fit(disp=False) model_fit.plot_predict(len(train)-10, len(train)+1) pyplot.show() ``` 如果預測間隔覆蓋訓練數據, _plot_predict()_ 將繪制觀察到的 _y_ 值。 在這種情況下,我們預測前 10 天和下一天。這對于查看從樣本到樣本時間索引(藍色)的預測是有用的。這與過去 10 天(綠色)的實際觀察結果一致。 最后,我們可以將置信區間視為圍繞預測值的灰色圓錐。這對于獲得下一時間步驟中的觀察可能采用的可能值范圍的空間感覺是有用的。 ![Plot Confidence Interval](https://img.kancloud.cn/06/f1/06f11ae81ef9fd457d7771528e5e701f_800x600.jpg) 繪制置信區間 ## 摘要 在本教程中,您了解了如何使用 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>

                              哎呀哎呀视频在线观看