Quantile Mapping correction.
The statistical distribution of the chosen parameter is computed and the multiplying factors provided as arguments are used to correct each provided quantiles (see https://rcmes.jpl.nasa.gov/content/statistical-downscaling#download).The quantiles must be provided as increasing decimal numbers between 0 (0%) and 1 (100%) and the full range must be covered. Values given for quantiles less than 0.5 (50%) are assumed to extend toward 0 while values above are assumed to extend toward 1 (100%).
It takes the following arguments:
- TYPE: either ADD (add the correction coefficient) or MULT (multiply by the correction coefficient);
- PERIOD: either YEARLY, MONTHLY, WEEKLY or DAILY. This describes the period over which the quantiles were calculated (and is currently used as a sliding window). If no argument is given, it takes the whole dataset at once (optional);
- CORRECTIONS: the file and path containing the corrections to apply;
- WRITE_QUANTILES: write out the average value of each quantile (if no corrections file is provided, it will generate 10 quantiles).
This example write out the yearly deciles without performing any corrections to the data (so the corrections factor can be later computed):
VW::filter1 = QM
VW::arg1::period = yearly
VW::arg1::write_quantiles = true
This example applies pre-computed correction factors (quantiles computed over the whole dataset):
TA::filter1 = QM
TA::arg1::corrections = correctionsTA.dat
TA::arg1::type = add
Example of correction file (quantiles in the first column and correction factors as second column):
0 1.2
0.25 1.2
0.5 1.05
0.8 0.95
0.9 0.89
|
void | correctPeriod (const unsigned int ¶m, const size_t &idx_start, const size_t &idx_end, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec) const |
|
void | writeQuantiles (const std::vector< double > &thresholds, const std::vector< double > &vecX, const std::string ¶meter, const std::string &station) const |
|
double | getCorrection (const std::vector< double > &thresholds, const double &value) const |
|
std::vector< std::pair< size_t, size_t > > | getStarts (const std::vector< MeteoData > &ivec) const |
|
void | parse_args (const std::vector< std::pair< std::string, std::string > > &vecArgs) |
|
| ProcessingBlock (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const Config &cfg) |
| protected constructor only to be called by children More...
|
|
|
static void | readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y) |
| Read a data file structured as X Y value on each lines. More...
|
|
static void | readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y1, std::vector< double > &Y2) |
| Read a data file structured as X Y1 Y2 value on each lines. More...
|
|
static std::vector< double > | readCorrections (const std::string &filter, const std::string &filename, const size_t &col_idx, const char &c_type, const double &init) |
| Read a correction file applicable to repeating time period. More...
|
|
static std::vector< offset_spec > | readCorrections (const std::string &filter, const std::string &filename, const double &TZ, const size_t &col_idx=2) |
| Read a correction file, ie a file structured as timestamps followed by values on each lines. More...
|
|
static std::map< std::string, std::vector< DateRange > > | readDates (const std::string &filter, const std::string &filename, const double &TZ) |
| Read a list of date ranges by stationIDs from a file. More...
|
|
static const double | soil_albedo = .23 |
|
static const double | snow_albedo = .85 |
|
static const double | snow_thresh = .1 |
| parametrize the albedo from HS More...
|
|