Skip to content

Georgios Boumis Posts

Books about uncertainty.

Benjamin Franklin once wrote: “…but in this world nothing can be said to be certain, except death and taxes“. Recently, I finished reading a book (the 3rd on the list below from left to right) regarding uncertainty in one’s everyday life and how can an individual quantify risks, make sense out of probabilities, and make good predictions about her/his future. I figured out that these books are very much worth reading as one ages, and thus I truly recommend them. Here’s a list of the books:

I found the second book the most exciting of all three mainly because it deals with more everyday life situations and answers questions like “What is the probability of dying while driving your motorcycle on your way to work?” or, “What are the effects of smoking/drinking on one’s average life expectancy?”. I think the second book is a good (interesting) starting point.

Ireland – November 2014 rainfall.

As part of my research project at Deltares, I am currently working on a flood forecasting system for Ireland and specifically the Suir river. For that, I am using re-analysis rainfall data from the Irish Meteorological Service. In the video below, you can take a look inside a flood forecasting and early warning system. It displays the way precipitation unfolded in November 2014, one of the wettest months in Ireland’s climatological history which was subsequently followed by severe flooding throughout the entire country and especially the town of Clonmel where river Suir navigates into.

The EnsPy toolbox.

Lately, I have been searching for Python modules that can help me work easily and effectively with ensemble forecasts data. And by “work”, I mean read and visualize ensembles in a proper way, as well as extract useful information e.g. what is the probability of streamflow being over a threshold on a specific day? Apparently, after a quick scanning of the web, I could not find something that would suit my purpose.

For that reason, I decided to start developing EnsPy. EnsPy is (or better, will be) a collection of tools in Python for reading, visualizing, and extracting information from ensemble forecasts data. I hope this software will help better communicate ensemble forecasts in the future.

Here is the respective GitHub repository where I plan to host the software:

http://www.github.com/bgeorgios/enspy

Below, is an example of a graph generated by EnsPy:

A conceptual HBV hydrologic model written in R.

A while ago, I stumbled upon an interesting paper* where the authors presented a conceptual HBV hydrologic model. This model, which is basically a modification of the original HBV model developed by the Swedish Meteorological and Hydrological Institute (SMHI), takes as input the daily precipitation and temperature and turns this information in simulated streamflow. The processes that get involved in the modelling are: 1) snow melt and snow accumulation, 2) effective precipitation and soil moisture, 3) evapotranspiration and 4) surface response.

I typed down the entire thing in R and ran a simulation (without a calibration of the different parameters), which resulted to the following hydrograph:

Of course, in order to obtain a satisfactory match between observed and simulated streamflow, a calibration criterion must be used such as the Nash-Sutcliffe efficiency or the Pearson correlation coefficient.

The R program can be found here: https://www.dropbox.com/s/rkjo2ntocuirdx2/HBV.R?dl=0

The input data which I used for this example can be downloaded here: https://www.dropbox.com/s/zki5447b9a9rxlz/HBV_data.zip?dl=0

*Aghakouchak, Amir & Habib, Emad. (2010). Application of a Conceptual Hydrologic Model in Teaching Hydrologic Processes. International Journal of Engineering Education. 26. 963-973.

Modifying EVS source and adding the Ignorance Score.

The Ensemble Verification System (EVS) is an open-source java software tool for verifying ensemble forecasts of hydrometeorological variables. However, even though it comes with a variety of verification metrics to choose from, it lacks the Ignorance Score, a measure which I find one of the easiest to interpret and communicate to forecast users.

The Ignorance Score measures the compressed data required for a forecasting system to represent the truth (observation). In other words, it quantifies the amount of information that a system is lacking. In that way, a user is able to know that the more the above information the worse the forecast, while the forecaster can spot which aspect(s) of her forecasting system contains most of the information.

Thanks to its tight code structure (packages/classes), EVS allows for adding a new verification metric with little code development. Specifically, two new java classes have to be added, namely the IgnoranceScore.class and IgnoranceScorePlot.class, while the VerificationB.class and ThresholdMetricStore.class have to be modified accordingly.

My modified EVS can be downloaded as .jar file here:

https://www.dropbox.com/s/z0k32r8fsw6cow0/EVS.jar?dl=0

© Georgios Boumis, 2021