For a number of gridcells, all between the 500mm and 800mm rainfall isohyets in sub-Saharan Africa, I've got dekadal rainfall (from FEWS). They are pretty spread out over the continent and there are a lot of them, so they'll have different seasonality, though they should all be roughly unimodal (particularly given the latitudes that I've got).

I want to define an algorithm to define the average start and end of the rainy season. So far, I'm thinking of the following:

For each gridcell:

  1. Define the month of average maximum rainfall
  2. Find the month prior to the average maximum rainfall month that minimizes the sum of 3 lags of average monthly rainfall, subject to that month containing at least 20% of annual rainfall. Define it as the average start.
  3. Find the month after the average maximum rainfall month that does the same thing, only with 3 forward lags of average monthly rainfall. Define that month as the end of the rainy season.

The 20% figure seems arbitrary, though I'm not sure what else to do. I'm not really a climate scientist, though maybe I could play one on television. Is there an accepted convention here? If not, any suggestions on improving my algorithm?

  • 1
    $\begingroup$ I reckon it'd be really useful to add a tine-series plot of some seasonal cycles here (monthly or weekly averages, maybe a handful of example years from different grid cells), so people can see what you're dealing with. I suspect that there is no hard-edge to the monsoon season, right? I mean, when I've been in a monsoon build up, it's pretty gradual - you start getting storms, and they just gradually get heavier and longer over a couple of months. That being the case, of course the 20% figure is arbitrary. But you've got to start somewhere. $\endgroup$
    – naught101
    Commented Feb 11, 2016 at 0:39

1 Answer 1


I find the following method very straightforward and elegant. So maybe I can convince you to consider it.

For the South American (SA) monsoon, Silva et al. (2007) and Carvalho et al. (2012) proposed the Long-scale South American Monsoon Index (LISAM), based on the annual cycle of some fields.

For the 2012 paper, where several precipitation datasets are used to calculate what you want, the methodology is as follows:

  1. Compute the empirical orthogonal function (EOF) of a precipitation gridded data on land over SA. (There are some details as weigth by latitude, you may want to do combined EOF etc etc... but the essence of the idea is the same). Note that EOF is computed on raw precipitation, not anomalies.

  2. The first EOF represents the annual (seasonal) cycle of the monsoon. The First PC (PC1) shows it clearly (Figure 2 in Silva et al. 2007)

At last, having the time series of PC1, you can determine:

Start (onset): the day in which PC1 turns positive. End (demise): the day in which PC1 turns negative.

Further detailes are given in the cited papers. Hope it helps.

  • 1
    $\begingroup$ That seems like a good algorithm for a single large area. But could it be generalized to a large region in which different subregions have different onset dates? $\endgroup$ Commented Jun 20, 2017 at 13:39
  • $\begingroup$ @generic_user I think that is a nice research question to adress! You could take the EOF of precipitation of each subregion and, if that the first (not necessarily the first, but some) mode represents the annual (monsoonal) cycle, than you have it! $\endgroup$
    – ouranos
    Commented Jun 20, 2017 at 13:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.