class wradlib.adjust.AdjustMixed(obs_coords, raw_coords, nnear_raws=9, stat='median', mingages=5, minval=0.0, mfb_args=None, ipclass=<class 'wradlib.ipol.Idw'>, **ipargs)

The mixed error model assumes that you have both a multiplicative and an additive error term. The intention is to overcome the drawbacks of the purely additive and multiplicative approaches (see AdjustAdd and AdjustMultiply). The formal representation of the error model according to [Pfaff2010] is:

$R_{gage} = R_{radar} \cdot (1 + \delta) +0 \epsilon$

$$\delta$$ and $$\epsilon$$ have to be assumed to be independent and normally distributed. The present implementation is based on a Least Squares estimation of $$\delta$$ and $$\epsilon$$ for each rain gage location. $$\delta$$ and $$\epsilon$$ are then interpolated and used to correct the radar rainfall field.

The least squares implementation uses the equation for the error model plus the condition to minimize ($$\delta^2 + \epsilon^2$$) for each gage location. The idea behind this is that $$\epsilon$$ dominates the adjustment for small deviations between radar and gage while $$\delta$$ dominates in case of large deviations.

Usage: First, an instance of AdjustMixed has to be created. Calling this instance then does the actual adjustment. The motivation behind this is performance. In case the observation points are always the same for different time steps, the computation of neighbours and inverse distance weights only needs to be performed once during initialisation.

AdjustMixed automatically takes care of invalid gage or radar observations (e.g. NaN, Inf or other typical missing data flags such as -9999). However, in case e.g. the observation data contain missing values, the computation of the inverse distance weights needs to be repeated in __call__ which is at the expense of performance.

Note

Inherits from wradlib.adjust.AdjustBase

For a complete overview of parameters for the initialisation of adjustment objects, as well as an extensive example, please see wradlib.adjust.AdjustBase.

 __call__(obs, raw[, targets, rawatobs, ix]) Returns an array of raw values that are adjusted by obs. xvalidate(obs, raw) Leave-One-Out Cross Validation, applicable to all gage adjustment classes.