什么是白噪声?如何判断时间序列是白噪声?

什么是白噪声

{ e 0 , e 1 , . . . , e t , . . . } \{e_0, e_1, ..., e_t, ...\} {e0,e1,...,et,...}是白噪声的三个条件:

  • E ( e t ) = 0 E(e_t)=0 E(et)=0
  • V a r ( e t ) = σ 2 Var(e_t)=\sigma^2 Var(et)=σ2
  • k ≠ 0 k\neq0 k̸=0时, C o v ( e t , e t + k ) = 0 Cov(e_t, e_{t+k})=0 Cov(et,et+k)=0

按照上述定义,白噪声是一种特殊的弱平稳过程,通常时间序列分析到白噪声这一层就没什么好分析的了。

为什么我们希望白噪声是高斯白噪声?

其实,我们希望的白噪声序列 { e 0 , e 1 , . . . , e t , . . . } \{e_0, e_1, ..., e_t, ...\} {e0,e1,...,et,...},是相互独立的(这时 { e t } \{e_t\} {et}序列是严平稳的)。但是独立性是很难验证出来的,我们只能验证相关性。

{ e i , e j } \{e_i, e_j\} {ei,ej}不相关并不意味着 e i e_i ei e j e_j ej的生成是独立的。见这里的不相关却不独立的例子

然而,当 { e t } \{e_t\} {et}序列是高斯的,且 { e i , e j } \{e_i, e_j\} {ei,ej}间是不相关的,则意味着 { e i , e j } \{e_i, e_j\} {ei,ej}是独立的。着就是我们为什么喜欢高斯白噪声的原因。也就是,要生成高斯白噪声,序列需要从高斯分布中随机采样(不能按照某种规律采样)。

如何判断序列是否为白噪声

step1: 时序图验证期望和方差

step2: 验证相关性

  • 画自相关图(acf)
  • 假设检验方法
    • 德宾-瓦特逊检验
      DW统计量只使用于检验一阶自相关性,所以目前不常用
     # d=4: 存在负相关关系
     # d=2: 基本没有自相关关系
     # d=0: 存在正相关关系
     d = sm.stats.durbin_watson(data)
    
    • Box-Ljung test/Q检验(目前最常用)
    • BG检验
      利用bartlett定理 什么是白噪声?如何判断时间序列是白噪声?_第1张图片

实现

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
# 生成白噪声
white_noise=np.random.standard_normal(size=500)
fig = plt.figure(figsize=(12, 10))
ax0 = fig.add_subplot(311)
plt.plot(white_noise)
# acf & pacf
ax1 = fig.add_subplot(312)
# dta.values生成二维数组,每一个元素是一个特征数组
# dta.values将二维数组弄成一维数组
# 滞后0-40阶的自相关函数的值画到子图ax1上
fig = sm.graphics.tsa.plot_acf(white_noise, lags=40, ax=ax1)
ax2 = fig.add_subplot(313)
fig = sm.graphics.tsa.plot_pacf(white_noise, lags=40, ax=ax2)

什么是白噪声?如何判断时间序列是白噪声?_第2张图片

# Q检验
# 方法四: Q检验
r, q, p = sm.tsa.acf(white_noise, qstat=True)
data = np.c_[range(1, 41), r[1:], q, p]
table = pd.DataFrame(data, columns=['lag', 'AC', 'Q', 'Prob(>Q)'])
# Prob(>Q)即P值大部分都小于0.05,所以残差不是白噪声
print(table.set_index('lag'))

结果:

# 所有p值均大于0.05,接受原假设,无自相关
            AC          Q  Prob(>Q)
lag                                
1.0  -0.053581   1.444106  0.229476
2.0  -0.035057   2.063523  0.356379
3.0   0.019875   2.263020  0.519642
4.0  -0.090659   6.422228  0.169757
5.0  -0.033935   7.006166  0.220182
6.0   0.039397   7.794804  0.253525
7.0  -0.022411   8.050520  0.328160
8.0   0.003968   8.058555  0.427771
9.0  -0.003797   8.065924  0.527517
10.0  0.012976   8.152174  0.613976
11.0 -0.036736   8.844892  0.636207
12.0 -0.039704   9.655727  0.646135
13.0  0.063198  11.714204  0.551207
14.0 -0.008406  11.750700  0.626316
15.0  0.038352  12.511923  0.639940
16.0 -0.054281  14.039908  0.595741
17.0  0.036416  14.729058  0.614990
18.0  0.016817  14.876331  0.670441
19.0  0.009264  14.921114  0.727598
20.0  0.012574  15.003787  0.776191
21.0  0.036801  15.713474  0.785528
22.0  0.096809  20.634780  0.543397
23.0 -0.007945  20.667993  0.601355
24.0  0.026049  21.025813  0.637202
25.0  0.012579  21.109430  0.686492
26.0 -0.006985  21.135263  0.734949
27.0 -0.000977  21.135769  0.779888
28.0 -0.038148  21.909656  0.785457
29.0 -0.026059  22.271533  0.808775
30.0  0.001191  22.272290  0.843957
31.0 -0.048612  23.536971  0.828974
32.0  0.051610  24.965517  0.807423
33.0  0.015994  25.103009  0.836132
34.0 -0.072480  27.932592  0.758828
35.0  0.052761  29.435216  0.733409
36.0 -0.008378  29.473186  0.770772
37.0  0.020629  29.703893  0.797410
38.0  0.004526  29.715024  0.829389
39.0  0.026392  30.094271  0.846185
40.0 -0.030071  30.587678  0.858200

你可能感兴趣的:(概率统计,2019,金融)