Questions tagged «kalman-filter»

卡尔曼滤波器是一种用于估计状态空间模型中未知状态的均值向量和方差-协方差矩阵的算法。

5
状态空间模型和卡尔曼滤波器在时间序列建模中的缺点是什么?
考虑到状态空间模型和KF的所有良好特性,我想知道- 状态空间建模并使用卡尔曼滤波器(或EKF,UKF或粒子滤波器)进行估计的缺点是什么?笼统地说,是ARIMA,VAR或即席/启发式方法之类的常规方法。 它们难于校准吗?他们是否复杂且很难看到模型结构的变化将如何影响预测? 或者,换种说法-传统ARIMA,VAR与状态空间模型相比有什么优势? 我只能想到状态空间模型的优点: 它可以轻松地处理某些静态模型的结构破坏,移位,时变参数-只需使这些参数成为状态空间模型的动态状态,模型便会自动适应任何参数移位; 它非常自然地处理丢失的数据,只需执行KF的过渡步骤,而不执行更新步骤; 它允许更改状态空间模型本身的动态参数(噪声和过渡/观测矩阵的协方差),因此,如果您当前的观测值来自与其他观测值略有不同的源,则无需进行任何操作即可轻松将其合并到估计中有什么特别的 使用上述属性,可以轻松处理不规则空间的数据:根据观察之间的间隔每次更改模型,或者使用规则的间隔并将没有观察的间隔视为丢失数据; 它允许在同一模型中同时使用来自不同来源的数据来估算一个基础数量; 它允许从几个可解释的,不可观察的动态成分构建模型并进行估计; 任何ARIMA模型都可以以状态空间形式表示,但是只有简单的状态空间模型可以以ARIMA形式精确表示。



2
从使用泊松分布对过程进行建模转换为使用负二项分布?
\newcommand{\P}{\mathbb{P}}我们有一个随机过程,该过程在设定的时间段内可能不会发生多次。我们有一个来自此过程的预先存在模型的数据馈送,该数据馈送提供了在期间内发生许多事件的概率。这个现有模型很旧,我们需要对Feed数据进行实时检查,以获取估计错误。产生数据馈送的旧模型(提供了在剩余时间发生事件的概率)近似为Poisson Distributed。TTT0≤t&lt;T0≤t&lt;T0 \leq t < Tnnnttt 因此,为了检查异常/错误,我们让为剩余时间,为在剩余时间发生的事件总数。旧模型隐含了估计。因此,在我们的假设我们有: 为了从旧模型的输出(观测值y_ {t})中得出事件发生率\ lambda_t,我们使用状态空间方法,并将状态关系建模为: y_t = \ lambda_t + \ varepsilon_t \ quad(\ varepsilon_t \ sim N( 0,H_t))\ ,. tttXtXtX_ttttP(Xt≤c)P(Xt≤c)\P(X_t \leq c)Xt∼Poisson(λt)Xt∼Poisson⁡(λt)X_t\sim \operatorname{Poisson}(\lambda_{t})P(Xt≤c)=e−λ∑k=0cλktk!.P(Xt≤c)=e−λ∑k=0cλtkk!. \P(X_t \leq c) = e^{-\lambda}\sum_{k=0}^c\frac{\lambda_t^k}{k!}\,. λtλt\lambda_tytyty_{t}yt=λt+εt(εt∼N(0,Ht)).yt=λt+εt(εt∼N(0,Ht)). y_t = \lambda_t + \varepsilon_t\quad (\varepsilon_t \sim N(0, H_t))\,. 我们使用状态空间[恒定速度衰减]模型对\ lambda_t的演化使用旧模型进行λtλt\lambda_t过滤,以获取过滤后的状态E(λt|Yt)E(λt|Yt)E(\lambda_t|Y_t)并从如果E(λt|Yt)&lt;ytE(λt|Yt)&lt;ytE(\lambda_t|Y_t) < y_t。 这种方法在处理整个时间段T内估计事件计数中的错误时效果非常好TTT,但是如果我们想在另一个时间段0≤t&lt;σ0≤t&lt;σ0 \leq …


