Initial Description: Four Distribution Letters
The different probability distribution functions all start with one
of the following 4 letters:
d \(\rightarrow\) density: Find
the probability for a specific value: \(P(Y=a)\)
p \(\rightarrow\) Find the
probability for the specific value and all values less than it (aka,
cumulative probability): \(P(Y \le
a)\)
q \(\rightarrow\) quantile:
Finds the smallest value of the random variable, \(a\), so that \(P(Y \le a) \ge p\)
- It’s basically p in reverse: If we know the probability, what is the
value of the random variable?
- r \(\rightarrow\) generate a value
of the random variable Y given the parameters
Poisson Distribution
The Poisson distribution is used for unbounded count data, similar to
a negative binomial.
But it is often used when counting how often a certain outcome occurs
during an event.
- Number of eggs by a mosquito
- Number of cars that pass through an intersection during rush
hour
- Number of customers at a drive-thru in a day
Unlike the other 3 distributions, a Poisson only has 1 parameter: The
average number of occurrences during the event
- 250 eggs laid on average
- 1750 cars on averate during rush hour
- 123 customers on a typical day
The parameter is often denoted by \(\lambda\), although the letter \(\mu\) is occasionally used since it is an
average.
The equation to calculate the probability is:
\[P(Y = a) = \frac{\lambda^a}{a!}
e^{-\lambda} \]
1) dpois()
dpois() has 2 arguments:
x = the value of the random variable
lambda = the mean of the Poisson
distribution
Let’s look at an example with \(\lambda =
4\) and \(a = 5\).
# P(Y = 5 | lambda = 4)
lambda <- 4; a <- 5
# Manual probability:
lambda ^ a / gamma(a + 1) * exp(-lambda)
## [1] 0.1562935
# Using the function
dpois(x = 5, lambda = 4)
## [1] 0.1562935
# Let's look at values of 0 to 20 and find their probabilities
pois_df <-
tibble(
Y = 0:20,
`P(Y = a)` = dpois(x = Y, lambda = lambda)
)
pois_df |>
round(digits = 4)
## # A tibble: 21 × 2
## Y `P(Y = a)`
## <dbl> <dbl>
## 1 0 0.0183
## 2 1 0.0733
## 3 2 0.146
## 4 3 0.195
## 5 4 0.195
## 6 5 0.156
## 7 6 0.104
## 8 7 0.0595
## 9 8 0.0298
## 10 9 0.0132
## # ℹ 11 more rows
ggplot(
data = pois_df,
mapping = aes(x = Y, y = `P(Y = a)`)
) +
geom_col(fill = "steelblue") +
labs(
title = 'Poisson(lambda = 4)',
x = "a",
y = "P(Y = a)"
) +
theme(plot.title = element_text(hjust = 0.5, size = 16)) +
scale_y_continuous(expand = c(0, 0, 0.05, 0))

