# Hypergeometric Distribution in R (4 Examples) | dhyper, phyper, qhyper & rhyper Functions

This article explains how to **use the hypergeometric functions** in the R programming language.

The post is structured as follows:

- Example 1: Hypergeometric Density in R (dhyper Function)
- Example 2: Hypergeometric Cumulative Distribution Function (phyper Function)
- Example 3: Hypergeometric Quantile Function (qhyper Function)
- Example 4: Generating Random Numbers (rhyper Function)
- Video & Further Resources

Let’s start right away:

## Example 1: Hypergeometric Density in R (dhyper Function)

Let’s start in the first example with the density of the hypergeometric distribution. To get the density values, we need to create a vector of quantiles:

x_dhyper <- seq(0, 40, by = 1) # Specify x-values for dhyper function |

x_dhyper <- seq(0, 40, by = 1) # Specify x-values for dhyper function

Now, we can apply the dhyper R command to this vector of quantiles.

In order to apply the dhyper function, we also need to specify the parameters m (i.e. the number of white balls in the urn), n (i.e. the number of black balls in the urn), and k (i.e. the number of balls drawn from the urn). I set these parameters to 50, 20, and 30. However, you might modify these parameters to your personal preferences.

y_dhyper <- dhyper(x_dhyper, m = 50, n = 20, k = 30) # Apply dhyper function |

y_dhyper <- dhyper(x_dhyper, m = 50, n = 20, k = 30) # Apply dhyper function

After applying the dhyper function, we can create a graphic representing the output of the dhyper function:

plot(y_dhyper) # Plot dhyper values |

plot(y_dhyper) # Plot dhyper values

**Figure 1: Hypergeometric Density.**

## Example 2: Hypergeometric Cumulative Distribution Function (phyper Function)

The second example shows how to produce the hypergeometric cumulative distribution function (CDF) in R. Similar to Example 1, we first need to create an input vector of quantiles…

x_phyper <- seq(0, 20, by = 1) # Specify x-values for phyper function |

x_phyper <- seq(0, 20, by = 1) # Specify x-values for phyper function

…then we can apply the phyper function to this vector…

y_phyper <- phyper(x_phyper, m = 50, n = 20, k = 30) # Apply phyper function |

y_phyper <- phyper(x_phyper, m = 50, n = 20, k = 30) # Apply phyper function

…and finally we can produce a plot representing the hypergeometric CDF:

plot(y_phyper) # Plot phyper values |

plot(y_phyper) # Plot phyper values

**Figure 2: Hypergeometric Cumulative Distribution Function.**

## Example 3: Hypergeometric Quantile Function (qhyper Function)

Example 3 illustrates the R code for the hypergeometric quantile function. First, we have to specify a sequence of probabilities between 0 and 1:

x_qhyper <- seq(0, 1, by = 0.01) # Specify x-values for qhyper function |

x_qhyper <- seq(0, 1, by = 0.01) # Specify x-values for qhyper function

Then, we can apply the qhyper function:

y_qhyper <- qhyper(x_qhyper, m = 50, n = 20, k = 30) # Apply qhyper function |

y_qhyper <- qhyper(x_qhyper, m = 50, n = 20, k = 30) # Apply qhyper function

And finally, we can produce a plot representing the hypergeometric quantile function:

plot(y_qhyper) # Plot qhyper values |

plot(y_qhyper) # Plot qhyper values

**Figure 3: Hypergeometric Quantile Function.**

## Example 4: Generating Random Numbers (rhyper Function)

If we want to produce a set of random numbers distributed according to the hypergeometric distribution, we need to specify a seed and a sample size that we want to simulate first:

set.seed(53535) # Set seed for reproducibility N <- 10000 # Specify sample size |

set.seed(53535) # Set seed for reproducibility N <- 10000 # Specify sample size

Now, we can apply the rhyper function to generate our random numbers:

y_rhyper <- rhyper(N, m = 50, n = 20, k = 30) # Draw N hypergeometrically distributed values y_rhyper # Print values to RStudio console # 22 22 20 20 20 21 24 21 22 24 22 23 20 20 22 24 21 22 25 |

y_rhyper <- rhyper(N, m = 50, n = 20, k = 30) # Draw N hypergeometrically distributed values y_rhyper # Print values to RStudio console # 22 22 20 20 20 21 24 21 22 24 22 23 20 20 22 24 21 22 25

The following histogram shows the distribution of our random numbers (i.e. a hypergeometric distribution):

hist(y_rhyper, # Plot of randomly drawn hyper density breaks = 70, main = "") |

hist(y_rhyper, # Plot of randomly drawn hyper density breaks = 70, main = "")

**Figure 4: Hypergeometric Random Numbers.**

## Video & Further Resources

Have a look at the following video of my YouTube channel. I’m explaining the R codes of this article in the video.

*The YouTube video will be added soon.*

You could also have a look at the other tutorials on distributions and the generation of random numbers in R:

- Bernoulli Distribution in R
- Beta Distribution in R
- Binomial Distribution in R
- Bivariate & Multivariate Distributions in R
- Cauchy Distribution in R
- Chi-Squred Distribution in R
- Exponential Distribution in R
- F Distribution in R
- Gamma Distribution in R
- Geometric Distribution in R
- Hypergeometric Distribution in R
- Log Normal Distribution in R
- Logistic Distribution in R
- Negative Binomial Distribution in R
- Normal Distribution in R
- Poisson Distribution in R
- Student t Distribution in R
- Studentized Range Distribution in R
- Uniform Distribution in R
- Weibull Distribution in R
- Wilcoxon Signedank Statistic Distribution in R
- Wilcoxonank Sum Statistic Distribution in R

Furthermore, you may read the related articles on this homepage.

Summary: In this article, I illustrated how to **apply the hypergeometric functions** in the R programming language. Please tell me about it in the comments section, in case you have any additional questions. In addition, please subscribe to my email newsletter to get updates on the newest articles.

### Subscribe to my free statistics newsletter: