Page QiView

状态空间模型与卡尔曼滤波:动态系统估计框架

状态空间模型与卡尔曼滤波:动态系统估计框架

1. 为什么需要状态空间

当系统里存在不可观测状态(潜在趋势、时变系数)时,传统 ARIMA 很难直接表达。
状态空间模型把“真实状态演化”和“观测机制”拆开建模。

2. 模型形式

状态转移方程:

$$ x_t = F_t x_{t-1} + G_t w_t $$

观测方程:

$$ y_t = H_t x_t + v_t $$

其中 $w_t, v_t$ 分别是过程噪声与观测噪声。

3. 卡尔曼滤波直觉

  1. 先用系统方程做一步预测(predict)。
  2. 再用新观测修正预测(update)。
  3. 修正幅度由卡尔曼增益自动决定。

这是一种“模型知识 + 数据证据”实时融合机制。

4. Python 示例

import statsmodels.api as sm

# local level model: y_t = level_t + noise
mod = sm.tsa.UnobservedComponents(
    endog=y,
    level="local level",
    seasonal=12,
)
res = mod.fit(disp=False)
print(res.summary())

# 平滑后的潜在状态
state = res.smoothed_state
print(state.shape)

# 未来 12 期预测
pred = res.get_forecast(steps=12)
print(pred.summary_frame().head())

5. 典型应用

  1. 实时 GDP nowcasting。
  2. 动态因子模型(宏观多指标降维)。
  3. 时变参数回归(TVP)。
  4. 传感器融合与轨迹跟踪。

6. 常见误区

  1. 不检验噪声协方差设定,直接套默认参数。
  2. 把滤波值与平滑值混用却不说明口径。
  3. 忽略结构突变,导致状态转移假设失真。

状态空间模型的优势在于结构可解释与在线可更新,非常适合“持续到达数据”的业务场景。