时间序列建立图模型(一)

由时间序列建立图模型,首先要检验顶点表示的变量(或序列)之间的各种相依联系,即对时间序列做独立性检验。
目前信息论中的熵度量方法由于能够捕捉时间序列中的相依联系,且不需要对数据产生过程进行严格的参数假设,因此成为研究热点。

1.Shannon熵和互信息

设连续型随机变量 X \mathbf{X} X,,其概率密度函数为 f X ( x ) f_{X}(x) fX(x),Shannon定义连续型随机变量的熵为 H ( X ) = − ∫ [ ln ⁡ f X ( x ) ] f X ( x ) d x H(X) = -\int \left [ \ln{f_{X}(x) } \right ]f_{X}(x)d_{x} H(X)=[lnfX(x)]fX(x)dx
此概念可以推广到多个连续型随机变量的情况,以两个随机变量 X \mathbf{X} X Y \mathbf{Y} Y的情况为例,设其概率密度函数分别为 f X ( x ) f_{X}(x) fX(x) f Y ( y ) f_{Y}(y) fY(y),联合概率密度函数为 f X , Y ( x , y ) f_{X,Y}(x,y) fX,Y(x,y),条件概率密度函数分别为 f X ∣ Y ( x ∣ y ) f_{X|Y}(x|y) fXY(xy) f Y ∣ X ( y ∣ x ) f_{Y|X}(y|x) fYX(yx),则 X \mathbf{X} X Y \mathbf{Y} Y的联合熵定义为 H ( X , Y ) = − ∬ [ ln ⁡ f X , Y ( x , y ) ] f X , Y ( x , y ) d x d y H(X,Y)=-\iint [\ln{f_{X,Y}(x,y)}]f_{X,Y}(x,y)d_{x}d_{y} H(X,Y)=[lnfX,Y(x,y)]fX,Y(x,y)dxdy
X \mathbf{X} X Y \mathbf{Y} Y的条件熵定义为 H ( X ∣ Y ) = − ∬ [ ln ⁡ f X ∣ Y ( x ∣ y ) ] f X , Y ( x , y ) d x d y H(X|Y)=-\iint [\ln{f_{X|Y}(x|y)}]f_{X,Y}(x,y)d_{x}d_{y} H(XY)=[lnfXY(xy)]fX,Y(x,y)dxdy
容易推出 H ( X , Y ) = H ( X ) + H ( Y ∣ X ) = H ( Y ) + H ( X ∣ Y ) H(X,Y)=H(X)+H(Y|X)=H(Y)+H(X|Y) H(X,Y)=H(X)+H(YX)=H(Y)+H(XY)
随机变量 X \mathbf{X} X Y \mathbf{Y} Y的互信息为 I ( X ; Y ) = ∬ [ ln ⁡ f X , Y ( x , y ) f X ( x ) f Y ( y ) ] f X , Y ( x , y ) d x d y I(X;Y)=\iint[\ln{\frac{f_{X,Y}(x,y)}{f_{X}(x)f_{Y}(y)}}]f_{X,Y}(x,y)d_{x}d_{y} I(X;Y)=[lnfX(x)fY(y)fX,Y(x,y)]fX,Y(x,y)dxdy
随机变量的互信息表示了随机变量之间相互提供的信息量,故有 I ( X ; Y ) = I ( Y ; X ) I(X;Y)=I(Y;X) I(X;Y)=I(Y;X)
互信息还可以表示随机变量间的统计依存程度。
由前式可以推出 I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) = H ( X ) + H ( Y ) − H ( X , Y ) I(X;Y)=H(X)-H(X|Y)=H(X)+H(Y)-H(X,Y) I(X;Y)=H(X)H(XY)=H(X)+H(Y)H(X,Y)
当随机变量 X \mathbf{X} X Y \mathbf{Y} Y相互独立时,有 f X , Y ( x , y ) f_{X,Y}(x,y) fX,Y(x,y)= f X ( x ) f Y ( y ) f_{X}(x)f_{Y}(y) fX(x)fY(y),于是 H ( X , Y ) = H ( X ) + H ( Y ) H(X,Y)=H(X)+H(Y) H(X,Y)=H(X)+H(Y)以及 I ( X ; Y ) = 0 I(X;Y)=0 I(X;Y)=0

2.两组多维随机向量之间的互信息和条件互信息

