Gamma Distribution Probabilities using R

Gamma Distribution Probabilities using R

In this tutorial, you will learn about how to use dgamma(), pgamma(), qgamma() and rgamma() functions in R programming language to compute the individual probabilities, cumulative probabilities, quantiles and to generate random sample for Gamma distribution.

Before we discuss R functions for Gamma distribution, let us see what is Gamma distribution.

Gamma Distribution

Gamma distribution distribution is a continuous type probability distribution. Gamma distribution has found applications in many fields. For example, gamma distribution is suitable for describing waiting times between successive occurrences of a random events, survival times, system reliability, etc.

Let $X\sim G(\alpha,\beta)$. Then the probability distribution of $X$ is

$$ \begin{aligned} f(x)&= \begin{cases} \frac{1}{\beta^\alpha\Gamma(\alpha)}x^{\alpha -1}e^{-x/\beta}, & x > 0;\alpha, \beta > 0; \\ 0, & Otherwise. \end{cases} \end{aligned} $$

where $\alpha$ is the shape parameter and $\beta$ is the scale parameter of Gamma distribution.

Read more about the theory and results of Gamma distribution here.

Gamma probabilities using dgamma() function in R

For continuous probability distribution, density is the value of the probability density function at $x$ (i.e., $f(x)$).

The syntax to compute the probability density function for Gamma distribution using R is

dgamma(x,shape, rate=1, scale=1/rate)

where

  • x : the value(s) of the variable and,
  • shape : shape parameter of gamma distribution,
  • rate : rate parameter of gamma distribution,
  • scale : scale parameter of gamma distribution.

Note: Rate =1/scale is an alternative way to specify the scale parameter.

The dgamma() function gives the density for given value(s) x, shape and scale.

Numerical Problem for Gamma Distribution

To understand the four functions dgamma(), pgamma(), qgamma() and rgamma(), let us take the following numerical problem.

Gamma Distribution Example

The lifetime of certain equipment is described by a random variable $X$ whose distribution is Gamma with parameters $\alpha = 2$ and $\beta = 1/3$.

(a) Find the value of the density function at $x=2$.
(b) Plot the graph of Gamma probability distribution.
(c) Find the probability that the lifetime of equipment is at most 2 unit of time.
(d) Find the probability that the lifetime of equipment is at least 1 unit of time.
(e) Find the probability that the lifetime of equipment is less than 2.5 unit of time but greater than 1.5 unit of time.
(f) Plot the graph of cumulative Gamma probabilities.
(g) What is the value of $c$, if $P(X\leq c) \geq 0.70$?
(h) Simulate 1000 Gamma distributed random variables with $\alpha= 2$ and $\beta = 1/3$.

Let $X$ denote the lifetime of certain equipment. Given that $X\sim Gamma(\alpha=2, \beta=1/3)$.

Example 1: How to use dgamma() function in R?

To find the value of the density function at $x=2$ we need to use dgamma() function.

Let $X$ denote the lifetime of certain equipment. Here $X\sim Gamma(2,1/3)$.

First let us define the given parameters as

# shape parameter 
alpha <- 2
# scale parameter
beta <- 1/3

The probability density function of $X$ is

$$ \begin{aligned} f(x)&= 9xe^{-3x},\\ &\quad\text{for } x \geq 0. \end{aligned} $$

For part (a), we need to find the density function at $x=2$. That is $f(2)$.

(a) The value of the density function at $x=2$ is

$$ \begin{aligned} f(2)&= 9\times 2\times e^{-3\times 2}\\ &=18\times e^{-6}\\ &= 0.0446175 \end{aligned} $$

The above probability can be calculated using dgamma(0.35,shape=2,scale=1/3) function in R.

# Compute Gamma probability
result1 <- dgamma(2,shape=alpha,scale=beta)
result1
[1] 0.04461754

Example 2 Visualize Gamma probability distribution

Using dgamma() function we can compute Gamma distribution probabilities for given x, shape and scale. To plot the probability density function of Gamma distribution, we need to create a sequence of x values and compute the corresponding probabilities.

# create a sequence of x values
x <- seq(0,4, by=0.02)
## Compute the Gamma pdf for each x
px<- dgamma(x,shape=alpha,scale=beta)

(b) Visualizing Gamma Distribution with dgamma() function and plot() function in R:

The probability density function of Gamma distribution with given 2 and 0.3333333 can be visualized using plot() function as follows:

## Plot the Gamma probability dist
plot(x,px,type="l",xlim=c(0,4),ylim=c(0,max(px)),
     lwd=3, col="darkred",ylab="f(x)")
