## 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)")
```

## 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)")
```

## 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)")
```

## 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")
```

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")
```

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")
```

```
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")
```

Since we have used `set.seed(1457)`

function, R will generate the same set of Gamma distributed random numbers.

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.