Markov random fields in CUQIpy#
In some cases, we may want to generate samples that represent a field with some spatial correlation and smoothness properties.
One CUQIpy distribution object that can be achieved for this purpose is the Gaussian Markov random field (GMRF) distribution [Siden20]. This distribution assumes a Gaussian distribution on the differences between neighboring elements of \(\mathbf{x}\), i.e. in 1D:
where we purposely leave out the details on the boundary conditions for this notebook.
To simplify the notation, we denote by \(\mathrm{GMRF}\) the distribution that induces this property on a vector \(\mathbf{x}\) defined by its mean and precision \(d\). That is, the above can be written as
with some choice of the precision say \(d=50\). For more details on GMRF see the CUQIpy paper (the first part of the 2-part article) [RAU+24].
The GMRF distribution is implemented in CUQIpy as GMRF class and can be used as follows:
Show code cell content
from cuqi.distribution import GMRF
import numpy as np
# Define prior precision
d = 50
n = 200
# Define GMRF prior (zero boundary conditions are the default)
x_GMRF = GMRF(np.zeros(n), d)
Exercise:#
Can you generate and plot a realization (sample) of
x_GMRF? Does the realization show spatial correlation?Create a Gaussian distribution
x_Gaussianwith meannp.zeros(n)and precision50, and compare a sample from the GMRF distribution with the Gaussian distribution by plotting them on the same plot. What do you observe?★ Generate 100000 samples of
x_GMRFand store them in variablex_GMRF_samples. Verify the following about the distribution of the differences. Focus only on verifying the difference between elements 30 and 31 as a representative example.The mean of the difference between elements 30 and 31 is close to 0.
The variance of the difference between elements 30 and 31 is close to \(1/50\).
Hint: Use this line to create a
Samplesobject of the differencesdiff_30_31_samples = Samples((x_GMRF_samples.samples[31] - x_GMRF_samples.samples[30]).reshape(1, -1)).
# your code here
Other Markov random fields in CUQIpy:#
Cauchy Markov Random Field (CMRF): CMRF class
Laplace Markov Random Field (LMRF): LMRF class
CMRF and LMRF are similar to GMRF but with different distributions on the differences between neighboring elements in the signal, where CMRF assumes a Cauchy distribution and LMRF assumes a Laplace distribution. LMRF and CMRF are particularly useful in cases in which the signal to be inferred has sharp edges (jumps).
This 1D deconvolution example from [RAU+24] illustrates and compares using the three Markov random fields in a 1D problem.