Python中的白噪聲時間訓練
白噪聲是時間序列預測中的一個重要概念。如果一個時間序列是白噪聲,它是一個隨機數序列,不能預測。如果預測誤差不是白噪聲,它暗示了預測模型仍有改進空間。
在本教程中,你將學習Python中的白噪聲時間序列。
完成本教程後,你將知道:
- 白噪聲時間序列的定義以及為什麼它很重要。
- 如何檢查是否你的時間序列是白噪聲。
- 用於識別Python中白噪聲的統計和診斷圖。
讓我們開始吧。
什麼是白噪聲時間序列?
時間序列可能是白噪聲。時間序列如果變數是獨立的且恆等分佈的均值為0,那麼它是白噪聲。這意味著所有變數具有相同的方差 (sigma^2),並且每個值與該系列中的所有其他值具有零相關。
如果序列中的變數被高斯分佈繪製,則該系列稱為高斯白噪聲。
為什麼這麼重要?
白噪聲是時間序列分析和預測中的一個重要的概念。
重要的兩個主要原因為:
1.可預測性:如果你的時間序列是白噪聲,那麼根據定義它是隨機的。你無法對它合理的建模並進行預測。
2.模型診斷:時間序列上一系列誤差的預測模型最好是白噪聲。
模型診斷是時間序列預測的重要領域。
時間序列資料在潛在的因素產生的訊號上被預測,它包含一些白噪聲成分。
例如:
y(t)= signal(t)+ noise(t)
通過時間序列預測模型進行預測,可以對其進行收集和分析。在理想情況下,預測誤差應該是白噪聲。
當預測誤差為白噪聲時,意味著時間序列中的所有訊號已全部被模型利用進行預測。剩下的就是無法建模的隨機波動。
模型預測的訊號不是白噪聲則表明可以進一步對預測模型改進。
你的時間序列白噪音嗎?
你的時間序列如果符合下面條件則不是白噪聲:
- 你的序列均值為零嗎?
- 方差隨時間變化嗎?
- 值與延遲值相關嗎?
你可以用一些工具來檢查你的時間序列是否為白噪音:
- 建立一個折線圖。檢查總體特徵,如變化的平均值,方差或延遲變數之間的明顯關係。
- 計算彙總統計。對照序列中有意義的連續塊的均值和方差,檢查整個序列的均值和方差(如年、月、日)。
- 建立一個自相關的圖。檢查延遲變數之間的總體相關性。
白噪聲時間序列的例子
在本節中,我們將使用Python建立一個高斯白噪聲序列並做一些檢查。它有助於在實踐中建立和評估白噪聲時間序列。它將提供參考框架和示例圖並且使用和比較自己的時間序列專案的統計測試,以檢查它們是否為白噪聲
首先,我們可以使用隨機模組的gauss()函式建立一個1,000個隨機高斯變數的列表。
我們將從高斯分佈提取變數:平均值(mu)0.0和標準偏差(sigma)1.0。
一旦建立,為方便起見,我們可以在Pandas序列中打包這個列表。
from randomimport gauss
from randomimport seed
from pandasimport Series
from pandas.tools.plottingimport autocorrelation_plot
# seed random number generator
seed(1)
# create white noise series
series= [gauss(0.0,1.0)for iin range(1000)]
series= Series(series)
接下來,我們可以計算和列印一些彙總統計資料,包含序列的平均值和標準偏差。
# summary stats
print(series.describe())
鑑於我們在繪製隨機數時定義了平均值和標準偏差,所以應該不會有意外。
count 1000.000000
mean -0.013222
std 1.003685
min -2.961214
25% -0.684192
50% -0.010934
75% 0.703915
max 2.737260
我們可以看到平均值接近0.0,標準偏差接近1.0。考慮到樣本較小預測會有些誤差。
如果我們有更多的資料,將序列分成兩半計算和比較每一半的彙總統計可能會更有趣。我們認為每個子系列的平均值和標準差都會相似。
現在我們可以建立一些序列的線條圖。
# line plot
series.plot()
pyplot.show()
我們可以看到,這個序列似乎是隨機的。
我們還可以建立直方圖,並確認分佈是高斯分佈。
# histogram plot
series.hist()
pyplot.show()
事實上,直方圖顯示了典型的鐘形曲線。
最後,我們可以建立一個自相關圖並檢查延遲變數的所有自相關。
# autocorrelation
autocorrelation_plot(series)
pyplot.show()
自相關圖沒有顯示任何顯著的自相關特徵。在峰值時可信度達在95%和99%,但這只是統計的偶然情況。
為了完整性,下面提供了完整的程式碼清單。
from randomimport gauss
from randomimport seed
from pandasimport Series
from pandas.tools.plottingimport autocorrelation_plot
from matplotlibimport pyplot
# seed random number generator
seed(1)
# create white noise series
series= [gauss(0.0,1.0)for iin range(1000)]
series= Series(series)
# summary stats
print(series.describe())
# line plot
series.plot()
pyplot.show()
# histogram plot
series.hist()
pyplot.show()
# autocorrelation
autocorrelation_plot(series)
pyplot.show()
總結
在本教程中,你發現了Python中的白噪聲時間序列。
具體來說,你學到了:
- 白噪聲時間序列的定義是均值為零,方差恆定和相關性為零。
- 如果你的時間序列是白噪聲,那麼它無法進行預測。否則,你可能可以改善這個模型。
- 你可以在時間序列上使用統計資料和診斷圖,用以檢查它是否是白噪聲。
原文:http://machinelearningmastery.com/white-noise-time-series-python/