卡尔曼滤波器

class darts.models.filtering.kalman_filter.KalmanFilter(dim_x=1, kf=None)[源代码]

基类:FilteringModel, ABC

此模型实现了时间序列上的卡尔曼滤波器。

关键方法是 KalmanFilter.filter()。它将提供的时间序列视为包含从(可能带噪声的)线性动态系统(具有隐藏状态 x)获得的(可能带噪声的)观测值 z。函数 filter(series) 返回一个新的 TimeSeries,描述输出 z(无噪声)的分布,该分布由卡尔曼滤波器通过按顺序观测 series 中的 z 以及 dim_x 阶线性系统的动态进行推断。

此滤波器还支持观测序列中的缺失值,在这种情况下,底层卡尔曼滤波器将继续使用其均值估计。

方法 KalmanFilter.fit() 用于通过使用 N4SID 算法估计线性动态系统的状态空间模型以及过程噪声和测量噪声的协方差矩阵来初始化卡尔曼滤波器。

此实现使用了 NFourSID 包中的 Kalman。更多信息可在此处找到:https://nfoursid.readthedocs.io/en/latest/source/kalman.html

测量值 z 和可选控制信号(协变量)u 的维度在调用 filter() 时自动推断。

参数
  • dim_x (int) – 卡尔曼滤波器状态向量的大小。

  • kf (nfoursid.kalman.Kalman) – 可选地,nfoursid.kalman.Kalman 的一个实例。如果提供了此参数,则忽略参数 dim_x。对于对 filter() 的每次调用,此实例将被复制,因此状态不会在多次调用 filter() 时从一个时间序列转移到另一个。滤波器的维度必须与调用 filter() 时使用的 TimeSeries 的维度匹配。

方法

filter(series[, covariates, num_samples])

按顺序将卡尔曼滤波器应用于提供的观测序列。

fit(series[, covariates, num_block_rows])

使用 N4SID 算法初始化卡尔曼滤波器。

filter(series, covariates=None, num_samples=1)[源代码]

按顺序将卡尔曼滤波器应用于提供的观测序列。

参数
  • series (TimeSeries) – 根据指定的卡尔曼过程,用于推断底层输出的输出(观测值)序列。这必须是一个确定性序列(包含一个样本)。

  • covariates (Optional[TimeSeries]) – 可选的输入(控制信号)序列,如果卡尔曼滤波器使用协变量初始化,则需要提供。这必须是一个确定性序列(包含一个样本)。

  • num_samples (int, default: 1) – 从推断的输出 z 分布中生成的样本数。如果设置为 1,则输出是一个 TimeSeries,其中包含使用分布均值的单个样本。

返回值

一个推断的输出 z 的(随机)TimeSeries,与输入序列具有相同的宽度。

返回类型

TimeSeries

fit(series, covariates=None, num_block_rows=None)[源代码]

使用 N4SID 算法初始化卡尔曼滤波器。

参数
  • series (TimeSeries) – 用于推断底层状态空间模型的输出(观测值)序列。这必须是一个确定性序列(包含一个样本)。

  • covariates (Optional[TimeSeries]) – 可选的输入(控制信号)序列,也将用于推断底层状态空间模型。这必须是一个确定性序列(包含一个样本)。

  • num_block_rows (Optional[int]) – 在 N4SID 算法中使用的块 Hankel 矩阵中的块行数。有关更多信息,请参阅 nfoursid.nfoursid.NFourSID 的文档。如果未提供,将使用状态空间模型的维度,最大值为 10。

返回值

拟合的卡尔曼滤波器。

返回类型

self