考虑随机变量 X \mathbf{X} X和二维随机向量 ( Y , Z ) (\mathbf{Y,Z}) (Y,Z)之间的互信息,设这三个随机变量的概率密度函数分别为 f X ( x ) f_{X}(x) fX(x), f Y ( y ) f_{Y}(y) fY(y), f Z ( z ) f_{Z}(z) fZ(z)。则 X \mathbf{X} X和二维随机向量 ( Y , Z ) (\mathbf{Y,Z}) (Y,Z)之间的互信息为 I ( X ; Y , Z ) = H ( X ) − H ( X ∣ Y , Z ) = H ( Y , Z ) − H ( Y , Z ∣ X ) I(X;Y,Z)=H(X)-H(X|Y,Z)=H(Y,Z)-H(Y,Z|X) I(X;Y,Z)=H(X)H(XY,Z)=H(Y,Z)H(Y,ZX)以及 I ( X ; Y , Z ) = H ( X ) + H ( Y , Z ) − H ( X , Y , Z ) I(X;Y,Z)=H(X)+H(Y,Z)-H(X,Y,Z) I(X;Y,Z)=H(X)+H(Y,Z)H(X,Y,Z)
联合互信息 I ( X ; Y , Z ) I(X;Y,Z) I(X;Y,Z)表示随机变量 X \mathbf{X} X和二维随机向量 ( Y , Z ) (\mathbf{Y,Z}) (Y,Z)之间相互可能提供的信息量,即表示随机变量 X \mathbf{X} X和二维随机向量 ( Y , Z ) (\mathbf{Y,Z}) (Y,Z)之间统计依存程度。
在已知随机变量 Z Z Z的条件下,随机变量 X X X Y Y Y之间的条件互信息定义为
I ( X ; Y ∣ Z ) = ∭ [ ln ⁡ f X , Y ∣ Z ( x , y ∣ z ) f X ∣ Z ( x ∣ z ) f Y ∣ Z ( y ∣ z ) ] f X , Y , Z ( x , y , z ) d x d y d z I(X;Y|Z)=\iiint[\ln{\frac{f_{X,Y|Z}(x,y|z)}{f_{X|Z}(x|z)f_{Y|Z}(y|z)}]f_{X,Y,Z}(x,y,z)d_{x}d_{y}d_{z} } I(X;YZ)=[lnfXZ(xz)fYZ(yz)fX,YZ(x,yz)]fX,Y,Z(x,y,z)dxdydz
则: I ( X ; Y ∣ Z ) = H ( X ∣ Z ) − H ( X ∣ Y , Z ) = H ( Y ∣ Z ) − H ( Y ∣ X , Z ) = H ( X ∣ Z ) + H ( Y ∣ Z ) − H ( X , Y ∣ Z ) = H ( X , Z ) + H ( Y , Z ) − H ( X , Y , Z ) = H ( X , Z ) + H ( Y , Z ) − H ( X , Y , Z ) − H ( Z ) I(X;Y|Z)=H(X|Z)-H(X|Y,Z) =H(Y|Z)-H(Y|X,Z) =H(X|Z)+H(Y|Z)-H(X,Y|Z) =H(X,Z)+H(Y,Z)-H(X,Y,Z) =H(X,Z)+H(Y,Z)-H(X,Y,Z)-H(Z) I(X;YZ)=H(XZ)H(XY,Z)=H(YZ)H(YX,Z)=H(XZ)+H(YZ)H(X,YZ)=H(X,Z)+H(Y,Z)H(X,Y,Z)=H(X,Z)+H(Y,Z)H(X,Y,Z)H(Z)
可以证明,条件互信息是非负的。
利用条件互信息把联合互信息做如下展开: I ( X ; Y ∣ Z ) = H ( X ∣ Z ) − H ( X ∣ Y , Z ) = H ( X ) − H ( X ∣ Y ) + H ( X ∣ Y ) − H ( X ∣ Y , Z ) = I ( X ; Y ) + I ( X ; Z ∣ Y ) I(X;Y|Z)=H(X|Z)-H(X|Y,Z) =H(X)-H(X|Y)+H(X|Y)-H(X|Y,Z) =I(X;Y)+I(X;Z|Y) I(X;YZ)=H(XZ)H(XY,Z)=H(X)H(XY)+H(XY)H(XY,Z)=I(X;Y)+I(X;ZY)
表示二维随机向量 ( Y , Z ) (\mathbf{Y,Z}) (Y,Z)所提供的关于随机变量 X \mathbf{X} X的信息量等于随机变量 Y \mathbf{Y} Y所提供的关于 X \mathbf{X} X的信息量加上在已知 Y \mathbf{Y} Y的条件下随机变量 Z \mathbf{Z} Z所提供的关于 X \mathbf{X} X的信息量。
在给定随机变量 Z \mathbf{Z} Z的条件下,当随机变量 X \mathbf{X} X Y \mathbf{Y} Y条件独立是,有 f X , Y ∣ Z ( x , y ∣ z ) = f X ∣ Z ( x ∣ z ) f Y ∣ Z ( y ∣ z ) f_{X,Y|Z}(x,y|z)=f_{X|Z}(x|z)f_{Y|Z}(y|z) fX,YZ(x,yz)=fXZ(xz)fYZ(yz),所以, I ( X ; Y ∣ Z ) = 0 I(X;Y|Z)=0 I(X;YZ)=0