title("PDF of Gamma (alpha = 2, beta= 1/3)")
PDF Gamma Dist
PDF Gamma Dist

Gamma cumulative probability using pgamma() function in R

The syntax to compute the cumulative probability distribution function (CDF) for Gamma distribution using R is

pgamma(q,shape, rate=1, scale=1/rate)

where

  • q : the value(s) of the variable,
  • shape : shape parameter of gamma distribution,
  • rate : rate parameter of gamma distribution,
  • scale : scale parameter of gamma distribution.

Using this function one can calculate the cumulative distribution function of Gamma distribution for given value(s) of q (value of the variable x), shape and scale.

Example 3: How to use pgamma() function in R?

In the above example, for part (c), we need to find the probability $P(X\leq 2)$.

(c) The probability that the lifetime is at most 2 unit of time is

$$ \begin{aligned} P(X\leq 2) &=\int_0^{2} f(x)\; dx. \end{aligned} $$

## Compute cumulative Gamma probability
result2 <- pgamma(2,shape=alpha,scale=beta)
result2
[1] 0.9826487

Example 4: How to use pgamma() function in R?

In the above example, for part (d), we need to find the probability $P(X \geq 1)$.

To calculate the probability that a random variable $X$ is greater than a given number, one can use the option lower.tail=FALSE in pgamma() function.

Above probability can be calculated easily using pgamma() function with argument lower.tail=FALSE as

$P(X \geq 1) =\int_{1}^\infty f(x)\; dx$= pgamma(1,shape=alpha,scale=beta,lower.tail=FALSE)

or by using complementary event as

$P(X \geq 1) = 1- P(X\leq 1)$= 1- pgamma(1,shape=alpha,scale=beta)

# compute cumulative Gamma probabilities
# with lower.tail False
pgamma(1,shape=alpha,scale=beta,lower.tail=FALSE)
[1] 0.1991483

(d) The probability that the lifetime is at least 1 unit of time is

$$ \begin{aligned} P(X\geq 1) &=\int_{1}^\infty f(x)\; dx\\ &=0.1991483. \end{aligned} $$

# Using complementary event
1-pgamma(1,shape=alpha,scale=beta)
[1] 0.1991483

Example 5: How to use pgamma() function in R?

One can also use pgamma() function to calculate the probability that the random variable $X$ is between two values.

(e) The probability that the lifetime of equipment is less than 2.5 unit of time but greater than 1.5 unit of time can be written as $P(1.5 < X < 2.5)$.

$$ \begin{aligned} P(1.5 < X < 2.5) &= P(X< 2.5) -P(X < 1.5)\\ &= 0.9952988 - 0.9389005\\ &= 0.0563983 \end{aligned} $$

The above probability can be calculated using pgamma() function as follows:

a <- pgamma(2.5,shape=alpha,scale=beta)
b <- pgamma(1.5,shape=alpha,scale=beta)
result3 <- a - b
result3
[1] 0.05639826

Example 6: Visualize the cumulative Gamma probability distribution

Using pgamma() function we can compute Gamma cumulative probabilities (CDF) for given x, shape1 and shape2. To plot the CDF of Gamma distribution, we need to create a sequence of x values and compute the corresponding cumulative probabilities.

# create a sequence of x values
x <- seq(0,4, by=0.02)
## Compute the Gamma pdf for each x
Fx <- pgamma(x,shape=alpha,scale=beta)

(f) Visualizing Gamma Distribution with pgamma() function and plot() function in R:

The cumulative probability distribution of Gamma distribution with given x, shape1 and shape2 can be visualized using plot() function as follows:

## Plot the Gamma  probability dist
plot(x,Fx,type="l",xlim=c(0,4),ylim=c(0,1),
     lwd=3, col="darkred",ylab="F(x)")
title("CDF of Gamma (alpha = 2, beta= 1/3)")
CDF Gamma Dist
CDF Gamma Dist

Gamma Distribution Quantiles using qgamma() in R

The syntax to compute the quantiles of Gamma distribution using R is

qgamma(p,shape,rate=1,scale=1/rate)

where

  • p : the value(s) of the probabilities,
  • shape : shape parameter of gamma distribution,
  • rate : rate parameter of gamma distribution,
  • scale : scale parameter of gamma distribution.

The function qgamma(p,shape,scale) gives $100*p^{th}$ quantile of Gamma distribution for given value of p, shape and scale.

The $p^{th}$ quantile is the smallest value of Gamma random variable $X$ such that $P(X\leq x) \geq p$.

It is the inverse of pgamma() function. That is, inverse cumulative probability distribution function for Gamma distribution.

Example 7: How to use qgamma() function in R?

