Skip to article frontmatterSkip to article content

Calculating Extremes for Spatiotemporal Data

CSIC
UCM
IGEO

In this section, we will look at the 3 most basic methods for calculate extreme values: the block maxima (BM), peak-over-threshold (POT), and point process (PP) methods. We will do detailed demonstrations showcasing how we can extract these extreme values through the lens of discretization via histograms. With histograms, we will show how we can extract extreme values through for each of these methods as a combination of thresholding, selecting maximum values, and counting.

To cover all cases, we will need tools for the following operations:

Appendix

References


Block Maxima

We define a spatiotemporal block and we take the maximum count within a spatiotemporal block.

Algorithm

  1. Define spatiotemporal block

  2. Select maximum/minimum values

Clon_coords: Array[“”] = …
Clat_coords: Array[“”] = …

Peak-Over-Threshold

We select the values that are over a predefined threshold and discard the rest. We also have the option to discretize this further by taking the maximum within a pre-defined spatiotemporal block. The POT method is a discretized version of the block maxima method, i.e., it is the infinite limit as the size of spatiotemporal block goes to zero whereby each individual point is a maximum. This will result in an irregular grid because there is no guarantee that only one maximum occurrence above a pre-defined threshold within a pre-defined spatiotemporal block. In addition, one could have irregular blocks/shapes but this makes processing much harder. One could further discretize this to count exceedences (and intensity).


Algorithm

  1. Define maximum/minimum threshold values

  2. Select values above/below threshold

  3. Define spatiotemporal block (Optional)

  4. Summary statistic of values within spatiotemporal block (Optional)


Point Processes

This method is similar to the POT method with the spatiotemporal blocks. However, we also count the number of exceedences and take a summary statistic of the values within the block.


In this section, we will do a deeper dive into how one can further preprocess the data to remove extreme values

Examples

Spatial Scale

# filtering - remove high/low frequency signals
# spatiotemporal peaks - spatial,temporal dependencies
# remove climatology - temporal dependencies
# spatial aggregation - spatial dependencies
# rolling mean - spatial, temporal dependencies

Cookbook

Example PsuedoCode

First, we need some spatiotemporal data. This data could be any spatiotemporal field, y=y(s,t)y=y(\mathbf{s},t), representing the extreme values we wish to extract.

y: Array["Dt Dy"] = ...

Now, we need to do some preprocessing steps to ensure that we get an iid dataset. We will remove some of the excess effects.

# filter high frequency signals
y: Array["Dt Dy"] = low_pass_filter(y, params)
# remove climatology
climatology["Dclim"] = calculate_climatology(y, reference_period, params)
y: Array["Dt Dy"] = remove_climatology(y, climatology, params)
# spatial aggregation
y: Array["Dt"] = spatial_aggregator(y, params)

Now, we need to select some extreme values.

y_max: Array["Dt"] = block_maximum(y, params)