Clarification on the Use of QDM in MBCn #2075
Replies: 2 comments 1 reply
-
Hi Sylvain, could you point to a specific point in the documentation where it is implied that QM (and not QDM) is used for MBCn? At least looking, at the code, I can confirm QDM is being used in rotating part of the algorithm. In the training, we have the function # _adjustment.py
def _npdft_train(...
...
af = u._interp_on_quantiles_1D(
u._rank_bn(hist[iv]), <<=== apply the interpolation on the ranks
quantiles, <<=== interpolate the sampled adjustment factors af_q on the quantiles
af_q[ii, iv],
method=method,
extrap=extrap,
) The same holds for the adjusting part in Is there some documentation you could point out where this is not clear, or things are simply stated in a wrong way? Best, |
Beta Was this translation helpful? Give feedback.
-
The training parts of QM/QDM are indeed identical:
Now, in the training part of MBCn, there is in fact an adjustment part. The Npdf routine that rotates on variables perform a QDM training and adjustment. This would proceed differently is we used QM or QDM:
We would then obtain the adjustment using the appropriate quantities I agree, for the training data, it's essentially the same thing as QM. It doesn't matter if you used QM or QDM, you will get very similar values. The discretization is either over quantile values (hist_q) or quantiles (q), so it can lead to small differences. For this reason, I think it is still good to specify we used a QDM adjustment. Also, this ensures we have a consistent terminology between the MBCn training part and MBCn adjust part. In the latter case where we adjust data oustide the training period, the QM/QDM distinction is more crucial, as you noted.
Yes, you are right. However, the npdf part of the algorithm that rotates on variables does the training and the adjustment. So, there is in fact some adjustment going in the training part of MBCn, as noted above.
Exact!
It's related to what I wrote above, the question is: do you interpolate on {hist_q,af_q} and apply this to hist, or interp on {q,af_q} and apply this on hist_ranks. The same holds for the # QM way: interp on {array_q, af_q}
## in mbcn_train > _npdft_train
interpolate( hist, hist_q, af_q)
## in mbcn_adjust > _npdft_adjust
interpolate( sim, sim_q, af_q)
# QDM way: interp on {q, af_q}
## in mbcn_train > _npdft_train
interpolate( hist_ranks, q, af_q)
## in mbcn_adjust > _npdft_adjust
interpolate( sim_ranks, q, af_q) Hope this helps! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Setup Information
Context
Hello,
I would like to seek some clarification regarding an aspect of MBCn. The documentation mentions that for the training phase of MBCn, quantile delta mapping (QDM) is used for bias adjustment. However, it seems that quantile mapping (QM) is actually used instead, which makes sense since only ref and hist are involved at this stage of the algorithm.
In the adjustment phase of MBCn, the adjustment factors (af_q) derived during training are reused as-is, so QDM does not appear to play a role here either.
Given this, do you think the absence of QDM in the repeated rotation steps impacts the rank structure of the bias-adjusted simulation? The original paper by Cannon (sdba-cannon_multivariate_2018) applies the absolute change form of QDM at each iteration step.
Thank you,
Sylvain
Steps To Reproduce
No response
Beta Was this translation helpful? Give feedback.
All reactions