In part (g), we need to find the value of $c$ such a that $P(X\leq c) \geq 0.70$. That is we need to find the $70^{th}$ quantile of given Gamma distribution.

alpha <- 2
beta <- 1/3
prob <- 0.70
# compute the quantile for Gamma  dist
qgamma(0.70,shape=alpha, scale=beta)
[1] 0.8130722

The $70^{th}$ percentile of given Gamma distribution is 0.8130722.

Visualize the quantiles of gamma Distribution

The quantiles of gamma distribution with given p, shape=alpha and scale=beta can be visualized using plot() function as follows:

p <- seq(0,1,by=0.02)
qx <- qgamma(p,shape=alpha,scale=beta)
# Plot the Quantiles of Gamma  dist
plot(p,qx,type="l",lwd=2,col="darkred",
     ylab="quantiles",
main="Quantiles of Gamma(alpha= 2,beta = 1/3)")
Quantile Gamma Dist
Quantile Gamma Dist

Simulating Gamma random variable using rgamma() function in R

The general R function to generate random numbers from Gamma distribution is

rgamma(n,shape,rate=1,scale=1/rate)

where,

  • n : the sample observations,
  • shape : shape parameter of gamma distribution,
  • rate : rate parameter of gamma distribution,
  • scale : scale parameter of gamma distribution.

The function rgamma(n,shape,scale) generates n random numbers from Gamma distribution with given shape and scale.

Example 8: How to use rgamma() function in R?

In part (h), we need to generate 1000 random numbers from Gamma distribution with given $shape = 2$ and $scale=1/3$.

(h) We can use rgamma(1000,shape,scale) function to generate random numbers from Gamma distribution.

## initialize sample size to generate
n <- 1000
# Simulate 1000 values From Gamma  dist
x_sim <- rgamma(n,shape=alpha,scale=beta)

The below graphs shows the density of the simulated random variables from Gamma Distribution.

## Plot the simulated data
plot(density(x_sim),xlab="Simulated x",ylab="density",
     lwd=5,col="darkred",
     main="Simulated data from Gamma(2,1/3) dist")
Random sample Gamma Dist
Random sample Gamma Dist

If you use same function again, R will generate another set of random numbers from $Gamma(2,1/3)$.

# Simulate 1000 values From Gamma  dist
x_sim_2 <- rgamma(n,shape=alpha,scale=beta)
## Plot the simulated data
plot(density(x_sim_2),xlab="Simulated x",ylab="density",
     lwd=5,col="blue",
     main="Simulated data from Gamma(2,1/3) dist")
Random sample Gamma Dist 2
Random sample Gamma Dist 2

For the simulation purpose to reproduce same set of random numbers, one can use set.seed() function.

# set seed for reproducibility
set.seed(1457)
# Simulate 1000 values From Gamma  dist
x_sim_3 <- rgamma(n,shape=alpha,scale=beta)
## Plot the simulated data
plot(density(x_sim_3),xlab="Simulated x",ylab="density",
     lwd=5,col="darkred",
     main="Simulated data from Gamma(2,1/3) dist")
Random sample Gamma Dist 3
Random sample Gamma Dist 3
set.seed(1457)
# Simulate 1000 values From Gamma  dist
x_sim_4 <- rgamma(n,shape=alpha,scale=beta)
## Plot the simulated data
plot(density(x_sim_4),xlab="Simulated x",ylab="density",
     lwd=5,col="darkred",
     main="Simulated data from Gamma(2,1/3) dist")
Random sample Gamma Dist 3
Random sample Gamma Dist 4

Since we have used set.seed(1457) function, R will generate the same set of Gamma distributed random numbers.

Histogram of Gamma Dist
Histogram of Gamma Dist

To learn more about other discrete and continuous probability distributions using R, go through the following tutorials:

Discrete Distributions Using R

Binomial distribution in R
Poisson distribution in R
Geometric distribution in R
Negative Binomial distribution in R
Hypergeometric distribution in R

Continuous Distributions Using R

Uniform distribution in R
Exponential distribution in R
Log-Normal distribution in R
Normal distribution in R
Beta distribution in R
Cauchy distribution in R
Laplace distribution in R
Logistic distribution in R
Weibull distribution in R

Endnote

In this tutorial, you learned about how to compute the probabilities, cumulative probabilities and quantiles of Gamma distribution in R programming. You also learned about how to simulate a Gamma distribution using R programming.

To learn more about R code for discrete and continuous probability distributions, please refer to the following tutorials:

Probability Distributions using R

Let me know in the comments below, if you have any questions on Gamma Distribution using R and your thought on this article.

Leave a Comment