2) ppois()
ppois() is used to find \(P(Y
\le a)\) or can be used to find \(P(Y
> a)\) if lower = F is included
# P(Y <= 5 | lambda = 4)
ppois(q = 5, lambda = 4)
## [1] 0.7851304
# P(Y > 5 | lambda = 4)
ppois(q = 5, lambda = 4, lower = F)
## [1] 0.2148696
# P(Y >= 5 | lambda = 4)
ppois(q = 5 - 1, lambda = 4, lower = F)
## [1] 0.3711631
# adding the cumulative probabilities to the data frame
pois_df <-
pois_df |>
mutate(
`P(Y <= a)` = ppois(q = Y, lambda = 4)
)
pois_df |>
round(digits = 4)
## # A tibble: 21 × 3
## Y `P(Y = a)` `P(Y <= a)`
## <dbl> <dbl> <dbl>
## 1 0 0.0183 0.0183
## 2 1 0.0733 0.0916
## 3 2 0.146 0.238
## 4 3 0.195 0.434
## 5 4 0.195 0.629
## 6 5 0.156 0.785
## 7 6 0.104 0.889
## 8 7 0.0595 0.949
## 9 8 0.0298 0.979
## 10 9 0.0132 0.992
## # ℹ 11 more rows
3) qpois()
qpois() can be used to find the smallest \(a\) where \(P(Y
\le a) \ge p\)
For instance, a drive-thru averages of 20 customers per hour. What is
the 90th percentile for the number of customers in an hour?
qpois(p = 0.90, lambda = 20)
## [1] 26
# Let's look at the table of probabilities for Y with probability +-5% from 90%
tibble(
Y = 10:30,
`P(Y <= a)` = ppois(q = Y, lambda = 20)
) |>
filter(between(`P(Y <= a)`, 0.85, 0.95))
## # A tibble: 3 × 2
## Y `P(Y <= a)`
## <int> <dbl>
## 1 25 0.888
## 2 26 0.922
## 3 27 0.948
So 25 is the 88.8th percentile and 26 is the 92.2nd percentile
4) rpois()
rpois() can be used to generate random Poisson variables
with a certain mean, \(\lambda\)
# Generating 20 Poisson R.V. with lambda = 4
rpois(n = 20, lambda = 4)
## [1] 3 5 3 3 4 4 1 10 3 8 4 3 2 5 2 4 1 0 6 7
Let’s generate 10,000 Poisson RVs and plot them:
N = 1e5
tibble(
Y = rpois(n = N, lambda = 4)
) |>
# Counting how often each Y occurs
count(Y) |>
# Creating the graph
ggplot(
mapping = aes(x = factor(Y), y = n/N)
) +
geom_col(fill = "steelblue") +
labs(
x = "Randomly Generated Poisson",
y = "Probability"
) +
scale_y_continuous(expand = c(0, 0, 0.05, 0))