3.广义熵,广义互信息和广义条件互信息

Renyi熵可以得到一个更广义的度量。设随机变量 X \mathbf{X} X,其概率密度函数为 f X ( x ) f_{X}(x) fX(x),则 X \mathbf{X} X的q阶Renyi熵定义为:
H q ( X ) = − 1 q − 1 ln ⁡ ∫ [ f X ( x ) ] q − 1 f X ( x ) d x H_{q}(X)=-\frac{1}{q-1}\ln{\int[f_{X}(x)]^{q-1}}f_{X}(x)d_{x} Hq(X)=q11ln[fX(x)]q1fX(x)dx
q → 1 q\to 1 q1时,就是Shannon熵。
随机变量 X \mathbf{X} X Y \mathbf{Y} Y的q阶互信息定义为 I q ( X ; Y ) = H q ( X ) + H q ( Y ) − H q ( X , Y ) = − 1 q − 1 ln ⁡ ∫ [ f X ( x ) ] q − 1 f X ( x ) d x ∫ [ f Y ( y ) ] q − 1 f Y ( y ) d y ∬ [ f X , Y ( x , y ) ] q − 1 f X , Y ( x , y ) d x d y I_{q}(X;Y)=H_{q}(X)+H_{q}(Y)-H_{q}(X,Y) =-\frac{1}{q-1} \ln{\frac{\int[f_{X}(x)]^{q-1}f_{X}(x)d_{x}\int [f_{Y}(y)]^{q-1}f_{Y}(y)d_{y}}{\iint[f_{X,Y}(x,y)]^{q-1}f_{X,Y}(x,y)d_{x}d_{y} } } Iq(X;Y)=Hq(X)+Hq(Y)Hq(X,Y)=q11ln[fX,Y(x,y)]q1fX,Y(x,y)dxdy[fX(x)]q1fX(x)dx[fY(y)]q1fY(y)dy
q阶条件互信息用于度量给定 Z \mathbf{Z} Z中包含的关于 X \mathbf{X} X的信息的条件下, Y \mathbf{Y} Y中包含的关于 X \mathbf{X} X的信息。
I q ( X ; Y ∣ Z ) = I q ( X ; Y , Z ) − I q ( X ; Z ) = − H q ( X , Y , Z ) + H q ( X , Z ) + H q ( Y , Z ) − H q ( Z ) = − 1 q − 1 ln ⁡ ∬ [ f X , Z ( x , z ) ] q − 1 f X , Z ( x , z ) d x d z ∬ [ f Y , Z ( y , Z ) ] q − 1 f Y , Z ( y , z ) d y d z ∭ [ f X , Y , Z ( x , y , z ) ] q − 1 f X , Y , Z ( x , y , z ) d x d y d z ∫ [ f Z ( z ) ] q − 1 f Z ( z ) d z I_{q}(X;Y|Z)=I_{q}(X;Y,Z)-I_{q}(X;Z)=-H_{q}(X,Y,Z)+H_{q}(X,Z)+H_{q}(Y,Z)-H_{q}(Z)=-\frac{1}{q-1}\ln{\frac{\iint[f_{X,Z}(x,z)]^{q-1}f_{X,Z}(x,z)d_{x}d_{z}\iint [f_{Y,Z}(y,Z)]^{q-1}f_{Y,Z}(y,z)d_{y}d_{z}}{\iiint [f_{X,Y,Z}(x,y,z)]^{q-1}f_{X,Y,Z}(x,y,z)d_{x}d_{y}d_{z}\int [f_{Z}(z)]^{q-1}f_{Z}(z)d_{z} } } Iq(X;YZ)=Iq(X;Y,Z)Iq(X;Z)=Hq(X,Y,Z)+Hq(X,Z)+Hq(Y,Z)Hq(Z)=q11ln[fX,Y,Z(x,y,z)]q1fX,Y,Z(x,y,z)dxdydz[fZ(z)]q1fZ(z)dz[fX,Z(x,z)]q1fX,Z(x,z)dxdz[fY,Z(y,Z)]q1fY,Z(y,z)dydz

