3
$\begingroup$

In a single stream of observations, I have some prior knowledge about the level of noiseness of the data that get feed into my Kalman filter. Some points are more noisy than the others.

To make use of this knowledge, I have two thoughts

(1) partition the data into two streams: low confidence and high confidence

(2) scale my confidence in data to a factor b/w 0 and 1, and multiply the kalman gain with this factor.

Can someone shed some light on this problem with some new thoughts or comment on my thoughts. Any comments would be appreciated.

$\endgroup$
2
  • $\begingroup$ can you elaborate on this noise process you have prior knowledge about? Is it stationary? Is it binary (since you mention low and high regime)? $\endgroup$
    – Memming
    Feb 1 '17 at 15:29
  • 1
    $\begingroup$ @Memming it is stationary. The confidence level is more like a continuous spectrum. For example, if stock price is the measurement series, the associated volume could act as a confidence level. The higher the volume is, the higher confidence we have on this dat point. On the other hand, we may discretize the volume spectrum and separate the series based on that. $\endgroup$
    – Will Gu
    Feb 1 '17 at 15:40
2
$\begingroup$

Kalman filter in principle supports variable noisiness of data, so you are good. Just encode the noisiness info as a sequence of observational (co)variance matrices, $\mathbf{R}_k$ in wikipedia notation.

It might be that the implementation of the Kalman filter that you use does not support it, then either hack it (like I did with pykalman for myself), or find one that does.

Also, you will have to translate the "level of noiseness" to variance, which might involve some thinking if you get that level in some crazy form (like the binary form that you were contemplating, bad idea btw).

$\endgroup$
3
  • $\begingroup$ Thank you. But I'm not sure this answers my question. Of course I could ignore the prior knowledge about the different confidence level and construct R matrix based on the average variance. $\endgroup$
    – Will Gu
    Feb 1 '17 at 16:49
  • $\begingroup$ No, don't construct one R matrix based on average variance. Use different R matrices for each time step! That's why it is denoted $\mathbf{R}_k$, $k$ is the index for time step. $\endgroup$
    – psarka
    Feb 1 '17 at 16:51
  • $\begingroup$ I see what you mean. The flexible scaling in R definitely makes sense. $\endgroup$
    – Will Gu
    Feb 1 '17 at 17:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.