data modeling and machine intelligence - LEARNING FROM TIME SERIES DATA
本节目标:
- 理解如何使用普通最小二乘法(OLS)将时间序列模型拟合到数据中。
- 知晓如何使用预测未来时间序列数据。
- 能够对自回归模型(AR)、移动平均模型(MA)、自回归 - 外生变量模型(ARX)和自回归移动平均 - 外生变量模型(ARMAX)进行分类。
- 知晓如何迭代地拟合自回归移动平均 - 外生变量模型(ARMAX)。
时间序列数据(TIME SERIES DATA)
- 静态特征数据:之前在监督学习问题中考虑的是“静态”特征数据。输入是 x ^ ∈ R m \hat{x} \in \mathbb{R}^m x^∈Rm,通过模型 f ( x ^ ) f(\hat{x}) f(x^) 得到预测值 y ^ \hat{y} y^。这表明输入是一个 m m m 维的向量,经过模型计算后产生预测结果。
- 动态(时间序列)特征数据:接下来考虑的是“动态”(按时间排序)的特征数据。输入是一个由 N N N 个时间点的数据组成的向量 [ x ^ ( t ) ⋮ x ^ ( t + N − 1 ) ] ∈ R N \begin{bmatrix} \hat{x}(t) \\ \vdots \\ \hat{x}(t + N - 1) \end{bmatrix} \in \mathbb{R}^N x^(t)⋮x^(t+N−1) ∈RN,经过模型 f ( [ x ^ ( t ) ⋮ x ^ ( t + N − 1 ) ] ) f\left(\begin{bmatrix} \hat{x}(t) \\ \vdots \\ \hat{x}(t + N - 1) \end{bmatrix}\right) f x^(t)⋮x^(t+N−1) 得到预测值 y ^ ( N ) \hat{y}(N) y^(N)。这里强调了输入数据是按时间顺序排列的一系列数据点,并且特征数据包含“已知”量,如历史标签数据或外生输入。
动态系统术语
基本元素
- 输入/外生变量(Input/Exogenous variable):表示为 u ( t ) u(t) u(t),是系统的外部输入。
- 系统(System):表示为 x ( t ) x(t) x(t),是整个动态系统的核心部分。
- 干扰/误差(Disturbance/error):表示为 ϵ ( t ) \epsilon(t) ϵ(t),是影响系统的外部干扰因素或误差项。
- 输出(Output):表示为 y ( t ) y(t) y(t),是系统产生的可测量结果。系统的内部状态通常用 x ( t ) x(t) x(t) 表示,输出通常是内部状态的函数,即 y ( t ) = g ( x ( t ) ) y(t)=g(x(t)) y(t)=g(x(t))。当 y ( t ) = x ( t ) y(t)=x(t) y(t)=x(t) 时,这种情况被称为全状态反馈(full state feedback)。
系统模型类型
- 连续时间模型(Continuous time models):形式为 x ˙ ( t ) = f ( x ( t ) , u ( t ) ) \dot{x}(t)=f(x(t),u(t)) x˙(t)=f(x(t),u(t)),其中线性系统 x ˙ ( t ) = A x ( t ) + B u ( t ) \dot{x}(t)=Ax(t)+Bu(t) x˙(t)=Ax(t)+Bu(t) 是其一种特殊情况。这里 x ˙ ( t ) \dot{x}(t) x˙(t) 表示 x ( t ) x(t) x(t) 对时间的导数。
- 离散时间模型(Discrete time models):形式为 x ( t + 1 ) = f ( x ( t ) , u ( t ) ) x(t + 1)=f(x(t),u(t)) x(t+1)=f(x(t),u(t)),描述了系统在离散时间点上的状态转移关系。
自回归模型(AR)
线性预测模型
线性预测模型假设
假设未来输出服从线性参数模型:
y
(
t
)
=
ψ
(
t
)
⊤
θ
+
ϵ
(
t
)
y(t)=\psi(t)^{\top}\theta+\epsilon(t)
y(t)=ψ(t)⊤θ+ϵ(t)其中:
- ψ ( t ) ∈ R m \psi(t)\in\mathbb{R}^m ψ(t)∈Rm 是在时间 t t t 已知的数据向量。
- θ ∈ R m \theta\in\mathbb{R}^m θ∈Rm 是我们可以进行优化的模型参数。
- ϵ ( t ) \epsilon(t) ϵ(t) 是建模和测量误差。
线性模型示例
y
(
t
)
=
θ
1
u
(
t
)
+
θ
2
y(t)=\theta_1u(t)+\theta_2
y(t)=θ1u(t)+θ2
在这个例子中,对应的数据向量
ψ
(
t
)
=
(
u
(
t
)
1
)
\psi(t)=\begin{pmatrix}u(t)\\1\end{pmatrix}
ψ(t)=(u(t)1) 。模型参数
θ
\theta
θ 是线性的。
具体来说, ψ ( t ) ⊤ θ \psi(t)^{\top}\theta ψ(t)⊤θ 是向量 ψ ( t ) \psi(t) ψ(t) 与向量 θ \theta θ 的内积形式,展开后是 θ \theta θ 各个分量的线性组合 。
例如,若 ψ ( t ) = [ ψ 1 ( t ) , ψ 2 ( t ) , ⋯ , ψ m ( t ) ] ⊤ \psi(t)=[\psi_1(t),\psi_2(t),\cdots,\psi_m(t)]^{\top} ψ(t)=[ψ1(t),ψ2(t),⋯,ψm(t)]⊤, θ = [ θ 1 , θ 2 , ⋯ , θ m ] ⊤ \theta = [\theta_1,\theta_2,\cdots,\theta_m]^{\top} θ=[θ1,θ2,⋯,θm]⊤,则 ψ ( t ) ⊤ θ = ∑ i = 1 m ψ i ( t ) θ i \psi(t)^{\top}\theta=\sum_{i = 1}^{m}\psi_i(t)\theta_i ψ(t)⊤θ=∑i=1mψi(t)θi ,没有出现 θ \theta θ 的非线性运算(如平方、开方、指数等),所以该模型是线性模型。
预测
模型拟合
假设我们已使用数据拟合了如下模型:
y
^
(
t
)
=
ψ
(
t
)
⊤
θ
^
\hat{y}(t)=\psi(t)^{\top}\hat{\theta}
y^(t)=ψ(t)⊤θ^ 。这里
y
^
(
t
)
\hat{y}(t)
y^(t) 是预测输出,
ψ
(
t
)
\psi(t)
ψ(t) 是已知的数据向量,
θ
^
\hat{\theta}
θ^ 是估计的模型参数。
步骤
我们可以用这个模型对未来若干时间步的输出进行预测。预测结果
Y
^
\hat{Y}
Y^ 是一个向量,其形式为
Y
^
=
[
y
^
(
1
)
⋮
y
^
(
N
)
]
=
[
ψ
(
1
)
⊤
θ
^
⋮
ψ
(
N
)
⊤
θ
^
]
=
[
ψ
1
(
1
)
⋯
ψ
m
(
1
)
⋮
⋱
⋮
ψ
1
(
N
)
⋯
ψ
m
(
N
)
]
θ
^
\hat{Y}=\begin{bmatrix}\hat{y}(1)\\\vdots\\\hat{y}(N)\end{bmatrix}=\begin{bmatrix}\psi(1)^{\top}\hat{\theta}\\\vdots\\\psi(N)^{\top}\hat{\theta}\end{bmatrix}=\begin{bmatrix}\psi_1(1)&\cdots&\psi_m(1)\\\vdots&\ddots&\vdots\\\psi_1(N)&\cdots&\psi_m(N)\end{bmatrix}\hat{\theta}
Y^=
y^(1)⋮y^(N)
=
ψ(1)⊤θ^⋮ψ(N)⊤θ^
=
ψ1(1)⋮ψ1(N)⋯⋱⋯ψm(1)⋮ψm(N)
θ^ 在预测的情境下,右侧的矩阵被称为回归矩阵(regressor matrix)。
示例
还是上面那个例子:
y
(
t
)
=
θ
1
^
u
(
t
)
+
θ
2
^
y(t)=\widehat{\theta_1}u(t)+\widehat{\theta_2}
y(t)=θ1
u(t)+θ2
,对应的数据向量
ψ
(
t
)
=
(
u
(
t
)
1
)
\psi(t)=\begin{pmatrix}u(t)\\1\end{pmatrix}
ψ(t)=(u(t)1) 。假设
u
(
t
)
u(t)
u(t) 在时间步
t
=
1
,
2
,
3
,
4
,
5
t = 1,2,3,4,5
t=1,2,3,4,5 的取值分别为
0
,
1
,
2
,
3
,
4
0,1,2,3,4
0,1,2,3,4 ,则预测矩阵
Y
^
=
[
0
1
1
1
2
1
3
1
4
1
]
θ
^
\hat{Y}=\begin{bmatrix}0&1\\1&1\\2&1\\3&1\\4&1\end{bmatrix}\hat{\theta}
Y^=
0123411111
θ^ 。该示例展示了从给定模型到确定数据向量,再到构建预测矩阵的完整过程。
使用延迟数据进行预测
背景
在时间阶段
t
t
t,我们可能会记得之前的输出
y
(
1
)
,
…
,
y
(
t
−
1
)
y(1), \ldots, y(t - 1)
y(1),…,y(t−1)。因此,我们可能希望将这些数据作为预测模型的一部分。这种模型被称为自回归(Auto - Regressive, AR)模型。
公式
AR模型记为
A
R
(
n
y
)
AR(n_y)
AR(ny),其表达式为
y
(
t
)
=
θ
1
y
(
t
−
1
)
+
⋯
+
θ
n
y
y
(
t
−
n
y
)
+
ϵ
(
t
)
y(t)=\theta_1y(t - 1)+\cdots+\theta_{n_y}y(t - n_y)+\epsilon(t)
y(t)=θ1y(t−1)+⋯+θnyy(t−ny)+ϵ(t)
其中, y ( t ) y(t) y(t) 是当前时刻的输出, y ( t − 1 ) , … , y ( t − n y ) y(t - 1), \ldots, y(t - n_y) y(t−1),…,y(t−ny) 是过去时刻的输出, θ 1 , … , θ n y \theta_1, \ldots, \theta_{n_y} θ1,…,θny 是模型参数, ϵ ( t ) \epsilon(t) ϵ(t) 是误差项。
A R ( n y ) AR(n_y) AR(ny) 模型可以写成 y ^ ( t ) = ψ ( t ) ⊤ θ ^ \hat{y}(t)=\psi(t)^{\top}\hat{\theta} y^(t)=ψ(t)⊤θ^ 的形式,其中 ψ ( t ) = [ y ( t − 1 ) , … , y ( t − n y ) ] ⊤ ∈ R n y \psi(t)=[y(t - 1), \ldots, y(t - n_y)]^{\top} \in \mathbb{R}^{n_y} ψ(t)=[y(t−1),…,y(t−ny)]⊤∈Rny。这类模型被称为自回归模型,因为“标签”数据同时也是“特征”数据。
在实际应用中,通常存在数据延迟收集的情况,所以AR模型非常有用。
自回归模型的回归矩阵
-
AR模型表达式
考虑一个 A R ( n y ) AR(n_y) AR(ny) 模型,其表达式同上,为 y ^ ( t ) = θ 1 ^ y ( t − 1 ) + ⋯ + θ n y ^ y ( t − n y ) \hat{y}(t)=\widehat{\theta_1}y(t - 1)+\cdots+\widehat{\theta_{n_y}}y(t - n_y) y^(t)=θ1 y(t−1)+⋯+θny y(t−ny) -
数据假设
通常假定对于所有 t < 0 t < 0 t<0 的情况,数据向量 ψ ( t ) = 0 \psi(t)=0 ψ(t)=0 ,这其中包括 y ( t ) y(t) y(t) 和 u ( t ) u(t) u(t) 。时间 - 输出值如下:
t | 0 | … | N - 1 |
---|---|---|---|
y(t) | y(0) | … | y(N - 1) |
- 回归矩阵构建
预测向量 Y ^ = [ y ^ ( 1 ) ⋮ y ^ ( N ) ] \hat{Y}=\begin{bmatrix}\hat{y}(1)\\\vdots\\\hat{y}(N)\end{bmatrix} Y^= y^(1)⋮y^(N) ,它可以表示为 Y ^ = Ψ θ ^ \hat{Y}=\Psi\hat{\theta} Y^=Ψθ^ 的形式,其中 Ψ \Psi Ψ 是回归矩阵。
回归矩阵 Ψ \Psi Ψ 的构建方式如下:
- 矩阵的第一行是 [ y ( 0 ) , 0 , ⋯ , 0 ] [y(0), 0, \cdots, 0] [y(0),0,⋯,0] ,表示预测 y ^ ( 1 ) \hat{y}(1) y^(1) 时,只用到了 y ( 0 ) y(0) y(0) 这一个历史值(假设 n y ≥ 1 n_y \geq 1 ny≥1 ),其他滞后项为 0 0 0 (基于 t < 0 t < 0 t<0 时数据为 0 0 0 的假设)。
- 第二行是 [ y ( 1 ) , y ( 0 ) , ⋯ , 0 ] [y(1), y(0), \cdots, 0] [y(1),y(0),⋯,0] ,表示预测 y ^ ( 2 ) \hat{y}(2) y^(2) 时,用到了 y ( 1 ) y(1) y(1) 和 y ( 0 ) y(0) y(0) 两个历史值。
- 以此类推,最后一行是 [ y ( N − 1 ) , y ( N − 2 ) , ⋯ , y ( N − n y ) ] [y(N - 1), y(N - 2), \cdots, y(N - n_y)] [y(N−1),y(N−2),⋯,y(N−ny)] ,表示预测 y ^ ( N ) \hat{y}(N) y^(N) 时,用到了从 y ( N − 1 ) y(N - 1) y(N−1) 到 y ( N − n y ) y(N - n_y) y(N−ny) 共 n y n_y ny 个历史值(如果 N − n y ≥ 0 N - n_y \geq 0 N−ny≥0 )。
自回归 - 外生变量模型(ARX)
ARX模型定义
我们可以将AR模型扩展为ARX模型,记为 A R X ( n y , n u ) ARX(n_y,n_u) ARX(ny,nu),其表达式为 y ( t ) = θ 1 y ( t − 1 ) + ⋯ + θ n y y ( t − n y ) + w 1 u ( t − 1 ) + ⋯ + w n u u ( t − n u ) + ϵ ( t ) y(t)=\theta_1y(t - 1)+\cdots+\theta_{n_y}y(t - n_y)+w_1u(t - 1)+\cdots+w_{n_u}u(t - n_u)+\epsilon(t) y(t)=θ1y(t−1)+⋯+θnyy(t−ny)+w1u(t−1)+⋯+wnuu(t−nu)+ϵ(t)
其中, y ( t ) y(t) y(t) 是当前时刻的输出, y ( t − 1 ) , ⋯ , y ( t − n y ) y(t - 1),\cdots,y(t - n_y) y(t−1),⋯,y(t−ny) 是过去时刻的输出, θ 1 , ⋯ , θ n y \theta_1,\cdots,\theta_{n_y} θ1,⋯,θny 是对应输出的模型参数; u ( t − 1 ) , ⋯ , u ( t − n u ) u(t - 1),\cdots,u(t - n_u) u(t−1),⋯,u(t−nu) 是过去时刻的外生输入变量, w 1 , ⋯ , w n u w_1,\cdots,w_{n_u} w1,⋯,wnu 是对应外生输入的模型参数; ϵ ( t ) \epsilon(t) ϵ(t) 是误差项。
超参数说明
n
y
n_y
ny 和
n
u
n_u
nu 是自然数,属于“手动选取”的超参数,而非通过优化得到。
n
y
n_y
ny 和
n
u
n_u
nu 越大,意味着决策变量越多,这会使模型对训练数据的拟合效果更好,但同时也面临过拟合的风险。
模型形式转换
A
R
X
(
n
y
,
n
u
)
ARX(n_y,n_u)
ARX(ny,nu) 模型可以写成
y
^
(
t
)
=
ψ
(
t
)
⊤
θ
^
\hat{y}(t)=\psi(t)^{\top}\hat{\theta}
y^(t)=ψ(t)⊤θ^ 的形式,其中:
- ψ ( t ) = [ y ( t − 1 ) , ⋯ , y ( t − n y ) , u ( t − 1 ) , ⋯ , u ( t − n u ) ] ⊤ ∈ R n y + n u \psi(t)=[y(t - 1),\cdots,y(t - n_y),u(t - 1),\cdots,u(t - n_u)]^{\top}\in\mathbb{R}^{n_y + n_u} ψ(t)=[y(t−1),⋯,y(t−ny),u(t−1),⋯,u(t−nu)]⊤∈Rny+nu ,是由过去输出值和过去外生输入值组成的数据向量。
- θ ^ = [ θ 1 ^ , ⋯ , θ n y ^ , w 1 ^ , ⋯ , w n u ^ ] ⊤ ∈ R n y + n u \hat{\theta}=[\widehat{\theta_1},\cdots,\widehat{\theta_{n_y}},\widehat{w_1},\cdots,\widehat{w_{n_u}}]^{\top}\in\mathbb{R}^{n_y + n_u} θ^=[θ1 ,⋯,θny ,w1 ,⋯,wnu ]⊤∈Rny+nu ,是由对应参数组成的参数向量。
ARX模型的回归矩阵
- 数据假设:通常假定对于所有 t < 0 t < 0 t<0的情况,数据向量 ψ ( t ) = 0 \psi(t)=0 ψ(t)=0,这其中包括 y ( t ) y(t) y(t)和 u ( t ) u(t) u(t)。从 t = 0 t = 0 t=0到 t = N − 1 t = N - 1 t=N−1时刻的 y ( t ) y(t) y(t)和 u ( t ) u(t) u(t)的取值情况如下:
t | 0 | … | N - 1 |
---|---|---|---|
y(t) | y(0) | … | y(N - 1) |
u(t) | u(0) | … | u(N - 1) |
- 预测向量与回归矩阵关系:预测向量 Y ^ = [ y ^ ( 1 ) ⋮ y ^ ( N ) ] \hat{Y}=\begin{bmatrix}\hat{y}(1)\\\vdots\\\hat{y}(N)\end{bmatrix} Y^= y^(1)⋮y^(N) ,它可以表示为 Y ^ = Ψ θ ^ \hat{Y}=\Psi\hat{\theta} Y^=Ψθ^的形式,其中 Ψ \Psi Ψ是回归矩阵。需注意, Y ^ \hat{Y} Y^向量使用的时间数据是 { 1 , ⋯ , N } \{1,\cdots,N\} {1,⋯,N},而回归矩阵 Ψ \Psi Ψ使用的时间数据是 { 0 , ⋯ , N − 1 } \{0,\cdots,N - 1\} {0,⋯,N−1}。
- 回归矩阵构建:回归矩阵
Ψ
\Psi
Ψ是一个
N
×
(
n
y
+
n
u
)
N\times(n_y + n_u)
N×(ny+nu)的矩阵。
其构建方式为:矩阵中前半部分是基于过去输出 y ( t ) y(t) y(t)的数据,从第一行开始,每行依次是不同时刻往前追溯 n y n_y ny个时刻的 y ( t ) y(t) y(t)值(不足部分补0);后半部分是基于过去外生输入 u ( t ) u(t) u(t)的数据,每行依次是不同时刻往前追溯 n u n_u nu个时刻的 u ( t ) u(t) u(t)值(不足部分补0)。
使用普通最小二乘法(OLS)拟合ARX模型
拟合目标
假设我们想用给定数据拟合一个
A
R
X
(
n
y
,
n
u
)
ARX(n_y, n_u)
ARX(ny,nu)模型。为实现这一目标,需要最小化误差平方和,其数学表达式为
min
∑
i
=
1
N
(
y
i
−
y
^
i
)
2
=
min
∥
Y
−
Y
^
∥
2
2
=
min
∥
Y
−
Ψ
θ
∥
2
2
\min \sum_{i = 1}^{N}(y_i - \hat{y}_i)^2 = \min \|Y - \hat{Y}\|_2^2 = \min \|Y - \Psi\theta\|_2^2
mini=1∑N(yi−y^i)2=min∥Y−Y^∥22=min∥Y−Ψθ∥22 其中,
y
i
y_i
yi是实际输出值,
y
^
i
\hat{y}_i
y^i是模型预测输出值,
Y
Y
Y是实际输出值向量,
Y
^
\hat{Y}
Y^是预测输出值向量,
Ψ
\Psi
Ψ是回归矩阵,
θ
\theta
θ是模型参数向量。
该问题本质上就是OLS问题,存在解析解。而最小二乘问题的解析解为 θ ∗ = ( Ψ ⊤ Ψ ) − 1 Ψ ⊤ Y \theta^* = (\Psi^{\top}\Psi)^{-1}\Psi^{\top}Y θ∗=(Ψ⊤Ψ)−1Ψ⊤Y其中 Ψ \Psi Ψ是上面给出的ARX模型的回归矩阵。
在使用最小二乘法拟合模型时外生输入(激励输入)的作用
一、 最小二乘法条件
为了使用最小二乘法的解析公式,要求
Ψ
⊤
Ψ
\Psi^{\top}\Psi
Ψ⊤Ψ 是可逆的。这是使用最小二乘法求解模型参数的一个重要前提条件。
在ARX模型这类情境下,不用外生输入, Ψ ⊤ Ψ \Psi^{\top}\Psi Ψ⊤Ψ不一定可逆,原因如下:
-
从ARX模型结构来看
ARX(自回归 - 外生变量)模型包含了系统自身过去输出以及外生输入变量对当前输出的影响。当只有系统自身过去输出(类似AR模型情况,没有外生输入)时,回归矩阵 Ψ \Psi Ψ只由过去输出值构成。如果系统本身的动态特性导致这些过去输出值之间存在较强的相关性(比如输出序列呈现出高度的自相关性,在一些平稳的时间序列中较为常见),那么 Ψ ⊤ Ψ \Psi^{\top}\Psi Ψ⊤Ψ的行列式可能为零或者非常接近于零,从而导致 Ψ ⊤ Ψ \Psi^{\top}\Psi Ψ⊤Ψ不可逆。 -
从数据生成角度
外生输入的一个重要作用是激励系统产生多样化、不相关的数据。如果没有外生输入,系统的输出仅依赖于自身过去状态,可能会陷入某种周期性或相关性较强的模式,使得 Ψ \Psi Ψ矩阵的列向量之间存在线性相关关系。而 Ψ ⊤ Ψ \Psi^{\top}\Psi Ψ⊤Ψ可逆的一个重要条件是 Ψ \Psi Ψ的列向量线性无关。当外生输入存在时,通过合理设计(如采用阶跃函数、正弦函数和等作为外生输入),可以打破这种相关性,增加 Ψ \Psi Ψ矩阵列向量的线性独立性,进而保证 Ψ ⊤ Ψ \Psi^{\top}\Psi Ψ⊤Ψ可逆,以便能够使用最小二乘法的解析公式来求解模型参数。
二、丰富模型信息
外生输入可以引入额外信息,除了考虑系统自身过去的输出(如 AR 模型),还能纳入其他外部因素对系统输出的影响,使模型更贴近实际情况,提升对系统行为的解释和预测能力。例如在预测销售额时,除了依据过去的销售数据,还可将促销活动、季节等外生因素作为外生输入纳入模型。
三、系统激励与数据生成
作为激励系统的手段,外生输入能够促使系统产生不同的响应,生成丰富多样的数据。这些数据可用于更好地训练和验证模型,提高模型的泛化能力和准确性。不同类型的外生输入(如阶跃函数、正弦函数和)能从不同角度激发系统特性,帮助挖掘系统的动态行为。
常见外生输入(激励输入)
- 阶跃函数: u ( t ) = { 0 if t < 0 u 0 otherwise u(t)=\begin{cases}0 & \text{if } t < 0 \\ u_0 & \text{otherwise} \end{cases} u(t)={0u0if t<0otherwise,即在 t < 0 t < 0 t<0 时取值为 0 0 0,其他时刻取值为 u 0 u_0 u0 。
- 正弦函数和: u ( t ) = ∑ j = 1 N a j sin ( ω j t + ν j ) u(t)=\sum_{j = 1}^{N}a_j\sin(\omega_j t + \nu_j) u(t)=∑j=1Najsin(ωjt+νj) ,由不同幅度 a j a_j aj 和权重的正弦函数叠加而成。
激励输入的选择通常被视为一个超参数,一般通过启发式方法来选择。
拟合ARX模型的数值示例
-
设定真实模型
假设真实模型满足以下 A R X ( 1 , 1 ) ARX(1, 1) ARX(1,1)模型: y ( t ) = 0.5 y ( t − 1 ) + 0.75 u ( t − 1 ) + ϵ ( t ) y(t)=0.5y(t - 1)+0.75u(t - 1)+\epsilon(t) y(t)=0.5y(t−1)+0.75u(t−1)+ϵ(t),其中 ϵ ( t ) ∈ N ( 0 , 1 ) \epsilon(t)\in N(0, 1) ϵ(t)∈N(0,1),即误差项 ϵ ( t ) \epsilon(t) ϵ(t)服从均值为 0 0 0、方差为 1 1 1的正态分布。 -
生成数据集
使用随机激励序列生成数据集,对应的Matlab代码为u = 2*(1 - 2*rand(N, 1))
。这行代码通过rand(N, 1)
生成一个 N N N行 1 1 1列的随机数矩阵(随机数取值在 0 0 0到 1 1 1之间),再经过变换生成取值在 − 2 -2 −2到 2 2 2之间的随机激励序列 u u u。 -
生成输出数据
考虑正态分布噪声,生成输出数据 y y y。Matlab代码如下:
e = randn(N, 1);
y = zeros(N, 1);
for i = 2:N
y(i) = 0.5*y(i - 1)+0.75*u(i - 1)+e(i);
end
上述代码首先通过randn(N, 1)
生成一个
N
N
N行
1
1
1列的服从标准正态分布的噪声向量
e
e
e;然后初始化输出向量
y
y
y为全
0
0
0的
N
N
N行
1
1
1列矩阵;最后通过循环,根据设定的
A
R
X
(
1
,
1
)
ARX(1, 1)
ARX(1,1)模型生成输出数据
y
y
y。
-
构建回归矩阵
构建回归矩阵 Ψ \Psi Ψ,Matlab代码为for i = 2:N; psi(i, :) = [y(i - 1) u(i - 1)]; end
。该循环从第 2 2 2个时间步开始,将前一个时间步的输出 y ( i − 1 ) y(i - 1) y(i−1)和外生输入 u ( i − 1 ) u(i - 1) u(i−1)组合成一行,构建回归矩阵 Ψ \Psi Ψ。 -
求解OLS问题
使用普通最小二乘法(OLS)求解模型参数 θ \theta θ,Matlab代码为theta = inv(psi'*psi)*psi'*y
。这行代码根据最小二乘法的解析解公式 θ ∗ = ( Ψ ⊤ Ψ ) − 1 Ψ ⊤ Y \theta^* = (\Psi^{\top}\Psi)^{-1}\Psi^{\top}Y θ∗=(Ψ⊤Ψ)−1Ψ⊤Y,计算得到模型参数 θ \theta θ,其中inv
表示求逆矩阵,psi'
表示对psi
矩阵进行转置。
在实际中,随着时间增加,数据点数量增加,模型参数误差会减小。
横轴为数据点数量,纵轴为参数误差。从图中可以看出,随着数据点数量的增加,参数误差总体呈下降趋势。在数据点数量达到一定程度(不是很多数据点之后),误差接近零。这表明,更多的数据点有助于提高模型参数估计的准确性,使得估计参数更接近真实参数。
真实输出与估计输出的比较
图表的横轴为时间步(Time steps),纵轴为输出(Output)。图中有两条曲线,蓝色曲线代表估计输出(Estimated output),橙色曲线代表真实输出(True Output)。可以看到,两条曲线的走势大致相似,但存在一定的波动差异。
计算公式:
- 真实输出 y t r u e ( t ) = 0.5 y t r u e ( t − 1 ) + 0.75 u ( t − 1 ) + ϵ ( t ) y_{true}(t)=0.5y_{true}(t - 1)+0.75u(t - 1)+\epsilon(t) ytrue(t)=0.5ytrue(t−1)+0.75u(t−1)+ϵ(t) ,其中包含了系统自身过去的输出、外生输入以及误差项 ϵ ( t ) \epsilon(t) ϵ(t) 。
- 估计输出 y ^ ( t ) = 0.5001 y t r u e ( t − 1 ) + 0.7506 u ( t − 1 ) \hat{y}(t)=0.5001y_{true}(t - 1)+0.7506u(t - 1) y^(t)=0.5001ytrue(t−1)+0.7506u(t−1) ,这里的参数 0.5001 0.5001 0.5001和 0.7506 0.7506 0.7506是通过普通最小二乘法(OLS)并使用200,000个数据点估计得到的。
由于测量误差的存在,真实输出和预测输出之间总是存在微小差异。
具有内部动态的示例
假设真实模型满足以下式子:
- x ( t ) = 0.5 x ( t − 1 ) + 0.75 u ( t − 1 ) x(t)=0.5x(t - 1)+0.75u(t - 1) x(t)=0.5x(t−1)+0.75u(t−1) ,描述了内部状态变量 x ( t ) x(t) x(t) 随时间的变化,它与前一时刻的内部状态 x ( t − 1 ) x(t - 1) x(t−1) 和外生输入 u ( t − 1 ) u(t - 1) u(t−1) 相关。
- y ( t ) = x ( t ) + ϵ ( t ) y(t)=x(t)+\epsilon(t) y(t)=x(t)+ϵ(t) ,其中 ϵ ( t ) ∼ N ( 0 , 1 ) \epsilon(t)\sim N(0,1) ϵ(t)∼N(0,1) ,表示输出 y ( t ) y(t) y(t) 由内部状态 x ( t ) x(t) x(t) 和服从均值为 0 0 0 、方差为 1 1 1 的正态分布的噪声 ϵ ( t ) \epsilon(t) ϵ(t) 组成。模型存在内部动态,并且能够将内部状态作为带有小噪声的输出进行测量。
该模型与之前的系统非常相似,通过重新整理可得:
y
(
t
)
=
0.5
y
(
t
−
1
)
−
0.5
ϵ
(
t
−
1
)
+
0.75
u
(
t
−
1
)
+
ϵ
(
t
)
y(t)=0.5y(t - 1)-0.5\epsilon(t - 1)+0.75u(t - 1)+\epsilon(t)
y(t)=0.5y(t−1)−0.5ϵ(t−1)+0.75u(t−1)+ϵ(t)
进一步尝试将其写成线性框架形式:
y
(
t
)
=
ψ
(
t
)
⊤
θ
−
0.5
ϵ
(
t
−
1
)
+
ϵ
(
t
)
y(t)=\psi(t)^{\top}\theta - 0.5\epsilon(t - 1)+\epsilon(t)
y(t)=ψ(t)⊤θ−0.5ϵ(t−1)+ϵ(t)
该模型与之前的数值示例不同,因为输出测量受到延迟噪声的影响。之前的示例可能没有这种延迟噪声对输出测量的干扰情况。
病态数值示例:普通最小二乘法失效的情况
尝试使用OLS拟合以下模型: y ( t ) = 0.5 y ( t − 1 ) + 0.75 u ( t − 1 ) + ϵ ( t ) y(t)=0.5y(t - 1)+0.75u(t - 1)+\epsilon(t) y(t)=0.5y(t−1)+0.75u(t−1)+ϵ(t)
其中, y ( t ) y(t) y(t) 是当前时刻的输出, y ( t − 1 ) y(t - 1) y(t−1) 是前一时刻的输出, u ( t − 1 ) u(t - 1) u(t−1) 是前一时刻的外生输入, ϵ ( t ) \epsilon(t) ϵ(t) 和 ϵ ( t − 1 ) \epsilon(t - 1) ϵ(t−1) 是噪声项。预测模型形式为 y ^ ( t ) = ψ ( t ) ⊤ θ ^ \hat{y}(t)=\psi(t)^{\top}\hat{\theta} y^(t)=ψ(t)⊤θ^ ,其中 ψ ( t ) = [ y ( t − 1 ) , u ( t − 1 ) ] ⊤ \psi(t)=[y(t - 1),u(t - 1)]^{\top} ψ(t)=[y(t−1),u(t−1)]⊤ 。
在这个模型中忽略了延迟噪声 − 0.5 ϵ ( t − 1 ) -0.5\epsilon(t - 1) −0.5ϵ(t−1) ,这可能是导致OLS失效的原因
生成数据的代码
- 首先通过
u=2*(1 - 2*rand(N, 1))
生成随机的外生输入序列 u u u 。 - 然后用
e=randn(N, 1)
生成服从标准正态分布的噪声序列 e e e ,并初始化输出序列 y y y 为全零向量y=zeros(N, 1)
。 - 通过循环
for i = 2:N
,按照模型公式y(i)=0.5*y(i - 1)+0.75*u(i - 1)+e(i)-0.5*e(i - 1)
生成输出数据 y y y 。 - 再通过另一个循环
for i = 2:N
构建回归矩阵psi
,最后用theta=inv(psi'*psi)*psi'*y
尝试使用OLS求解模型参数theta
。
输出图像
图表展示了使用200,000个数据点时模型的表现,横轴为时间步(Time steps),纵轴为输出(Output)。图中有两条曲线,蓝色曲线代表估计输出(Estimated output),橙色曲线代表真实输出(True Output)。可以看到,估计输出和真实输出之间存在较大偏差,说明在这种情况下OLS方法未能很好地拟合模型。
原因:参数估计不收敛到零
下图是随着估计参数
θ
\theta
θ与输入数据的关系图。
上图的横轴为数据点数量,纵轴为参数误差。从图中可以看出,无论使用多少数据点,参数误差始终没有减小到0.2以下,即误差不会随着数据点数量的增加而无限减小趋近于零。
在使用200,000个数据点后,估计参数为 θ ^ = [ 0.2501 , 0.7495 ] ⊤ \hat{\theta} = [0.2501, 0.7495]^{\top} θ^=[0.2501,0.7495]⊤,而真实参数为 θ ∗ = [ 0.5 , 0.75 ] ⊤ \theta^* = [0.5, 0.75]^{\top} θ∗=[0.5,0.75]⊤。可以发现,估计参数与真实参数并不接近,存在一定的偏差。
似乎如果我们忽略延迟噪声 0.5 ϵ ( t − 1 ) 0.5\epsilon(t - 1) 0.5ϵ(t−1),并应用普通最小二乘法(OLS),那么在参数估计中总是会存在一些误差。这表明,延迟噪声的存在对OLS方法的参数估计产生了显著影响,导致估计结果无法很好地收敛到真实参数值,即使使用大量数据也不能消除这种误差。
移动平均模型(MA)
普通最小二乘法解析解中的偏差
真实模型设定
假设真实的潜在动态关系由
y
(
t
)
=
ψ
(
t
)
⊤
θ
∗
+
ϵ
(
t
)
y(t)=\psi(t)^{\top}\theta^*+\epsilon(t)
y(t)=ψ(t)⊤θ∗+ϵ(t)给出,其中:
- ψ ( t ) ∈ R m \psi(t)\in\mathbb{R}^m ψ(t)∈Rm是在时刻 t t t已知的数据向量。
- θ ∗ ∈ R m \theta^*\in\mathbb{R}^m θ∗∈Rm是真实的模型参数。
- ϵ ( t ) \epsilon(t) ϵ(t)是“白噪声”,具有零均值且与过去或未来时刻不相关。
该式可以写成矩阵形式: Y = Ψ θ ∗ + ϵ Y = \Psi\theta^*+\epsilon Y=Ψθ∗+ϵ 。
OLS的无偏性引理
OLS无偏性的引理推导过程:
- E ( θ ^ ) = E ( ( Ψ ⊤ Ψ ) − 1 Ψ ⊤ Y ) \mathbb{E}(\hat{\theta})=\mathbb{E}((\Psi^{\top}\Psi)^{-1}\Psi^{\top}Y) E(θ^)=E((Ψ⊤Ψ)−1Ψ⊤Y),其中 θ ^ \hat{\theta} θ^是OLS估计的参数。
- 将 Y = Ψ θ ∗ + ϵ Y = \Psi\theta^*+\epsilon Y=Ψθ∗+ϵ代入上式,得到 E ( ( Ψ ⊤ Ψ ) − 1 Ψ ⊤ ( Ψ θ ∗ + ϵ ) ) \mathbb{E}((\Psi^{\top}\Psi)^{-1}\Psi^{\top}(\Psi\theta^*+\epsilon)) E((Ψ⊤Ψ)−1Ψ⊤(Ψθ∗+ϵ))。
- 经过展开和化简,因为 E ( ϵ ) = 0 \mathbb{E}(\epsilon)=0 E(ϵ)=0,所以 E ( θ ^ ) = θ ∗ + ( Ψ ⊤ Ψ ) − 1 Ψ ⊤ E ( ϵ ) = θ ∗ \mathbb{E}(\hat{\theta})=\theta^*+(\Psi^{\top}\Psi)^{-1}\Psi^{\top}\mathbb{E}(\epsilon)=\theta^* E(θ^)=θ∗+(Ψ⊤Ψ)−1Ψ⊤E(ϵ)=θ∗,这表明在一定条件下OLS估计是无偏的,即估计参数的期望值等于真实参数。
存在的问题
如果
Ψ
\Psi
Ψ不包含任何噪声(可能仅依赖于外生输入),那么最小二乘法会给出无偏估计。但在具有延迟噪声的自回归模型中,这个问题尤其麻烦。因为在这种情况下,
Ψ
\Psi
Ψ的元素会依赖于
ϵ
(
t
−
1
)
\epsilon(t - 1)
ϵ(t−1),导致
E
(
ϵ
(
t
−
1
)
2
)
≠
0
\mathbb{E}(\epsilon(t - 1)^2)\neq0
E(ϵ(t−1)2)=0的项出现在OLS公式中,从而使OLS估计产生偏差,不再具有无偏性。
自回归 - 滑动平均 - 外生变量模型(ARMAX MODELS)
我们可以将AR模型推广到自回归 - 滑动平均 - 外生变量(ARMAX)模型。
ARMAX模型的形式
一个
A
R
M
A
X
(
n
y
,
n
ϵ
,
n
u
)
ARMAX(n_y, n_{\epsilon}, n_u)
ARMAX(ny,nϵ,nu)模型可以写成
y
(
t
)
=
ψ
(
t
)
⊤
θ
+
ϵ
(
t
)
y(t)=\psi(t)^{\top}\theta+\epsilon(t)
y(t)=ψ(t)⊤θ+ϵ(t)的形式,其中:
- ψ ( t ) = [ y ( t − 1 ) , ⋯ , y ( t − n y ) , ϵ ( t − 1 ) , ⋯ , ϵ ( t − n ϵ ) , u ( t − 1 ) , ⋯ , u ( t − n u ) ] ⊤ ∈ R n y + n ϵ + n u \psi(t)=[y(t - 1), \cdots, y(t - n_y), \epsilon(t - 1), \cdots, \epsilon(t - n_{\epsilon}), u(t - 1), \cdots, u(t - n_u)]^{\top}\in\mathbb{R}^{n_y + n_{\epsilon} + n_u} ψ(t)=[y(t−1),⋯,y(t−ny),ϵ(t−1),⋯,ϵ(t−nϵ),u(t−1),⋯,u(t−nu)]⊤∈Rny+nϵ+nu,是由过去输出值、过去噪声值和过去外生输入值组成的数据向量。
- θ = [ θ 1 , ⋯ , θ n y , α 1 , ⋯ , α n ϵ , w 1 , ⋯ , w n u ] ⊤ ∈ R n y + n ϵ + n u \theta=[\theta_1, \cdots, \theta_{n_y}, \alpha_1, \cdots, \alpha_{n_{\epsilon}}, w_1, \cdots, w_{n_u}]^{\top}\in\mathbb{R}^{n_y + n_{\epsilon} + n_u} θ=[θ1,⋯,θny,α1,⋯,αnϵ,w1,⋯,wnu]⊤∈Rny+nϵ+nu,是对应的模型参数向量。
滑动平均(MA)项对应于模型依赖于延迟误差/噪声这一事实。之所以称为MA,是出于历史原因。
对ARMAX模型应用OLS来拟合模型参数会导致有偏估计。因此,接下来需要研究一种替代方法来将ARMAX模型拟合到数据中。
用于拟合ARMAX模型的迭代普通最小二乘法
基本思想:通过递归估计数据中的噪声来迭代更新模型参数。
初始化
以有偏估计进行初始化:
θ
^
1
:
=
(
Ψ
1
⊤
Ψ
1
)
−
1
Ψ
1
⊤
Y
\hat{\theta}_1 := (\Psi_1^{\top}\Psi_1)^{-1}\Psi_1^{\top}Y
θ^1:=(Ψ1⊤Ψ1)−1Ψ1⊤Y
其中
Ψ
1
:
=
[
ψ
^
1
(
0
)
,
⋯
,
ψ
^
1
(
N
)
]
⊤
\Psi_1 := [\hat{\psi}_1(0), \cdots, \hat{\psi}_1(N)]^{\top}
Ψ1:=[ψ^1(0),⋯,ψ^1(N)]⊤,
ψ
^
1
(
t
)
:
=
[
y
(
t
−
1
)
,
⋯
,
y
(
t
−
n
y
)
,
u
(
t
−
1
)
,
⋯
,
u
(
t
−
n
u
)
]
⊤
\hat{\psi}_1(t) := [y(t - 1), \cdots, y(t - n_y), u(t - 1), \cdots, u(t - n_u)]^{\top}
ψ^1(t):=[y(t−1),⋯,y(t−ny),u(t−1),⋯,u(t−nu)]⊤
迭代步骤
从
n
=
1
n = 1
n=1到
N
s
t
o
p
N_{stop}
Nstop进行以下操作:
- 估计误差/噪声:使用 θ ^ n \hat{\theta}_n θ^n估计每个时间阶段的误差/噪声,公式为 e ^ n ( t ) : = y ( t ) − y ^ n ( t ) = y ( t ) − ψ ^ n ( t ) ⊤ θ ^ n \hat{e}_n(t) := y(t) - \hat{y}_n(t) = y(t) - \hat{\psi}_n(t)^{\top}\hat{\theta}_n e^n(t):=y(t)−y^n(t)=y(t)−ψ^n(t)⊤θ^n 即当前时刻的真实输出 y ( t ) y(t) y(t)减去基于当前参数估计 θ ^ n \hat{\theta}_n θ^n和数据向量 ψ ^ n ( t ) \hat{\psi}_n(t) ψ^n(t)得到的预测输出 y ^ n ( t ) \hat{y}_n(t) y^n(t) 。
- 求解OLS:使用 Ψ n + 1 : = [ ψ ^ n + 1 ( 0 ) , ⋯ , ψ ^ n + 1 ( N ) ] ⊤ \Psi_{n + 1} := [\hat{\psi}_{n + 1}(0), \cdots, \hat{\psi}_{n + 1}(N)]^{\top} Ψn+1:=[ψ^n+1(0),⋯,ψ^n+1(N)]⊤求解OLS,其中 ψ ^ n + 1 ( t ) : = [ y ( t − 1 ) , ⋯ , y ( t − n y ) , e ^ n ( t − 1 ) , ⋯ , e ^ n ( t − n e ) , u ( t − 1 ) , ⋯ , u ( t − n u ) ] ⊤ \hat{\psi}_{n + 1}(t) := [y(t - 1), \cdots, y(t - n_y), \widehat{e}_n(t - 1), \cdots, \widehat{e}_n(t - n_e), u(t - 1), \cdots, u(t - n_u)]^{\top} ψ^n+1(t):=[y(t−1),⋯,y(t−ny),e n(t−1),⋯,e n(t−ne),u(t−1),⋯,u(t−nu)]⊤ 此时的数据向量 ψ ^ n + 1 ( t ) \hat{\psi}_{n + 1}(t) ψ^n+1(t)相比初始化时加入了上一步估计得到的延迟噪声项 e ^ n ( t − 1 ) , ⋯ , e ^ n ( t − n e ) \widehat{e}_n(t - 1), \cdots, \widehat{e}_n(t - n_e) e n(t−1),⋯,e n(t−ne) 。
- 更新参数估计:更新参数估计 θ ^ n + 1 : = ( Ψ n + 1 ⊤ Ψ n + 1 ) − 1 Ψ n + 1 ⊤ Y \hat{\theta}_{n + 1} := (\Psi_{n + 1}^{\top}\Psi_{n + 1})^{-1}\Psi_{n + 1}^{\top}Y θ^n+1:=(Ψn+1⊤Ψn+1)−1Ψn+1⊤Y 。通过上述迭代过程,不断改进对ARMAX模型参数的估计。
使用OLS拟合ARMAX模型的MATLAB伪代码
设定ARMAX模型
要拟合的为
y
(
t
)
=
0.5
y
(
t
−
1
)
+
0.75
u
(
t
−
1
)
+
ϵ
(
t
)
−
0.5
ϵ
(
t
−
1
)
y(t)=0.5y(t - 1)+0.75u(t - 1)+\epsilon(t)-0.5\epsilon(t - 1)
y(t)=0.5y(t−1)+0.75u(t−1)+ϵ(t)−0.5ϵ(t−1) 。
生成输入 - 输出数据
u=2*(1 - 2*rand(N, 1));
e=randn(N, 1);
y=zeros(N, 1);
for i = 2:N
y(i)=0.5*y(i - 1)+0.75*u(i - 1)+e(i)-0.5*e(i - 1);
end
上述代码首先通过u=2*(1 - 2*rand(N, 1))
生成取值在 - 2到2之间的随机外生输入序列
u
u
u ;然后用e=randn(N, 1)
生成服从标准正态分布的噪声序列
e
e
e ,并初始化输出序列
y
y
y为全零向量y=zeros(N, 1)
;最后通过循环,依据给定的ARMAX模型生成输出数据
y
y
y 。
初始噪声估计
e_est=y - psi*theta
根据模型参数的初始近似值来估计噪声。这里的psi
和theta
需要提前有初始设定,该步骤用于得到初始的噪声估计值e_est
。
递归估计系统参数和噪声
for j = 1:N_stop
for i = 2:N
psi(i, :)=[y(i - 1) u(i - 1) e_est(i - 1)];
end
theta=inv(psi'*psi)*psi'*y;
e_est=y - psi*theta;
end
通过两层循环进行迭代:
- 内层循环构建数据矩阵
psi
,它包含了前一时刻的输出y(i - 1)
、前一时刻的外生输入u(i - 1)
以及前一时刻估计的噪声e_est(i - 1)
。 - 接着使用OLS公式
theta=inv(psi'*psi)*psi'*y
更新模型参数theta
。 - 最后根据更新后的参数重新估计噪声
e_est=y - psi*theta
。通过这样的递归过程,不断改进对系统参数和噪声的估计。
拟合ARMAX模型的数值示例
上图的横轴为数据点数量,纵轴为参数误差。从图中可以看出,随着数据点数量的增加,参数误差总体呈下降趋势。
通过迭代求解OLS并估计噪声 ϵ ( t ) \epsilon(t) ϵ(t) ,当迭代停止条件 N s t o p = 10 N_{stop}=10 Nstop=10时,估计的模型参数收敛到真实模型参数 θ ∗ = [ 0.5 , 0.75 , − 0.5 ] ⊤ \theta^* = [0.5, 0.75, - 0.5]^{\top} θ∗=[0.5,0.75,−0.5]⊤ 。这表明通过这种迭代OLS的方法能够有效地对ARMAX模型进行拟合,随着数据量的积累和迭代的进行,参数估计越来越准确,最终趋近于真实参数值。
手写示例
问题设定
考虑一个ARMAX(1, 1, 0)模型,初始化参数
θ
0
=
[
2
1
]
⊤
\theta_0 = [2\ 1]^{\top}
θ0=[2 1]⊤,初始噪声估计
ϵ
^
0
=
[
1
0.5
−
1
]
⊤
\hat{\epsilon}_0 = [1\ 0.5\ -1]^{\top}
ϵ^0=[1 0.5 −1]⊤。任务是估计系统噪声/误差,并利用它进行一次普通最小二乘法(OLS)迭代来更新参数。
模型形式为 y ^ ( t ) = a y ( t − 1 ) + b ϵ ^ ( t − 1 ) \hat{y}(t) = a y(t - 1) + b\hat{\epsilon}(t - 1) y^(t)=ay(t−1)+bϵ^(t−1)其中 y ^ ( t ) \hat{y}(t) y^(t)是预测输出, y ( t − 1 ) y(t - 1) y(t−1)是前一时刻的实际输出, ϵ ^ ( t − 1 ) \hat{\epsilon}(t - 1) ϵ^(t−1)是前一时刻的噪声估计, a a a和 b b b是待估计参数。
数据如下:
t | 0 | 1 | 2 | 3 |
---|---|---|---|---|
y(t) | -1 | 2 | 3 | 2 |
系统噪声估计
利用
θ
0
=
[
a
b
]
⊤
\theta_0 = [a\ b]^{\top}
θ0=[a b]⊤估计系统噪声,噪声估计向量
ψ
0
(
t
)
⊤
=
[
y
(
t
−
1
)
,
ϵ
^
0
(
t
−
1
)
]
⊤
\psi_0(t)^{\top} = [y(t - 1), \hat{\epsilon}_0(t - 1)]^{\top}
ψ0(t)⊤=[y(t−1),ϵ^0(t−1)]⊤。计算过程如下:
- ϵ 1 ^ ( 0 ) = y ( 0 ) − ψ 0 ( 0 ) ⊤ θ 0 = − 1 − 0 = − 1 \widehat{\epsilon_1}(0)=y(0)-\psi_0(0)^{\top}\theta_0=-1 - 0 = -1 ϵ1 (0)=y(0)−ψ0(0)⊤θ0=−1−0=−1
- ϵ 1 ^ ( 1 ) = y ( 1 ) − ψ 0 ( 1 ) ⊤ θ 0 = 2 − 2 × ( − 1 ) − 1 = 3 \widehat{\epsilon_1}(1)=y(1)-\psi_0(1)^{\top}\theta_0=2 - 2\times(-1)-1 = 3 ϵ1 (1)=y(1)−ψ0(1)⊤θ0=2−2×(−1)−1=3
- ϵ 1 ^ ( 2 ) = y ( 2 ) − ψ 0 ( 2 ) ⊤ θ 0 = 3 − 2 × 2 − 0.5 = − 1.5 \widehat{\epsilon_1}(2)=y(2)-\psi_0(2)^{\top}\theta_0=3 - 2\times2 - 0.5 = -1.5 ϵ1 (2)=y(2)−ψ0(2)⊤θ0=3−2×2−0.5=−1.5
回归矩阵计算
计算回归矩阵
Ψ
1
\Psi_1
Ψ1:
Ψ
1
=
[
y
(
0
)
ϵ
^
1
(
0
)
y
(
1
)
ϵ
^
1
(
1
)
y
(
2
)
ϵ
^
1
(
2
)
]
\Psi_1 = \begin{bmatrix} y(0) & \hat{\epsilon}_1(0) \\ y(1) & \hat{\epsilon}_1(1) \\ y(2) & \hat{\epsilon}_1(2) \end{bmatrix}
Ψ1=
y(0)y(1)y(2)ϵ^1(0)ϵ^1(1)ϵ^1(2)
=
[
−
1
−
1
2
3
3
−
1.5
]
= \begin{bmatrix} -1 & -1 \\ 2 & 3 \\ 3 & -1.5 \end{bmatrix}
=
−123−13−1.5
计算参数更新
计算
Ψ
1
⊤
Ψ
1
\Psi_1^{\top}\Psi_1
Ψ1⊤Ψ1
Ψ
1
⊤
Ψ
1
=
[
−
1
2
3
−
1
3
−
1.5
]
[
−
1
−
1
2
3
3
−
1.5
]
=
[
14
2.5
2.5
12.25
]
\Psi_{1}^{\top} \Psi_{1}=\left[\begin{array}{ccc} -1 & 2 & 3 \\ -1 & 3 & -1.5 \end{array}\right]\left[\begin{array}{cc} -1 & -1 \\ 2 & 3 \\ 3 & -1.5 \end{array}\right]=\left[\begin{array}{cc} 14 & 2.5 \\ 2.5 & 12.25 \end{array}\right]
Ψ1⊤Ψ1=[−1−1233−1.5]
−123−13−1.5
=[142.52.512.25]
这里是将回归矩阵
Ψ
1
\Psi_1
Ψ1与其转置
Ψ
1
⊤
\Psi_1^{\top}
Ψ1⊤相乘,得到一个
2
×
2
2\times2
2×2的矩阵。
计算
(
Ψ
1
⊤
Ψ
1
)
−
1
(\Psi_1^{\top}\Psi_1)^{-1}
(Ψ1⊤Ψ1)−1
(
Ψ
1
⊤
Ψ
1
)
−
1
=
[
c
c
−
1
−
1
0.0741
−
0.0151
−
0.0151
0.0847
]
(\Psi_1^{\top}\Psi_1)^{-1} = \begin{bmatrix}{cc} -1 & -1 \\ 0.0741 & -0.0151 \\ -0.0151 & 0.0847 \end{bmatrix}
(Ψ1⊤Ψ1)−1=
cc−10.0741−0.0151−1−0.01510.0847
即对上一步得到的矩阵求逆,得到逆矩阵。蓝色框内文字提示“Note, we do not use y(0) in Y”,即注意在
Y
Y
Y中不使用
y
(
0
)
y(0)
y(0)。
计算
Ψ
1
⊤
Y
\Psi_1^{\top}Y
Ψ1⊤Y
Ψ
1
⊤
Y
=
[
−
1
2
3
−
1
3
−
1.5
]
[
2
3
−
2
]
=
[
−
2
10
]
\Psi_1^{\top}Y=\left[\begin{array}{ccc} -1 & 2 & 3 \\ -1 & 3 & -1.5 \end{array}\right]\left[\begin{array}{cc} 2 \\ 3 \\ -2 \end{array}\right]=\left[\begin{array}{cc} -2 \\ 10 \end{array}\right]
Ψ1⊤Y=[−1−1233−1.5]
23−2
=[−210]
这里 Y Y Y是由输出值组成的向量(根据提示未包含 y ( 0 ) y(0) y(0)),将 Ψ 1 ⊤ \Psi_1^{\top} Ψ1⊤与 Y Y Y相乘得到一个 2 × 1 2\times1 2×1的向量。
计算更新后的参数
θ
1
\theta_1
θ1
θ
1
=
(
Ψ
1
⊤
Ψ
1
)
−
1
Ψ
1
⊤
Y
=
[
0.0741
−
0.0151
−
0.0151
0.0847
]
[
−
2
10
]
=
[
−
0.2995
0.8775
]
\begin{align*} \theta_{1}&=(\Psi_{1}^{\top} \Psi_{1})^{-1}\Psi_{1}^{\top}Y=\left[\begin{array}{cc} 0.0741 & -0.0151 \\ -0.0151 & 0.0847 \end{array}\right]\left[\begin{array}{c} -2 \\ 10 \end{array}\right]=\left[\begin{array}{c} -0.2995 \\ 0.8775 \end{array}\right] \end{align*}
θ1=(Ψ1⊤Ψ1)−1Ψ1⊤Y=[0.0741−0.0151−0.01510.0847][−210]=[−0.29950.8775]
根据OLS的参数更新公式,将前面计算得到的
(
Ψ
1
⊤
Ψ
1
)
−
1
(\Psi_1^{\top}\Psi_1)^{-1}
(Ψ1⊤Ψ1)−1与
Ψ
1
⊤
Y
\Psi_1^{\top}Y
Ψ1⊤Y相乘,得到更新后的参数向量
θ
1
\theta_1
θ1。
不同预测模型总结
自回归模型(AR)
表达式为
A
R
(
n
y
)
:
y
(
t
)
=
θ
1
y
(
t
−
1
)
+
⋯
+
θ
n
y
y
(
t
−
n
y
)
+
ϵ
(
t
)
AR(n_y): y(t)=\theta_1y(t - 1)+\cdots+\theta_{n_y}y(t - n_y)+\epsilon(t)
AR(ny):y(t)=θ1y(t−1)+⋯+θnyy(t−ny)+ϵ(t) 该模型基于当前时刻的输出
y
(
t
)
y(t)
y(t)是其过去若干时刻
n
y
n_y
ny输出值的线性组合,再加上一个白噪声项
ϵ
(
t
)
\epsilon(t)
ϵ(t)。
移动平均模型(MA)
表达式为
M
A
(
n
ϵ
)
:
y
(
t
)
=
θ
1
ϵ
(
t
−
1
)
+
⋯
+
θ
n
ϵ
ϵ
(
t
−
n
ϵ
)
+
ϵ
(
t
)
MA(n_{\epsilon}): y(t)=\theta_1\epsilon(t - 1)+\cdots+\theta_{n_{\epsilon}}\epsilon(t - n_{\epsilon})+\epsilon(t)
MA(nϵ):y(t)=θ1ϵ(t−1)+⋯+θnϵϵ(t−nϵ)+ϵ(t)此模型中当前时刻的输出
y
(
t
)
y(t)
y(t)是过去若干时刻
n
ϵ
n_{\epsilon}
nϵ噪声值的线性组合,再加上当前时刻的噪声。
自回归 - 移动平均模型(ARMA)
表达式为
A
R
M
A
(
n
y
,
n
ϵ
)
:
y
(
t
)
=
θ
1
y
(
t
−
1
)
+
⋯
+
θ
n
y
y
(
t
−
n
y
)
+
w
1
ϵ
(
t
−
1
)
+
⋯
+
w
n
ϵ
ϵ
(
t
−
n
ϵ
)
+
ϵ
(
t
)
ARMA(n_y, n_{\epsilon}): y(t)=\theta_1y(t - 1)+\cdots+\theta_{n_y}y(t - n_y)+w_1\epsilon(t - 1)+\cdots+w_{n_{\epsilon}}\epsilon(t - n_{\epsilon})+\epsilon(t)
ARMA(ny,nϵ):y(t)=θ1y(t−1)+⋯+θnyy(t−ny)+w1ϵ(t−1)+⋯+wnϵϵ(t−nϵ)+ϵ(t)它综合了AR和MA模型的特点,既考虑了过去输出值的影响,也考虑了过去噪声值的影响。
带外生变量的自回归模型(ARX)
表达式为
A
R
X
(
n
y
,
n
u
)
:
y
(
t
)
=
θ
1
y
(
t
−
1
)
+
⋯
+
θ
n
y
y
(
t
−
n
y
)
+
w
1
u
(
t
−
1
)
+
⋯
+
w
n
u
u
(
t
−
n
u
)
+
ϵ
(
t
)
ARX(n_y, n_u): y(t)=\theta_1y(t - 1)+\cdots+\theta_{n_y}y(t - n_y)+w_1u(t - 1)+\cdots+w_{n_u}u(t - n_u)+\epsilon(t)
ARX(ny,nu):y(t)=θ1y(t−1)+⋯+θnyy(t−ny)+w1u(t−1)+⋯+wnuu(t−nu)+ϵ(t)该模型在AR模型基础上,加入了外生变量
u
(
t
)
u(t)
u(t),即考虑了外部输入对输出的影响。
带外生变量的自回归 - 移动平均模型(ARMAX)
表达式为
A
R
M
A
X
(
n
y
,
n
ϵ
,
n
u
)
:
y
(
t
)
=
θ
1
y
(
t
−
1
)
+
⋯
+
θ
n
y
y
(
t
−
n
y
)
+
α
1
ϵ
(
t
−
1
)
+
⋯
+
α
n
ϵ
ϵ
(
t
−
n
ϵ
)
+
w
1
u
(
t
−
1
)
+
⋯
+
w
n
u
u
(
t
−
n
u
)
+
ϵ
(
t
)
ARMAX(n_y, n_{\epsilon}, n_u): y(t)=\theta_1y(t - 1)+\cdots+\theta_{n_y}y(t - n_y)+\alpha_1\epsilon(t - 1)+\cdots+\alpha_{n_{\epsilon}}\epsilon(t - n_{\epsilon})+w_1u(t - 1)+\cdots+w_{n_u}u(t - n_u)+\epsilon(t)
ARMAX(ny,nϵ,nu):y(t)=θ1y(t−1)+⋯+θnyy(t−ny)+α1ϵ(t−1)+⋯+αnϵϵ(t−nϵ)+w1u(t−1)+⋯+wnuu(t−nu)+ϵ(t) 。它结合了ARMA和ARX模型的特性,既包含过去输出、过去噪声的影响,也考虑了外生变量的作用。
非线性自回归 - 移动平均模型(NARMAX)
表达式为
N
A
R
M
A
X
(
n
y
,
n
ϵ
,
n
u
)
:
y
(
t
)
=
F
(
y
(
t
−
1
)
,
⋯
,
y
(
t
−
n
y
)
,
ϵ
(
t
−
1
)
,
⋯
,
ϵ
(
t
−
n
ϵ
)
,
u
(
t
−
1
)
,
⋯
,
u
(
t
−
n
u
)
)
NARMAX(n_y, n_{\epsilon}, n_u): y(t)=F(y(t - 1), \cdots, y(t - n_y), \epsilon(t - 1), \cdots, \epsilon(t - n_{\epsilon}), u(t - 1), \cdots, u(t - n_u))
NARMAX(ny,nϵ,nu):y(t)=F(y(t−1),⋯,y(t−ny),ϵ(t−1),⋯,ϵ(t−nϵ),u(t−1),⋯,u(t−nu))与前面的线性模型不同,NARMAX模型是一个非线性模型,
F
F
F表示一个非线性函数,它可以捕捉更复杂的动态关系。
超参数选择
应使用交叉验证(Cross - validation)来选择每个模型的超参数,以优化模型性能。超参数是在模型训练之前需要设定的参数,交叉验证通过将数据集划分为多个子集进行多次训练和验证,来评估不同超参数组合下模型的表现,从而选择最优的超参数。