4.线性熵,线性互信息和线性条件互信息

X = ( X 1 , X 2 , . . . , X n ) X=(X_{1},X_{2},...,X_{n}) X=(X1,X2,...,Xn)是均值向量为0,协方差矩阵为 Σ \Sigma Σ的n维高斯分布向量,其概率密度函数为: f ( x ) = ∣ W ∣ 1 2 ( 2 π ) 2 n e x p ( − 1 / 2 ∑ i , j = 1 n W i , j x i y j ) f(x)=\frac{|W|^{\frac{1}{2}}}{(2\pi)^{\frac{2}{n}}}exp(-1/2\sum_{i,j=1}^{n}W_{i,j}x_{i}y_{j}) f(x)=(2π)n2W21exp(1/2i,j=1nWi,jxiyj)
式中, W = Σ − 1 W=\Sigma ^{-1} W=Σ1, ∣ W ∣ |W| W为矩阵 W W W的行列式。
可以推出,线性Shann熵为 H 1 l ( X ) = ln ⁡ [ ( 2 π ) 1 / 2 ∣ W ∣ 1 2 ] + 1 2 ∫ ( ∑ i , j = 1 n W i j x i x j ) f ( x ) d x = n 2 ln ⁡ ( 2 π ) + 1 2 ln ⁡ ∣ Σ ∣ H_{1}^{l}(X)=\ln{[\frac{(2\pi)^{1/2}}{|W|^{\frac{1}{2}}}]}+\frac{1}{2}\int (\sum_{i,j=1}^{n}W_{ij}x_{i}x_{j})f(x)d_{x}=\frac{n}{2}\ln{(2\pi)}+ \frac{1}{2}\ln{|\Sigma |} H1l(X)=ln[W21(2π)1/2]+21(i,j=1nWijxixj)f(x)dx=2nln(2π)+21lnΣ
定义q阶广义线性熵 H q l ( X ) = 1 1 − q ln ⁡ [ ∣ W ∣ q 2 ( 2 π ) q n / 2 ∫ e x p ( − q 2 ∑ i , j = 1 n W i j x i x j ) d x ] H_{q}^{l}(X)=\frac{1}{1-q} \ln{[\frac{|W|^{\frac{q}{2}}}{(2\pi)^{qn/2}}}\int exp(-\frac{q}{2}\sum_{i,j=1}^{n}W_{ij}x_{i}x_{j})d_{x}] Hql(X)=1q1ln[(2π)qn/2W2qexp(2qi,j=1nWijxixj)dx]
利用 ∣ q W ∣ = q n ∣ W ∣ |qW|=q^{n}|W| qW=qnW可得:
H q l ( X ) = 1 1 − q ln ⁡ [ ∣ W ∣ q − 1 2 ( 2 π ) ( q − 1 ) n / 2 ] = n 2 ln ⁡ ( 2 π ) + 1 2 ln ⁡ ∣ Σ ∣ + n ln ⁡ q 2 ( q − 1 ) H_{q}^{l}(X)=\frac{1}{1-q} \ln{[\frac{|W|^{\frac{q-1}{2}}}{(2\pi)^{(q-1)n/2}}}]=\frac{n}{2}\ln{(2\pi)}+ \frac{1}{2}\ln{|\Sigma |}+\frac{n\ln{q}}{2(q-1)} Hql(X)=1q1ln[(2π)(q1)n/2W2q1]=2nln(2π)+21lnΣ+2(q1)nlnq
随机变量 X \mathbf{X} X Y \mathbf{Y} Y的q阶线性互信息 I l ( X ; Y ) I^{l}(X;Y) Il(X;Y)定义为: I q l ( X ; Y ) = H q l ( X ) + H q l ( Y ) − H q l ( X , Y ) I_{q}^{l}(X;Y)=H_{q}^{l}(X)+H_{q}^{l}(Y)-H_{q}^{l}(X,Y) Iql(X;Y)=Hql(X)+Hql(Y)Hql(X,Y)
在已知随机变量 Z \mathbf{Z} Z的条件下, X \mathbf{X} X Y \mathbf{Y} Y之间的q阶线性条件互信息 I l ( X ; Y ∣ Z ) I^{l}(X;Y|Z) Il(X;YZ)定义为: I q l ( X ; Y ∣ Z ) = H q l ( X , Z ) + H q l ( Y , Z ) − H q l ( X , Y , Z ) − H q l ( Z ) = 1 2 ln ⁡ ∣ Σ X Z ∣ ∣ Σ Y Z ∣ ∣ Σ X Y Z ∣ ∣ Σ Z ∣ I_{q}^{l}(X;Y|Z)=H_{q}^{l}(X,Z)+H_{q}^{l}(Y,Z)-H_{q}^{l}(X,Y,Z)-H_{q}^{l}(Z)=\frac{1}{2}\ln{\frac{|\Sigma _{XZ}||\Sigma _{YZ}|}{|\Sigma _{XYZ}||\Sigma _{Z}|} } Iql(X;YZ)=Hql(X,Z)+Hql(Y,Z)Hql(X,Y,Z)Hql(Z)=21lnΣXYZΣZΣXZΣYZ
其中 ∣ Σ X Y Z ∣ |\Sigma _{XYZ}| ΣXYZ, ∣ Σ X Z ∣ |\Sigma _{XZ}| ΣXZ, ∣ Σ Y Z ∣ |\Sigma _{YZ}| ΣYZ ∣ Σ Z ∣ |\Sigma _{Z}| ΣZ分别表示 ( X , Y , Z ) (X,Y,Z) (X,Y,Z), ( X , Z ) (X,Z) (X,Z), ( Y , Z ) (Y,Z) (Y,Z), Z Z Z的协方差矩阵或方差。
根据定义,线性熵、线性互信息和线性条件互信息只能度量随机变量之间的线性相关关系。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ARIMA(差分自回归移动平均模型)是一种常用的时间序列分析和预测方法,它可以用来分析和预测未来的趋势和周期性变化。在Python中,使用statsmodels包可以很方便地建立ARIMA模型。下面是一个使用Python建立ARIMA模型的示例代码: ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.tsa.stattools import adfuller from statsmodels.tsa.arima_model import ARIMA # 读取数据 data = pd.read_csv('data.csv', index_col=0, parse_dates=True) # 检验时间序列的平稳性 def test_stationarity(timeseries): # 计算移动平均和移动标准差 rolling_mean = timeseries.rolling(window=12).mean() rolling_std = timeseries.rolling(window=12).std() # 绘制移动平均和移动标准差像 plt.plot(timeseries, color='blue', label='Original') plt.plot(rolling_mean, color='red', label='Rolling Mean') plt.plot(rolling_std, color='black', label='Rolling Std') plt.legend(loc='best') plt.title('Rolling Mean & Standard Deviation') plt.show() # 进行DF检验 print('Results of Dickey-Fuller Test:') dftest = adfuller(timeseries, autolag='AIC') dfoutput = pd.Series(dftest[0:4], index=['Test Statistic', 'p-value', '#Lags Used', 'Number of Observations Used']) for key, value in dftest[4].items(): dfoutput['Critical Value (%s)' % key] = value print(dfoutput) # 对时间序列进行差分操作 def difference(timeseries): diff = timeseries.diff() diff.dropna(inplace=True) return diff # 建立ARIMA模型 def arima_model(timeseries): # 对时间序列进行差分操作 diff = difference(timeseries) # 检验差分后的时间序列的平稳性 test_stationarity(diff) # 选择模型参数 p = range(0, 3) d = range(0, 3) q = range(0, 3) pdq = [(x, y, z) for x in p for y in d for z in q] aic = [] for i in pdq: try: model = ARIMA(timeseries, order=i) result = model.fit(disp=0) aic.append(result.aic) except: continue index = aic.index(min(aic)) best_pdq = pdq[index] # 建立ARIMA模型并进行预测 model = ARIMA(timeseries, order=best_pdq) result = model.fit(disp=0) pred = result.predict(start='2018-01-01', end='2019-01-01', dynamic=True) # 绘制预测结果像 plt.plot(timeseries, label='Original') plt.plot(pred, color='red', label='Predicted') plt.legend(loc='best') plt.title('ARIMA') plt.show() # 运行ARIMA模型 arima_model(data) ``` 以上代码中,我们首先使用pandas读取时间序列数据,并使用matplotlib绘制原始数据的像,用于观察时间序列的趋势和周期性变化。接着,我们使用DF检验方法检验时间序列的平稳性,如果时间序列不平稳,我们使用差分方法将其转化为平稳时间序列。然后,我们使用ARIMA模型时间序列进行建模和预测,最后使用matplotlib绘制预测结果像。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值