image thumbnail

Particle Smoothing Expectation Maximization Procedure

version (231 KB) by Moeti Ncube
An estimation technique for time series data. Extension to previous code


Updated 17 Dec 2010

View License

Suppose you have a random process x(t), that is generated from time indexed densities N(m1(t),sigma1(t)) with probability alpha, and from density N(m2(t),sigma2(t)) with probability 1-alpha.

The process x(t) is directly unobservable but can be observed through y(t)=f(x(t))+noise

Given only the data y(t), we develop a methodology to estimate the parameters [m1(t),sigma1(t),m2(t),sigama2(t),alpha] that govern this specified process.

We illustrate the application of this methodology using the following process

x(t) = a*x(t-1)+Jump(t) where Jump(t)=N(m1,sigma1) with prob. alpha, and Jump(t)=0 with prob. 1-alpha
y(t) = c*exp(x(t)) + noise;

This model was developed because it can be use to generate Random Walks, AR(1) processess, Mean Reversion Processes, Stochastic Volatility, and Stochastics processes with spikes or Jumps. Our particular interest was in developing a model for estimating price spikes in electricity.

The paper attached 'An estimation Technique for Time Indexed Gaussian Mixture Model', shows how to develop the estimation procedure for this model and the same technique can be applied to any model of the form


The code attached illustrates the application of our methodology, if is extremely computionally intensive as it requires the use of particle smoothing. This is the extension of the first parameter estimation code, in which we assumed that both (y(t) and x(t)) were known. Now we only assume the data y(t) as given.

Run simulationexample.m to obtain 'figure 5' and dataexample.m to obtain 'figure 6'

Cite As

Moeti Ncube (2022). Particle Smoothing Expectation Maximization Procedure (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2009b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!