In the previous post we considered the occurrence of 100-year floods as a Binomial random variable. We can do similar analysis using the Poisson distribution. As noted by Jones et al. “For n large, the Binom(n,p) distribution is approximately Pois(np)”.
In the examples we’ve been looking at, n is reasonably large i.e. 100 (years). So binom(100, 0.01) is approximately pois(100 x 0.01) = pois(1).
Lets try it:
Consider the probability of 1, 100-year flood in 100 years.
The poisson distribution can be expressed as follows:
In this case,
So, using the Poisson distribution the probability of 1, 100-year flood in 100 years is 0.367894. Using the Binomial distribution it is 100 x 0.01 x (1-0.01)^99 = 0.3697296. i.e. pretty close. The approximation gets better for larger n.
Similar to the Binomial example, we can use a Poisson random variable to simulate flood occurrence – although the Binomial approach will be more accurate. The figure below shows a simulation of 100, 100-year sequences in a 10 x 10 grid. You can see that most of the time there is 0 or 1 flood but occasionally there are a lot more.
R code (also available as a gist)
dpois(0,1) # prob of zero 100-year floods in 100 years dpois(0,1) # prob of zero 100-year floods in 100 years  0.3678794 dpois(1,1) # prob of one 100-year floods in 100 years  0.3678794 dpois(2,1) # prob of two 100-year floods in 100 years  0.1839397 # simulation library(ggplot2) df <- expand.grid(x = 1:10, y = 1:10) df$z <- rbinom(100, 100, 0.01) # could also use rpois(100,1) ggplot(data=df, aes(x,y)) + geom_tile(aes(fill=z)) + scale_fill_gradient(low="green", high = "red", name = 'Floods') + geom_text(data = df, aes(x, y, label = z)) + scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) + xlab('') + ylab('') set.seed(2000) rpois(10, 1)  0 1 0 1 2 1 3 1 2 1 # number of 100-year floods in each of 10 100-year sequences