Python中的白噪声时间训练
2017年08月10日 由 yuxiangyu 发表
849469
0
白噪声是时间序列预测中的一个重要概念。
如果一个时间序列是白噪声,它是一个随机数序列,不能预测。如果预测误差不是白噪声,它暗示了预测模型仍有改进空间。
在本教程中,你将学习Python中的白噪声时间序列。
完成本教程后,你将知道:
- 白噪声时间序列的定义以及为什么它很重要。
- 如何检查是否你的时间序列是白噪声。
- 用于识别Python中白噪声的统计和诊断图。
让我们开始吧。
什么是白噪声时间序列?
时间序列可能是白噪声。
时间序列如果变量是独立的且恒等分布的均值为0,那么它是白噪声。
这意味着所有变量具有相同的方差 (
sigma^2),并且每个值与该系列中的所有其他值具有零相关。
如果序列中的变量被高斯分布绘制,则该系列称为高斯白噪声。
为什么这么重要?
白噪声是时间序列分析和预测中的一个重要的概念。
重要的两个主要原因为:
- 可预测性:如果你的时间序列是白噪声,那么根据定义它是随机的。你无法对它合理的建模并进行预测。
- 模型诊断:时间序列上一系列误差的预测模型最好是白噪声。
模型诊断是时间序列预测的重要领域。
时间序列数据在潜在的因素产生的信号上被预测,它包含一些白噪声成分。
例如:
y(t) = signal(t) + noise(t)
通过时间序列预测模型进行预测,可以对其进行收集和分析。在理想情况下,预测误差应该是白噪声。
当预测误差为白噪声时,意味着时间序列中的所有信号已全部被模型利用进行预测。剩下的就是无法建模的随机波动。
模型预测的信号不是白噪声则表明可以进一步对预测模型改进。
你的时间序列白噪音吗?
你的时间序列如果符合下面条件则不是白噪声:
- 你的序列均值为零吗?
- 方差随时间变化吗?
- 值与延迟值相关吗?
你可以用一些工具来检查你的时间序列是否为白噪音:
- 创建一个折线图。检查总体特征,如变化的平均值,方差或延迟变量之间的明显关系。
- 计算汇总统计。对照序列中有意义的连续块的均值和方差,检查整个序列的均值和方差(如年、月、日)。
- 创建一个自相关的图。检查延迟变量之间的总体相关性。
白噪声时间序列的例子
在本节中,我们将使用Python创建一个高斯白噪声序列并做一些检查。
它有助于在实践中创建和评估白噪声时间序列。它将提供参考框架和示例图并且使用和比较自己的时间序列项目的统计测试,以检查它们是否为白噪声
首先,我们可以使用随机模块的
gauss()函数创建一个1,000个随机高斯变量的列表。
我们将从高斯分布提取变量:平均值(mu)0.0和标准偏差(
sigma)1.0。
一旦创建,为方便起见,我们可以在Pandas序列中打包这个列表。
from random import gauss
from random import seed
from pandas import Series
from pandas.tools.plotting import autocorrelation_plot
# seed random number generator
seed(1)
# create white noise series
series = [gauss(0.0, 1.0) for i in 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 random import gauss
from random import seed
from pandas import Series
from pandas.tools.plotting import autocorrelation_plot
from matplotlib import pyplot
# seed random number generator
seed(1)
# create white noise series
series = [gauss(0.0, 1.0) for i in 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中的白噪声时间序列。
具体来说,你学到了:
- 白噪声时间序列的定义是均值为零,方差恒定和相关性为零。
- 如果你的时间序列是白噪声,那么它无法进行预测。否则,你可能可以改善这个模型。
- 你可以在时间序列上使用统计数据和诊断图,用以检查它是否是白噪声。