A Guide to dgeom, pgeom, qgeom, and rgeom in R


This tutorial explains how to work with the geometric distribution in R using the following functions

  • dgeom: returns the value of the geometric probability density function.
  • pgeom: returns the value of the geometric cumulative density function.
  • qgeom: returns the value of the inverse geometric cumulative density function.
  • rgeom: generates a vector of geometric distributed random variables.

Here are some examples of cases where you might use each of these functions.

dgeom

The dgeom function finds the probability of experiencing a certain amount of failures before experiencing the first success in a series of Bernoulli trials, using the following syntax:

dgeom(x, prob) 

where:

  • x: number of failures before first success
  • prob: probability of success on a given trial

Here’s an example of when you might use this function in practice:

A researcher is waiting outside of a library to ask people if they support a certain law. The probability that a given person supports the law is p = 0.2. What is the probability that the fourth person the researcher talks to is the first person to support the law?

dgeom(x=3, prob=.2)

#0.1024

The probability that the researchers experiences 3 “failures” before the first success is 0.1024.

pgeom

The pgeom function finds the probability of experiencing a certain amount of failures or less before experiencing the first success in a series of Bernoulli trials, using the following syntax:

pgeom(q, prob) 

where:

  • q: number of failures before first success
  • prob: probability of success on a given trial

Here’s are a couple examples of when you might use this function in practice:

A researcher is waiting outside of a library to ask people if they support a certain law. The probability that a given person supports the law is p = 0.2. What is the probability that the researcher will have to talk to 3 or less people to find someone who supports the law?

pgeom(q=3, prob=.2)

#0.5904

The probability that the researcher will have to talk to 3 or less people to find someone who supports the law is 0.5904.

A researcher is waiting outside of a library to ask people if they support a certain law. The probability that a given person supports the law is p = 0.2. What is the probability that the researcher will have to talk to more than 5 people to find someone who supports the law?

1 - pgeom(q=5, prob=.2)

#0.262144

The probability that the researcher will have to talk to more than 5 people to find someone who supports the law is 0.262144.

qgeom

The qgeom function finds the number of failures that corresponds to a certain percentile, using the following syntax:

qgeom(p, prob) 

where:

  • p: percentile
  • prob: probability of success on a given trial

Here’s an example of when you might use this function in practice:

A researcher is waiting outside of a library to ask people if they support a certain law. The probability that a given person supports the law is p = 0.2. We will consider a “failure” to mean that a person does not support the law. How many “failures” would the researcher need to experience to be at the 90th percentile for number of failures before the first success?

qgeom(p=.90, prob=0.2)

#10

The researcher would need to experience 10 “failures” to be at the 90th percentile for number of failures before the first success.

rgeom

The rgeom function generates a list of random values that represent the number of failures before the first success, using the following syntax:

rgeom(n, prob) 

where:

  • n: number of values to generate
  • prob: probability of success on a given trial

Here’s an example of when you might use this function in practice:

A researcher is waiting outside of a library to ask people if they support a certain law. The probability that a given person supports the law is p = 0.2. We will consider a “failure” to mean that a person does not support the law. Simulate 10 scenarios for how many “failures” the researcher will experience until she finds someone who supports the law.

set.seed(0) #make this example reproducible

rgeom(n=10, prob=.2)

# 1 2 1 10 7 4 1 7 4 1

The way to interpret this is as follows:

  • During the first simulation, the researcher experienced 1 failure before finding someone who supported the law.
  • During the second simulation, the researcher experienced 2 failures before finding someone who supported the law.
  • During the third simulation, the researcher experienced 1 failure before finding someone who supported the law.
  • During the fourth simulation, the researcher experienced 10 failures before finding someone who supported the law.

And so on.

Additional Resources

An Introduction to the Geometric Distribution
Geometric Distribution Calculator

Leave a Reply

Your email address will not be published.