白噪声是时间序列预测中的一个重要概念。如果一个时间序列是白噪声,它是一个随机数序列,不能预测。如果预测误差不是白噪声,它暗示了预测模型仍有改进空间。
在本教程中,你将学习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/