mne.minimum_norm.estimate_snr#
- mne.minimum_norm.estimate_snr(evoked, inv, verbose=None)[source]#
Estimate the SNR as a function of time for evoked data.
- Parameters:
- evokedinstance of
Evoked
Evoked instance.
- invinstance of
InverseOperator
The inverse operator.
- verbose
bool
|str
|int
|None
Control verbosity of the logging output. If
None
, use the default verbosity level. See the logging documentation andmne.verbose()
for details. Should only be passed as a keyword argument.
- evokedinstance of
- Returns:
Notes
snr_est
is estimated by using different amounts of inverse regularization and checking the mismatch between predicted and measured whitened data.In more detail, given our whitened inverse obtained from SVD:
\[\tilde{M} = R^\frac{1}{2}V\Gamma U^T\]The values in the diagonal matrix \(\Gamma\) are expressed in terms of the chosen regularization \(\lambda^2 \sim 1/\rm{SNR}^2\) and singular values \(\lambda_k\) as:
\[\gamma_k = \frac{1}{\lambda_k}\frac{\lambda_k^2}{\lambda_k^2 + \lambda^2}\]We also know that our predicted data is given by:
\[\hat{x}(t) = G\hat{j}(t)=C^\frac{1}{2}U\Pi w(t)\]And thus our predicted whitened data is just:
\[\hat{w}(t) = U\Pi w(t)\]Where \(\Pi\) is diagonal with entries entries:
\[\lambda_k\gamma_k = \frac{\lambda_k^2}{\lambda_k^2 + \lambda^2}\]If we use no regularization, note that \(\Pi\) is just the identity matrix. Here we test the squared magnitude of the difference between unregularized solution and regularized solutions, choosing the biggest regularization that achieves a \(\chi^2\)-test significance of 0.001.
New in version 0.9.0.