Statistical analysis of ensembles of spectral functions

A theoretical framework presented in Sections I-II of [GMPPS2017] offers a way to estimate statistical properties (averages, dispersions and two-point correlations) of ensembles of particular solutions. It is implemented as a handful of functions in the som.spectral_stats module.

The analysis is built around the notion of spectral integrals. Given a set of finite intervals \(\{\Delta_m\}\) centered around points \(z_m\), the spectral integrals are defined as

\[i_m = \int_{-\infty}^\infty dz \bar K(m, z) A(z),\]

where kernel \(\bar K(m, z)\) is a “resolution function” localized inside \(\{\Delta_m\}\).

Function som.spectral_stats.spectral_integral() evaluates \(i_m\) for a single interval \(\Delta_m\), for all intervals induced by a real frequency mesh, or for an arbitrary set of intervals. It supports a few kernels \(\bar K(m, z)\) switched by the keyword argument resolution_function,

  • resolution_function=rectangle:

    \[\bar K(m, z) = \frac{1}{|\Delta_m|} \theta\left(\frac{|\Delta_m|}{2} - |z - z_m|\right).\]
  • resolution_function=lorentzian:

    \[\bar K(m, z) = \frac{1}{\pi} \frac{|\Delta_m|/2}{(z - z_m)^2 + (|\Delta_m|/2)^2}.\]
  • resolution_function=gaussian:

    \[\bar K(m, z) = \frac{1}{\sqrt{2\pi(|\Delta_m|/2)^2}} \exp\left(-\frac{(z - z_m)^2}{2(|\Delta_m|/2)^2}\right).\]

Having accumulated a set (ensemble) of \(J\) particular solutions, one can study statistical properties of spectral integrals \(i_m^{(j)}\) derived from them.

Function som.spectral_stats.spectral_avg() computes averages over the ensemble,

\[\bar{i}_m = \frac{1}{J} \sum_{j=1}^J i_m^{(j)}.\]

These averages can be interpreted as an estimate of the final spectrum.

While horizontal “error bars” on \(\bar{i}_m\) are simply \(|\Delta_m|/2\), the vertical ones (\(\sigma_m\)) are estimated from dispersions

\[\sigma^2_m = \frac{1}{J} \sum_{j=1}^J (i_m^{(j)} - \bar{i}_m)^2.\]

Spectral dispersions are computed by som.spectral_stats.spectral_disp(), and som.spectral_stats.spectral_corr() returns a full matrix of two-points correlators

\[\sigma_{mm'} = \frac{1}{J} \sum_{j=1}^J (i_m^{(j)} - \bar{i}_m) (i_{m'}^{(j)} - \bar{i}_{m'}).\]