1
隐马尔可夫模型与粒子滤波器(和卡尔曼滤波器)之间的区别
这是我的老问题 我想问问是否有人知道隐马尔可夫模型(HMM)和粒子滤波器(PF)之间的区别(如果有区别),并因此得知卡尔曼滤波器,或者在什么情况下我们使用哪种算法。我是学生,必须做一个项目,但首先我必须了解一些事情。 因此,根据书目,这两个都是状态空间模型,包括隐藏(或潜在或不可观察)状态。根据Wikipedia(Hidden_​​Markov_model), “在HMM中,隐藏变量的状态空间是离散的,而观察值本身可以是离散的(通常从分类分布生成)或连续的(通常从高斯分布生成)。隐藏的马尔可夫模型也可以泛化为允许连续的状态空间。这样的模型的例子是那些对隐变量的马尔可夫过程是线性动力学系统,在相关变量之间具有线性关系,并且所有隐变量和观测变量都遵循高斯分布的模型。在简单的情况下,例如刚才提到的线性动力系统,精确推断是很容易的(在这种情况下,使用卡尔曼滤波器);但是,通常,在具有连续潜在变量的HMM中进行精确推断是不可行的,必须使用近似方法,” 但是对我而言,这有点令人困惑……简而言之,这是否意味着关注(也基于我所做的更多研究): 在HMM中,状态空间可以是离散的或连续的。还观测本身可以是离散的或连续的。HMM也是线性和高斯或非高斯动力系统。 在PF,状态空间可以是离散的或连续的。还观测本身可以是离散的或连续的。但是PF是一个非线性(非高斯?)动力系统(它们有区别吗?)。 当我们具有线性和高斯动力系统时,将使用卡尔曼滤波器(在我看来也像HMM一样)。 另外,我怎么知道该选择哪种算法,因为在我看来,所有这些似乎都是相同的...我还发现了一篇论文(不是英文),其中说PF虽然可以具有线性数据(例如来自传感器结点的原始数据)识别运动),则动力学系统可以是非线性的。这会发生吗?它是否正确?怎么样? 对于手势识别,研究人员可以使用HMM或PF,但是他们没有解释为什么选择每种算法……有人知道我可以如何帮助您区分这些算法,了解它们的差异以及如何选择最佳算法吗? 很抱歉,如果我的问题太大,或者某些部分还很幼稚,但我没有找到令人信服的科学答案。非常感谢您抽出宝贵的时间! 这是我的新问题(根据@conjugateprior的帮助) 因此,通过进一步阅读,我想更新我以前的评论的某些部分,并确保我对所发生的事情有更多的了解。 再次简单地说,保护伞是动态贝叶斯网络,其中包含HMM和状态空间的模型(子类)(http://mlg.eng.cam.ac.uk/zoubin/papers/ijprai.pdf)。 此外,这两个模型之间的初始差异在于,在HMM中,隐藏状态变量是离散的,而观测值可以是离散的或连续的。在PF中,隐藏状态变量是连续的(实值隐藏状态向量),并且观测值具有高斯分布。 此外,根据@conjugateprior,每个模型都有以下3个任务:滤波,平滑和预测。在滤波中,模型HMM将离散的隐藏状态变量用于正向算法,将状态空间用于连续变量并将线性动态系统用于卡尔曼滤波器,等等。 但是,HMM也可以泛化为允许连续的状态空间。 通过HMM的这些扩展,这两个模型在概念上似乎是相同的(正如在“ 隐马尔可夫模型”,“马尔可夫过渡模型”与“状态空间模型...”中提到的一样)。 我认为我使用的术语更加准确,但对我来说一切仍然很模糊。谁能向我解释HMM和State Space模型有什么区别? 因为我真的找不到适合我需求的答案。 再次谢谢你!

2
卡尔曼滤波器何时会比简单的移动平均值给出更好的结果?
我最近在一个以随机速度和加速度测量粒子位置的简单示例上实现了卡尔曼滤波器。我发现卡尔曼滤波效果很好,但是随后我问自己,做一次移动平均线有什么区别?我发现,如果我使用约10个样本的窗口,则移动平均值优于Kalman滤波器,并且我试图寻找一个使用Kalman滤波器时仅使用移动平均值的优势的示例。 我觉得移动平均值比卡尔曼滤波器直观得多,您可以盲目地将其应用于信号,而不必担心状态空间机制。我觉得我在这里缺少一些基本的东西,希望有人能提供任何帮助。

1
线性高斯卡尔曼滤波器的LogLikelihood参数估计
我已经编写了一些代码,可以对n维状态向量进行线性高斯状态空间分析(使用许多不同的Kalman型滤波器[Information Filter等])。筛选器效果很好,我得到了一些不错的输出。但是,通过对数似然估计进行参数估计会使我感到困惑。我不是统计学家,而是物理学家,所以请保持友好。 让我们考虑线性高斯状态空间模型 yt=Ztαt+ϵt,yt=Ztαt+ϵt,y_t = \mathbf{Z}_{t}\alpha_{t} + \epsilon_{t}, αt+1=Ttαt+Rtηt,αt+1=Ttαt+Rtηt,\alpha_{t + 1} = \mathbf{T}_{t}\alpha_{t} + \mathbf{R}_{t}\eta_{t}, 其中是我们的观察向量,我们在时间步处的状态向量。粗体为状态空间模型的变换矩阵,这些变换矩阵是根据所考虑的系统的特性设置的。我们还有ytyty_{t}αtαt\alpha_{t}ttt η 吨〜Ñ 我d (0 ,Q 吨),α 1〜Ñ 我d (一个1,P 1)。ϵt∼NID(0,Ht),ϵt∼NID(0,Ht),\epsilon_{t} \sim NID(0, \mathbf{H}_{t}), ηt∼NID(0,Qt),ηt∼NID(0,Qt),\eta_{t} \sim NID(0, \mathbf{Q}_{t}), α1∼NID(a1,P1).α1∼NID(a1,P1).\alpha_{1} \sim NID(a_{1}, \mathbf{P}_{1}). 其中。现在,我已经通过猜测初始参数和方差矩阵和来推导并实现了该通用状态空间模型的Kalman滤波器的递归,我可以生成图喜欢H 1 Q 1t=1,…,nt=1,…,nt = 1,\ldots, nH1H1\mathbf{H}_{1}Q1Q1\mathbf{Q}_{1} 其中的点是100年1月的尼罗河水位,线是“卡拉姆估计”状态,虚线是90%的置信度。 现在,对于此一维数据集,矩阵和分别只是标量和。所以现在我想使用卡尔曼滤波器的输出和对数似然函数为这些标量获取正确的参数Q 吨 σ ε σ …

2
如何使用卡尔曼滤波器?
我在2D空间(表面)中有一个物体的轨迹。轨迹以(x,y)坐标序列的形式给出。我知道我的测量结果很嘈杂,有时会有明显的异常值。因此,我想过滤我的观察结果。 据我了解的卡尔曼滤波器,它确实满足了我的需求。因此,我尝试使用它。我在这里找到了python实现。这是文档提供的示例: from pykalman import KalmanFilter import numpy as np kf = KalmanFilter(transition_matrices = [[1, 1], [0, 1]], observation_matrices = [[0.1, 0.5], [-0.3, 0.0]]) measurements = np.asarray([[1,0], [0,0], [0,1]]) # 3 observations kf = kf.em(measurements, n_iter=5) (filtered_state_means, filtered_state_covariances) = kf.filter(measurements) (smoothed_state_means, smoothed_state_covariances) = kf.smooth(measurements) 我在解释输入和输出时遇到了一些麻烦。我想这measurements正是我的测量值(坐标)。尽管我有点困惑,因为示例中的度量是整数。 我还需要提供一些transition_matrices和observation_matrices。我应该把什么放在那?这些矩阵是什么意思? 最后,在哪里可以找到我的输出?应该是filtered_state_means还是smoothed_state_means。这些阵列具有正确的形状(2, n_observations)。但是,这些数组中的值与原始坐标相距太远。 那么,如何使用该卡尔曼滤波器?

2
我们可以使用比原始样本小的引导样本吗?
我想使用自举来估计N = 250个公司和T = 50个月的面板数据集中的估计参数的置信区间。由于使用卡尔曼滤波和复杂的非线性估计,参数的估计在计算上是昂贵的(几天的计算)。因此,即使是自举的基本方法,也无法从原始样本中抽取(替换)B(成百上千个)M = N = 250个公司的B个样本并估计参数B次是不可行的。 因此,我正在考虑对引导程序样本使用较小的M(例如10)(而不是N = 250的完整大小),并通过从原始公司替换而随机抽取,然后使用缩放模型参数的引导程序估计协方差矩阵(在上面的示例中为1/25)来计算在完整样本上估算的模型参数的协方差矩阵。1个ñ中号1NM\frac{1}{\frac{N}{M}} 然后,可以基于正态假设或基于经验的估计置信区间,对于较小的样本,可以使用类似的程序进行缩放(例如,缩小。1个ñ中号√1NM\frac{1}{\sqrt{\frac{N}{M}}} 这种解决方法有意义吗?有理论结果证明这一点吗?还有其他解决方案吗?


3
为什么使用滤波器结果而不是更平滑的结果来计算卡尔曼滤波器中的似然性?
我以非常标准的方式使用卡尔曼滤波器。该系统由状态方程和观察方程。Xt + 1= FXŤ+ vt + 1XŤ+1个=FXŤ+vŤ+1个x_{t+1}=Fx_{t}+v_{t+1}ÿŤ= 高XŤ+ A zŤ+ wŤÿŤ=HXŤ+一种žŤ+wŤy_{t}=Hx_{t}+Az_{t}+w_{t} 教科书教导,在应用卡尔曼滤波器并获得“一步一步的预测”(或“滤波后的估计”)之后,我们应该使用它们来计算似然函数:X^t | t − 1X^Ť|Ť-1个\hat{x}_{t|t-1} FÿŤ| 一世t − 1,žŤ(yŤ| 一世t − 1,žŤ) = DET [ 2 π(高Pt | t − 1H′+ R ) ]− 12经验值{ − 12(yŤ- 高X^t | t − 1- 一个žŤ)′(高Pt | t − 1H′+ R )− …

2
来自汉密尔顿的ARMA(p,q)的状态空间表示
r=max(p,q+1)r=max(p,q+1)r = \max(p,q+1)yt−μ=ϕ1(yt−1−μ)+ϕ2(yt−2−μ)+...+ϕ3(yt−3−μ)+ϵt+θ1ϵt−1+...+θr−1ϵt−r+1.yt−μ=ϕ1(yt−1−μ)+ϕ2(yt−2−μ)+...+ϕ3(yt−3−μ)+ϵt+θ1ϵt−1+...+θr−1ϵt−r+1. \begin{aligned} y_t -\mu &= \phi_1(y_{t-1} -\mu) + \phi_2(y_{t-2} -\mu) + ... + \phi_3(y_{t-3} -\mu) \\ &+ \epsilon_t + \theta_1\epsilon_{t-1} + ... + \theta_{r-1}\epsilon_{t-r+1}. \end{aligned} ξt+1=⎡⎣⎢⎢⎢⎢ϕ11⋮0ϕ20⋮0…………ϕr−1001ϕr000⎤⎦⎥⎥⎥⎥ξt+⎡⎣⎢⎢⎢⎢ϵt+10⋮0⎤⎦⎥⎥⎥⎥ξt+1=[ϕ1ϕ2…ϕr−1ϕr10…00⋮⋮…0000…10]ξt+[ϵt+10⋮0] \xi_{t+1} = \begin{bmatrix} \phi_1 & \phi_2 & \dots & \phi_{r-1} & \phi_r \\ 1 & 0 & \dots & 0 & 0 …


1
在状态空间模型中解释卡尔曼滤波器
在状态空间模型中使用卡尔曼滤波器的步骤涉及什么? 我看到了几种不同的表述,但是我不确定细节。例如,Cowpertwait从以下等式开始: θ吨=g ^吨θ吨-1+瓦特吨yt=F′tθt+vtyt=Ft′θt+vty_{t} = F^{'}_{t}\theta_{t}+v_{t} θt=Gtθt−1+wtθt=Gtθt−1+wt\theta_{t} = G_{t}\theta_{t-1}+w_{t} 其中和 ,是我们未知的估计,而是观测值。瓦特吨〜Ñ (0 ,w ^ 吨)θ 吨 ÿ 吨θ0〜ñ(米0,C0),vŤ〜ñ(0 ,VŤ)θ0∼N(m0,C0),vt∼N(0,Vt)\theta_{0} \sim N(m_{0}, C_{0}), v_{t} \sim N(0,V_{t})wŤ〜ñ(0 ,w ^Ť)wt∼N(0,Wt)w_{t} \sim N(0, W_{t})θŤθt\theta_{t}ÿŤyty_{t} Cowpertwait定义了所涉及的分布(分别为先验,似然和后验分布): ÿ 吨 | θ 吨〜Ñ (˚FθŤ| dt − 1〜ñ(一个Ť,RŤ)θt|Dt−1∼N(at,Rt)\theta_{t}|D_{t-1} \sim N(a_{t}, R_{t}) θ吨| d吨〜Ñ(米吨,Ç吨)ÿŤ| θŤ〜ñ(F′ŤθŤ,VŤ)yt|θt∼N(Ft′θt,Vt)y_{t}|\theta_{t} \sim N(F^{'}_{t}\theta_{t}, V_{t}) θŤ| …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.