LS0tDQp0aXRsZTogIlBvaXNzb24gRGlzdHJpYnV0aW9uIGluIFIiDQphdXRob3I6ICJDaGFwdGVyIDE6IFByb2JhYmlsaXR5IERpc3RyaWJ1dGlvbnMiDQpkYXRlOiAiU1RBIDQ1MDQiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgZmlnX3dpZHRoOiA2DQogICAgZmlnX2hlaWdodDogNg0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IG5vDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgc21vb3RoX3Njcm9sbDogeWVzDQotLS0NCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgZmlnLmFsaWduID0gJ2NlbnRlcicpDQoNCiMgTG9hZGluZyBpbiB0aGUgdGlkeXZlcnNlDQpwYWNtYW46OnBfbG9hZCh0aWR5dmVyc2UpDQoNCiMgQ2hhbmdpbmcgdGhlIGRlZmF1bHQgdGhlbWUgdG8gdGhlbWVfYncoKSB1c2luZyB0aGVtZV9zZXQoKQ0KdGhlbWVfc2V0KHRoZW1lX2J3KCkpDQoNCmBgYA0KDQoNCg0KIyMgSW5pdGlhbCBEZXNjcmlwdGlvbjogRm91ciBEaXN0cmlidXRpb24gTGV0dGVycw0KDQpUaGUgZGlmZmVyZW50IHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiBmdW5jdGlvbnMgYWxsIHN0YXJ0IHdpdGggb25lIG9mIHRoZSBmb2xsb3dpbmcgNCBsZXR0ZXJzOg0KDQoxKSBkICRccmlnaHRhcnJvdyQgZGVuc2l0eTogRmluZCB0aGUgcHJvYmFiaWxpdHkgZm9yIGEgc3BlY2lmaWMgdmFsdWU6ICAkUChZPWEpJA0KDQoyKSBwICRccmlnaHRhcnJvdyQgRmluZCB0aGUgcHJvYmFiaWxpdHkgZm9yIHRoZSBzcGVjaWZpYyB2YWx1ZSBhbmQgYWxsIHZhbHVlcyBsZXNzIHRoYW4gaXQgKGFrYSwgY3VtdWxhdGl2ZSBwcm9iYWJpbGl0eSk6ICRQKFkgXGxlIGEpJA0KDQozKSBxICRccmlnaHRhcnJvdyQgcXVhbnRpbGU6IEZpbmRzIHRoZSBzbWFsbGVzdCB2YWx1ZSBvZiB0aGUgcmFuZG9tIHZhcmlhYmxlLCAkYSQsIHNvIHRoYXQgJFAoWSBcbGUgYSkgXGdlIHAkDQogIC0gSXQncyBiYXNpY2FsbHkgcCBpbiByZXZlcnNlOiBJZiB3ZSBrbm93IHRoZSBwcm9iYWJpbGl0eSwgd2hhdCBpcyB0aGUgdmFsdWUgb2YgdGhlIHJhbmRvbSB2YXJpYWJsZT8NCg0KNCkgciAkXHJpZ2h0YXJyb3ckIGdlbmVyYXRlIGEgdmFsdWUgb2YgdGhlIHJhbmRvbSB2YXJpYWJsZSBZIGdpdmVuIHRoZSBwYXJhbWV0ZXJzDQoNCg0KDQoNCg0KIyMjIFBvaXNzb24gRGlzdHJpYnV0aW9uIA0KDQpUaGUgUG9pc3NvbiBkaXN0cmlidXRpb24gaXMgdXNlZCBmb3IgdW5ib3VuZGVkIGNvdW50IGRhdGEsIHNpbWlsYXIgdG8gYSBuZWdhdGl2ZSBiaW5vbWlhbC4gDQoNCkJ1dCBpdCBpcyBvZnRlbiB1c2VkIHdoZW4gY291bnRpbmcgaG93IG9mdGVuIGEgY2VydGFpbiBvdXRjb21lIG9jY3VycyBkdXJpbmcgYW4gZXZlbnQuDQoNCi0gTnVtYmVyIG9mIGVnZ3MgYnkgYSBtb3NxdWl0bw0KLSBOdW1iZXIgb2YgY2FycyB0aGF0IHBhc3MgdGhyb3VnaCBhbiBpbnRlcnNlY3Rpb24gZHVyaW5nIHJ1c2ggaG91cg0KLSBOdW1iZXIgb2YgY3VzdG9tZXJzIGF0IGEgZHJpdmUtdGhydSBpbiBhIGRheQ0KDQpVbmxpa2UgdGhlIG90aGVyIDMgZGlzdHJpYnV0aW9ucywgYSBQb2lzc29uIG9ubHkgaGFzIDEgcGFyYW1ldGVyOiBUaGUgYXZlcmFnZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgZHVyaW5nIHRoZSBldmVudA0KDQotIDI1MCBlZ2dzIGxhaWQgb24gYXZlcmFnZQ0KLSAxNzUwIGNhcnMgb24gYXZlcmF0ZSBkdXJpbmcgcnVzaCBob3VyDQotIDEyMyBjdXN0b21lcnMgb24gYSB0eXBpY2FsIGRheQ0KDQpUaGUgcGFyYW1ldGVyIGlzIG9mdGVuIGRlbm90ZWQgYnkgJFxsYW1iZGEkLCBhbHRob3VnaCB0aGUgbGV0dGVyICRcbXUkIGlzIG9jY2FzaW9uYWxseSB1c2VkIHNpbmNlIGl0IGlzIGFuIGF2ZXJhZ2UuDQoNClRoZSBlcXVhdGlvbiB0byBjYWxjdWxhdGUgdGhlIHByb2JhYmlsaXR5IGlzOg0KDQokJFAoWSA9IGEpID0gXGZyYWN7XGxhbWJkYV5hfXthIX0gZV57LVxsYW1iZGF9ICQkDQoNCg0KIyMjIDEpIGBkcG9pcygpYA0KDQpgZHBvaXMoKWAgaGFzIDIgYXJndW1lbnRzOg0KDQoxKSBgeCA9IGAgdGhlIHZhbHVlIG9mIHRoZSByYW5kb20gdmFyaWFibGUNCg0KMikgYGxhbWJkYSA9IGAgdGhlIG1lYW4gb2YgdGhlIFBvaXNzb24gZGlzdHJpYnV0aW9uDQoNCkxldCdzIGxvb2sgYXQgYW4gZXhhbXBsZSB3aXRoICRcbGFtYmRhID0gNCQgYW5kICRhID0gNSQuDQoNCmBgYHtyIGRwb2lzfQ0KIyBQKFkgPSA1IHwgbGFtYmRhID0gNCkNCmxhbWJkYSA8LSA0OyBhIDwtIDUNCg0KIyBNYW51YWwgcHJvYmFiaWxpdHk6DQpsYW1iZGEgXiBhIC8gZ2FtbWEoYSArIDEpICogZXhwKC1sYW1iZGEpDQoNCg0KIyBVc2luZyB0aGUgZnVuY3Rpb24NCmRwb2lzKHggPSA1LCBsYW1iZGEgPSA0KQ0KDQoNCiMgTGV0J3MgbG9vayBhdCB2YWx1ZXMgb2YgMCB0byAyMCBhbmQgZmluZCB0aGVpciBwcm9iYWJpbGl0aWVzDQpwb2lzX2RmIDwtIA0KICB0aWJibGUoDQogICAgWSA9IDA6MjAsDQogICAgYFAoWSA9IGEpYCA9IGRwb2lzKHggPSBZLCBsYW1iZGEgPSBsYW1iZGEpDQogICAgKQ0KDQpwb2lzX2RmIHw+IA0KICByb3VuZChkaWdpdHMgPSA0KQ0KDQoNCmdncGxvdCgNCiAgZGF0YSA9IHBvaXNfZGYsDQogICAgICAgbWFwcGluZyA9IGFlcyh4ID0gWSwgeSA9IGBQKFkgPSBhKWApDQogICkgKyANCiAgDQogIGdlb21fY29sKGZpbGwgPSAic3RlZWxibHVlIikgKyANCiAgDQogIGxhYnMoDQogICAgdGl0bGUgPSAnUG9pc3NvbihsYW1iZGEgPSA0KScsDQogICAgeCA9ICJhIiwNCiAgICAgICB5ID0gIlAoWSA9IGEpIg0KICAgICkgKw0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBzaXplID0gMTYpKSArDQogIA0KICBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwLCAwLjA1LCAwKSkNCg0KDQoNCmBgYA0KDQoNCiMjIyAyKSBgcHBvaXMoKWANCg0KYHBwb2lzKClgIGlzIHVzZWQgdG8gZmluZCAkUChZIFxsZSBhKSQgb3IgY2FuIGJlIHVzZWQgdG8gZmluZCAkUChZID4gYSkkIGlmIGBsb3dlciA9IEZgIGlzIGluY2x1ZGVkDQoNCmBgYHtyIHBwb2lzfQ0KIyBQKFkgPD0gNSB8IGxhbWJkYSA9IDQpDQpwcG9pcyhxID0gNSwgbGFtYmRhID0gNCkNCg0KIyBQKFkgPiA1IHwgbGFtYmRhID0gNCkNCnBwb2lzKHEgPSA1LCBsYW1iZGEgPSA0LCBsb3dlciA9IEYpDQoNCiMgUChZID49IDUgfCBsYW1iZGEgPSA0KQ0KcHBvaXMocSA9IDUgLSAxLCBsYW1iZGEgPSA0LCBsb3dlciA9IEYpDQoNCiMgYWRkaW5nIHRoZSBjdW11bGF0aXZlIHByb2JhYmlsaXRpZXMgdG8gdGhlIGRhdGEgZnJhbWUNCnBvaXNfZGYgPC0gDQogIHBvaXNfZGYgfD4gDQogIG11dGF0ZSgNCiAgICBgUChZIDw9IGEpYCA9IHBwb2lzKHEgPSBZLCBsYW1iZGEgPSA0KQ0KICAgICkNCg0KcG9pc19kZiB8PiANCiAgcm91bmQoZGlnaXRzID0gNCkNCmBgYA0KDQoNCg0KIyMjIDMpIGBxcG9pcygpYA0KDQpgcXBvaXMoKWAgY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgc21hbGxlc3QgJGEkIHdoZXJlICRQKFkgXGxlIGEpIFxnZSBwJA0KDQpGb3IgaW5zdGFuY2UsIGEgZHJpdmUtdGhydSBhdmVyYWdlcyBvZiAyMCBjdXN0b21lcnMgcGVyIGhvdXIuIFdoYXQgaXMgdGhlIDkwdGggcGVyY2VudGlsZSBmb3IgdGhlIG51bWJlciBvZiBjdXN0b21lcnMgaW4gYW4gaG91cj8NCg0KYGBge3IgcXBvaXN9DQpxcG9pcyhwID0gMC45MCwgbGFtYmRhID0gMjApDQoNCiMgTGV0J3MgbG9vayBhdCB0aGUgdGFibGUgb2YgcHJvYmFiaWxpdGllcyBmb3IgWSB3aXRoIHByb2JhYmlsaXR5ICstNSUgZnJvbSA5MCUNCnRpYmJsZSgNCiAgWSA9IDEwOjMwLA0KICBgUChZIDw9IGEpYCA9IHBwb2lzKHEgPSBZLCBsYW1iZGEgPSAyMCkNCiAgKSB8PiANCiAgDQogIGZpbHRlcihiZXR3ZWVuKGBQKFkgPD0gYSlgLCAwLjg1LCAwLjk1KSkNCg0KDQpgYGANCg0KU28gMjUgaXMgdGhlIDg4Ljh0aCBwZXJjZW50aWxlIGFuZCAyNiBpcyB0aGUgOTIuMm5kIHBlcmNlbnRpbGUNCg0KDQoNCg0KDQojIyMgNCkgYHJwb2lzKClgDQoNCmBycG9pcygpYCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSByYW5kb20gUG9pc3NvbiB2YXJpYWJsZXMgd2l0aCBhIGNlcnRhaW4gbWVhbiwgJFxsYW1iZGEkDQoNCmBgYHtyIHJwb2lzfQ0KIyBHZW5lcmF0aW5nIDIwIFBvaXNzb24gUi5WLiB3aXRoIGxhbWJkYSA9IDQNCnJwb2lzKG4gPSAyMCwgbGFtYmRhID0gNCkNCmBgYA0KDQoNCkxldCdzIGdlbmVyYXRlIDEwLDAwMCBQb2lzc29uIFJWcyBhbmQgcGxvdCB0aGVtOg0KDQpgYGB7cn0NCk4gPSAxZTUNCnRpYmJsZSgNCiAgWSA9IHJwb2lzKG4gPSBOLCBsYW1iZGEgPSA0KQ0KICApIHw+IA0KICANCiAgIyBDb3VudGluZyBob3cgb2Z0ZW4gZWFjaCBZIG9jY3Vycw0KICBjb3VudChZKSB8PiANCiAgDQogICMgQ3JlYXRpbmcgdGhlIGdyYXBoDQogIGdncGxvdCgNCiAgICBtYXBwaW5nID0gYWVzKHggPSBmYWN0b3IoWSksIHkgPSBuL04pDQogICkgKyANCiAgDQogIGdlb21fY29sKGZpbGwgPSAic3RlZWxibHVlIikgKyANCiAgDQogIGxhYnMoDQogICAgeCA9ICJSYW5kb21seSBHZW5lcmF0ZWQgUG9pc3NvbiIsDQogICAgICAgeSA9ICJQcm9iYWJpbGl0eSINCiAgICApICsgDQogIA0KICBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLCAwLCAwLjA1LCAwKSkNCmBgYA0KDQoNCg0KDQoNCg0K