R-matrix and uncertainties¶
The matrix \(R(s)\) in observation space describes the error covariance of the model-observation comparison, assuming a fixed scaling factor \(s\) in the model. This section summarizes the assumptions made on uncertainties to construct \(R(s)\). The construction of \(R(s)\) is based on the work by Bruch et al.[1].
The uncertainty generally consists of multiple components. We can approximate these as additive in the \(R(s)\) matrix:
Here, \(R^\text{flux}(s)\) captures the uncertainty distribution of fluxes within the flux categories used for the inversion (see Bayesian Inversion Problem), \(R^\text{bcens}\) is the ensemble-estimated uncertainty due to lateral boundary conditions, and \(R^\text{diagonal}\) contains uncorrelated uncertainties such as observation uncertainties.
The construction of the R-matrix is implemented distributed in dubfi.fluxes.dataprovider_mpi_worker.MpiDistMecReaderWorker, dubfi.linalg.mpi_worker.MpiDensePostRWorker, dubfi.fluxes.dataprovider_dense.DataProvider, dubfi.linalg.dense.DenseEnsLinPostR, and dubfi.linalg.csc_sparse.CscEnsLinPostR.
This construction depends on many tuning parameters, most of which are found in the configuration group uncertainty.
Transport uncertainty¶
We assume that we have a transport ensemble of \(M^\text{meteo}\) members with known model predictions \(x^m_i(s)\) that estimate the transport uncertainty. In general, these model predictions will be approximations, which we will not discuss further here. We further have a best model estimate \(x_i(s)\).
The first and main component for constructing \(R(s)\) is the ensemble estimated transport uncertainty:
where \(\bar{x} = \frac{1}{M^\text{meteo}} \sum_m x^m\) is the ensemble average and \(\Lambda\) is a localization matrix.
We usually construct this localization as Gaussian suppression in horizontal, vertical, and temporal distance between observations (tuning parameters uncertainty.{hscale_m,vscale_m,tscale}).
The transport uncertainty may be inflated by changing uncertainty.meteo_inflation.
Approximating ensemble members¶
Separating all flux categories in each ensemble member can be numerically very expensive. We consider the cases where ensemble members group scaling factors to reduce the number of required tracers. Consider a grouping matrix \(G_{kn}\) where index \(k\) selects a flux category (or scaling factor) and \(n\) selects a group. The columns of \(G\) form basis vectors that are distinguished by the ensemble members. We require that \(\sum_n G_{kn} = 1\) for all \(k\). We can then compute the concentration due to basis vector \(n\) and denoted this by \(\hat{x}_n^m\). To approximate \(x^m(s)\), we use the approximation (neglecting a possible additive background):
Here we use that the contribution \(x^\text{det}_k\) of flux category \(k\) in the deterministic run is known. This approximation is used in the input data format required by DUBFI, see Ensemble run. If you do not want to use this approximation, simply choose \(G\) as the identity matrix.
Lateral boundary conditions¶
We consider an ensemble of \(M^\text{bc}\) boundary conditions \(b^m_i\) that represents the possible spread on the lateral boundaries. The resulting error covariance matrix is:
Flux ensemble¶
A flux ensemble is currently not implemented:
Uncertainty inflation¶
Large deviations between model and observations can occur due to strong signals of wrong fluxes, or due to badly represented local effects. To avoid a strong impact of such local effects on the inversion results, we need to ignore outliers or limit their influence by increasing their uncertainties. Here we consider a fixed upper bound of the absolute model-observation mismatch (considering a priori, far-field-corrected model data) relative to the uncertainty. Starting from \(R^\text{combined}(s)\), we introduce a weighting factor
where the tuning parameter \(\kappa\) (data_filter.outlier_threshold) is the maximum number of standard deviations by which the model may deviate from the observations.
In \(R^\text{weighted}(s)_{ij} = \phi_i \phi_j R^\text{combined}(s)\), each observation deviates from the prior by at most \(\kappa\) standard deviations.
Inflation and final result¶
We inflate the observation uncertainties by a global factor \(\gamma\) (uncertainty.global_inflation) to reduce the overall weight of the uncertainties and obtain the final results \(R(s)_{ij} = \gamma^2 R^\text{weighted}(s)_{ij}\).
Special case: Diagonal R matrix¶
It is possible to discard the ensemble and use a diagonal \(R(s)\) by choosing the implementation diagonal in dubfi.fluxes.