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
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
After applying the dhyper function, we can create a graphic representing the output of the dhyper function:
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
…then we can apply the phyper function to this vector…
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
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
Then, we can apply the 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
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
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
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 = "")
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.
Statistics Globe Newsletter