Hi Ian!
No, I have not written a Kálmán Filter in J, but I do have a suggestion for 
your problem. Subject your vector X to a discrete Fourier transform. Y=:FT X. 
The DC component is the constant K. The ground frequency component account for 
M1 and M2 being different. The high frequency components constitute the noise 
G+V1=:V2=:0 (The variances V1 and V2 cannot be distinguished from the noise G 
anyway, so just put them down and forget about it.) The power of M2-M1 should 
be compared to the power of G to estimate significance. 
- Bo




>________________________________
> Fra: Ian Clark <earthspo...@gmail.com>
>Til: Programming forum <programming@jsoftware.com> 
>Sendt: 6:33 torsdag den 21. juni 2012
>Emne: [Jprogramming] Kalman filter in J?
> 
>Can anyone help? Has anyone written a Kalman filter in J?
>
>I'm not a specialist in either statistics or control theory, so I'm
>only guessing a Kalman filter is what I need. Though I do have a
>passing acquaintance with the terms: stochastic control and linear
>quadratic Gaussian (LQG) control. I am aware that a "Kalman filter"
>(like ANOVA) is more a topic than a black-box.
>
>So let me explain what I want it for.
>
>I have a time series X which I am assuming can be modelled like this:
>
>X=: K + G + (X1,X2)
>
>where
>
>K is constant
>G is Gaussian noise
>X1 is a random variable with mean: M1 and variance: V1
>X2 is a random variable with mean: M2 and variance: V2
>
>Typically X is a sequence of sensor readings, but may also be
>measurements from a series of user trials conducted on a working
>prototype, which suffers a design-change at a given point T.
>
>Simplifying assumptions (which unfortunately I may need to relax in due 
>course):
>
>(a) X is not multivariate
>(b) X1 and X2 are Gaussian
>(c) V1=V2 (only the mean value changes, not the variance).
>
>The problem:
>
>1. Estimate T=: 1+#X1 -- the point at which X1 gives way to X2.
>
>2. Given T, estimate (M2-M1) -- the "underlying improvement", if any,
>of the change to the prototype.
>
>3. (subcase of 2.) Given T, test the null hypothesis: M1=M2, viz that
>there has been no underlying improvement.
>
>4. Estimate U=: #X2 -- the minimum number of samples needed after T in
>order to achieve 1-3 above with 95% confidence.
>
>In other words, detect the signal-in-noise: M1-->M2, and do so in real-time.
>
>Because of 4, the need to estimate T and (M2-M1) on an ongoing basis,
>I can't do a randomised block design. I gather that a Kalman filter,
>or some sort of adaptive filter, will handle this problem.
>
>But maybe something simpler will turn out good enough?
>
>Supposing I can get hold of a "black box" Kalman filter, I propose to
>test it out on generated data and compare its performance to some
>simple-minded approach, like estimating M1 / M2 from a simple moving
>average of the last U samples, or applying the F-test to 2 sets of U
>samples taken either side of T.
>
>But since the technique aims to be published, or at least critically
>scrutinised (and maybe incorporated in a software product), I'd rather
>depend on a state-of-art packaged solution than reinvent the wheel: a
>large and very well-turned wheel it appears to me.
>
>Ian Clark
>----------------------------------------------------------------------
>For information about J forums see http://www.jsoftware.com/forums.htm
>
>
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to