Gamma Distribution in R (4 Examples) | dgamma, pgamma, qgamma & rgamma Functions


This article illustrates how to apply the gamma functions in the R programming language.

The post is structured as follows:

Let’s dive right in:


Example 1: Gamma Density in R (dgamma Function)

Let’s start with a density plot of the gamma distribution. For this task, we first need to create an input vector containing of a sequence of quantiles:

x_dgamma <- seq(0, 1, by = 0.02)                     # Specify x-values for gamma function

We can now use this vector as input for the dgamma function as you can see below. In the examples of this tutorial, we’ll use a shape of 5:

y_dgamma <- dgamma(x_dgamma, shape = 5)              # Apply dgamma function

In order to create a plot of the output of the dgamma function, we can apply the plot function as follows:

plot(y_dgamma)                                       # Plot dgamma values


gamma density in r

Figure 1: Gamma Density in R.


Figure 1 illustrates the output of the previous R syntax – A plot of the gamma distribution in R!

Let’s move on to the next example…


Example 2: Gamma Cumulative Distribution Function (pgamma Function)

In Example 2, I’ll show you how to create a cumulative distribution function (CDF) of the gamma distribution. As in Example 1, we first need to create a sequence of quantiles:

x_pgamma <- seq(0, 1, by = 0.02)                     # Specify x-values for pgamma function

We can now use the pgamma function to convert our sequence of quantiles to its corresponding CDF values of the gamma distribution:

y_pgamma <- pgamma(x_pgamma, shape = 5)              # Apply pgamma function

We can also create a graphic of this data with the plot function in R:

plot(y_pgamma)                                       # Plot pgamma values


gamma distribution in r

Figure 2: Gamma Cumulative Distribution Function.


Example 3: Gamma Quantile Function (qgamma Function)

If we want to create a plot reflecting the quantile function of the gamma distribution, we need to create a vector of probabilities:

x_qgamma <- seq(0, 1, by = 0.02)                     # Specify x-values for qgamma function

We now can use the qgamma command of the R programming language…

y_qgamma <- qgamma(x_qgamma, shape = 5)              # Apply qgamma function

…and create a scatterplot as follows:

plot(y_qgamma)                                       # Plot qgamma values


gamma quantile function in r

Figure 3: Gamma Quantile Function.


Example 4: Random Number Generation (rgamma Function)

In order to generate a set of random numbers, which is distributed as the gamma distribution, we need to specify a seed (for reproducibility)…

set.seed(13579)                                      # Set seed for reproducibility

…and we also need to specify the sample size of random numbers that we want to draw (i.e. 10000):

N <- 10000                                           # Specify sample size

Random numbers can now be simulated with the rgamma function:

y_rgamma <- rgamma(N, shape = 5)                     # Draw N gamma distributed values
y_rgamma                                             # Print values to RStudio console

Let’s have a look at a histogram of our values:

hist(y_rgamma,                                       # Plot of randomly drawn gamma density
     breaks = 1000,
     main = "")


histogram of gamma density in r

Figure 4: Random Numbers with Gamma Distribution.

Figure 4 shows the result of our random number simulation – Looks like the gamma distribution!


Video & Further Resources

Have a look at the following video of my YouTube channel. I’m explaining the content of this post in the video:


The YouTube video will be added soon.


You might also have a look at the other tutorials on distributions and the simulation of random numbers in the R programming language:


Furthermore, you could read the other posts on this homepage. You can find some tutorials below:


Summary: You learned in this tutorial how to use the different gamma functions in R. Please let me know in the comments, if you have additional questions or comments.


Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.