从状态空间模型到卡尔曼滤波
一、时间序列分析
时间序列分析包含两种方式,一种是传统的时间序列分析法,研究时间序列能否被分解为由不同因素引起的变动;另外一种是通过建模的方式,常用的时间序列模型包含自回归模型(AR)、滑动平均模型(MA)、自回归滑动平均模型(ARMA)
、以及差分自回归滑动平均模型(ARIMA)
等。不同的模型适用的条件不同。
1. AR
模型
如果时间序列的任意数值都可表示为自回归方程,那么该时间序列服从P阶的自回归过程。表示为AR§:
x(t)=Φ1xt−1+Φ2xt−2+Φpxt−p+ut
x(t) = \Phi_1 x_{t-1} + \Phi_2x_{t-2} + \Phi_px_{t-p} + u_t
x(t)=Φ1xt−1+Φ2xt−2+Φpxt−p+ut
xt,xt−1,xt−2,......xt−p为不同时间点记录的数据值Φ1,Φ2Φ3......Φp为自回归系数ut为白噪声,一般假设服从(0,σ2)的分布 x_t,x_{t-1}, x_{t-2},... ...x_{t-p} 为不同时间点记录的数据值 \\ \Phi_1,\Phi_2\Phi_3 ... ... \Phi_p 为自回归系数 \\ u_t 为白噪声,一般假设服从(0, \sigma ^ 2)的分布 xt,xt−1,xt−2,......xt−p为不同时间点记录的数据值Φ1,Φ2Φ3......Φp为自回归系数ut为白噪声,一般假设服从(0,σ2)的分布
AR(1)表示一阶自回归模型如式(1); AR(2)表示二阶自回归模型如式(2):
xt=Φ1xt−1+ut(1)
x_t = \Phi_1x_{t-1} + u_t \\ \tag 1
xt=Φ1xt−1+ut(1)
xt=Φ1xt−1+Φ2xt−2+ut(2) x_t = \Phi_1x_{t-1} + \Phi_2x_{t-2} + u_t \\ \tag 2 xt=Φ1xt−1+Φ2xt−2+ut(2)
2. MA
模型
xt=ut+θ1ut−1+θ2ut−2+......θqut−qut,ut−1,ut−2,ut−3,ut−q表示不同时间的噪声点θ1,θ2,θ3,θq表示回归方程系数 x_t = u_t + \theta_1u_{t-1} + \theta_2u_{t-2} + ... ... \theta_qu_{t-q} u_t, u_{t-1}, u_{t-2}, u_{t-3}, u_{t-q} 表示不同时间的噪声点\\ \theta_1, \theta_2, \theta_3, \theta_q 表示回归方程系数 xt=ut+θ1ut−1+θ2ut−2+......θqut−qut,ut−1,ut−2,ut−3,ut−q表示不同时间的噪声点θ1,θ2,θ3,θq表示回归方程系数
MA(2)表示二阶MA模型:
xt=ut+θ1ut−1+θ2ut−2(3)
x_t = u_t + \theta_1u_{t-1} + \theta_2u_{t-2} \tag 3
xt=ut+θ1ut−1+θ2ut−2(3)
从上述表达式可以看出AR模型解决了测量值的问题,MA模型解决了白噪声的问题。本质上MA模型是对AR模型的补充。
3. ARMA
模型
根据上述的式子,将AR和MA结合就形成了ARMA
模型,因此模型具有ARMA(p, q)
两个阶数。p是自回归阶数,q为移动平均阶数。
xt=Φ1xt−1+Φ2xt−2+Φ3xt−3+......Φpxt−p+ut+θ1ut−1+θ2ut−2+θ3ut−3+......θqut−q(4)
x_t = \Phi_1x_{t-1} + \Phi_2x_{t-2} + \Phi_3x_{t-3} + ... ... \Phi_px_{t-p} + u_t + \theta_1 u_{t-1} + \theta_2u_{t-2} + \theta_3u_{t-3} + ... ...\theta_qu_{t-q}\\ \tag 4
xt=Φ1xt−1+Φ2xt−2+Φ3xt−3+......Φpxt−p+ut+θ1ut−1+θ2ut−2+θ3ut−3+......θqut−q(4)
从式(4)中来看,ARMA
综合了AR模型和MA模型的优势,AR模型根据前面时间步得到了当前时间步的值,MA模型解决了随机变量的值。由此也可见自回归模型是通过自身求解自身值的一种思路。
4. ARIMA
模型
ARMA
模型主要针对平稳序列分析,如果是模型为非平稳序列,则上述模型就不在使用。因此,提出了AMIMA
。所谓非平稳序列就是序列的均值和方差随时间变化1,但是经过差分之后序列成为平稳序列。所以模型写为ARIMA(p,d,q)
,p代表了自回归的阶数, d代表了差分的次数,q代表了移动平均的阶数。
二、状态空间模型(SS)
状态空间模型是物理系统的数学表示,是由一阶微分方程相关的一组输入、输出和状态变量。状态变量定义输出变量的值。
在连续时间中,状态空间模型符合下列表达式:
x^=Ax+Buy=Cx+Du(5)
\widehat{x} = Ax + Bu \\
y = Cx + Du \tag 5
x=Ax+Buy=Cx+Du(5)
其中x, u, y 代表了状态、输入、输出,A,B,C,D代表了状态空间矩阵。从表达式的形式上看状态空间模型和ARMA
的表达式一样。事实上,任意一个ARMA
过程都有一个状态空间模型与之对应,任何状态空间也可用ARMA
来表示。
三、通过状态空间模型来去除脑电伪迹和提取脑电节律
1. 考虑ARMA(p, p-1)
模型:
Xt=∑i=1pAjXt−i+et+∑j=1p−1Djet−j(6) X_t = \sum_{i=1}^p A_j X_{t-i} + e_t + \sum_{j=1}^{p-1}D_je_{t-j} \tag 6 Xt=i=1∑pAjXt−i+et+j=1∑p−1Djet−j(6)
Aj,Dj是模型系数,Xt是模型输出,et是0均值白噪声 A_j, D_j是模型系数,X_t是模型输出,e_t是0均值白噪声 Aj,Dj是模型系数,Xt是模型输出,et是0均值白噪声
对于一个ARMA(2,1)
的模型表示为:
yn=a1y(n−1)+a2y(n−2)+η(n)+d1η(n−1)(7)
y_{n} = a_1y(n-1) + a_2y(n-2) + \eta(n) + d_1\eta(n-1) \tag 7
yn=a1y(n−1)+a2y(n−2)+η(n)+d1η(n−1)(7)
假设:
求出A的特征值,实际信号中特征值可能是实根也可能是复数根,对于复数根,通过欧拉恒等变化转换为三角函数。通过变换之后A的Jordan标准型矩阵为:M个模态矩阵和n个实特征值组成。则多输出系统状态空间模型描述为:
X(n)=A~X(n−1)+B~η(n)y(n)=C~x(n)+ε(n)其中η(n)为系统噪声,服从N(0,Q)的高斯分布,ε(n)为观测噪声,服从N(0,R)的分布(12)
X(n) = \widetilde{A}X(n-1) + \widetilde{B}\eta(n) \\
y(n) = \widetilde{C}x(n) + \varepsilon(n) \tag{12} \\
其中 \eta(n) 为系统噪声,服从N(0, Q)的高斯分布,\varepsilon(n)为观测噪声,服从N(0, R)的分布
X(n)=AX(n−1)+Bη(n)y(n)=Cx(n)+ε(n)其中η(n)为系统噪声,服从N(0,Q)的高斯分布,ε(n)为观测噪声,服从N(0,R)的分布(12)
假定两者的协方差矩阵均为对角阵:
Q=diag(θ12,θm2,...θm+n2)R=diag(σ12,σm2,...σl2)(13)
Q = diag(\theta_1^2, \theta_m^2, ... \theta_{m+n}^2 ) \\
R = diag(\sigma_1^2, \sigma_m^2, ... \sigma_l^2) \tag{13}
Q=diag(θ12,θm2,...θm+n2)R=diag(σ12,σm2,...σl2)(13)
参考文献:
黄丽敏,郝崇清,李斌.基于状态空间模型的脑电去伪迹与节律提取[J].河北工业科技,2013,30(3):147-151
四、卡尔曼滤波
卡尔曼滤波是一种自回归滤波器,可以根据之前状态的估计值和当前的测量值,找到当前状态的最优估计值。因此,不需要记录观测或者估计的历史信息。在计算和存储上都有极大的优势
链接:https://zh.wikipedia.org/wiki/%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2
将状态空间模型和卡尔曼滤波相结合,可以分解出脑电中的伪迹和脑电节律。但是对于状态空间模型来说,如果阶数太低,分解不足,难以得到有效的成分。但是分解阶数作为超参数,很难确定。