How to calculate probabilities for Exponential distributions in R

We provide effective and economically affordable online training courses for R and Python, click here for more details and course registration !

Exponential distribution is a continuous distribution that models random time between events (until next event occurs) during a Poisson process, which is a process with constant occurrence rate and independence among each individual event. Exponential distribution has the following probability density function:

Probability density function for Exponential distribution

Where positive parameter β denotes the mean time between events, and its reciprocal is the mean rate for event occurring.

In R programming, there are generally four functions that are used for calculating Exponential distributions.

dexp() – probability density

pexp() – cumulative probability till specified quantile value

qexp() – quantile value, below which is the specified cumulative probability. This function is the opposite operation of pexp().

rexp() – for random number generation from a specified Exponential distribution.

Next we will show how to implement these functions in RStudio.

# dexp(x_vec, rate) for probability density of Exponential distribution
# rate here represents the mean number occurrence of poisson events
#during a unit time period. It is 1 / beta in the formula. 
# Specify a vector
x_vec <- seq(1, 10, by = 0.2) 
x_vec
#output
[1]  1.0  1.2  1.4  1.6  1.8  2.0  2.2  2.4  2.6  2.8  3.0  3.2  3.4
[14]  3.6  3.8  4.0  4.2  4.4  4.6  4.8  5.0  5.2  5.4  5.6  5.8  6.0
[27]  6.2  6.4  6.6  6.8  7.0  7.2  7.4  7.6  7.8  8.0  8.2  8.4  8.6
[40]  8.8  9.0  9.2  9.4  9.6  9.8 10.0
#calculate probability densities for these values, from an Exponential distribution
#with rate 3             
DEX <- dexp(x_vec, rate = 3)    
DEX
#output
[1] 1.493612e-01 8.197117e-02 4.498673e-02 2.468924e-02 1.354974e-02
 [6] 7.436257e-03 4.081104e-03 2.239757e-03 1.229205e-03 6.746020e-04
[11] 3.702294e-04 2.031862e-04 1.115110e-04 6.119851e-05 3.358645e-05
[16] 1.843264e-05 1.011605e-05 5.551804e-06 3.046894e-06 1.672171e-06
[21] 9.177070e-07 5.036483e-07 2.764080e-07 1.516959e-07 8.325250e-08
[26] 4.568994e-08 2.507517e-08 1.376155e-08 7.552496e-09 4.144898e-09
[31] 2.274768e-09 1.248419e-09 6.851470e-10 3.760166e-10 2.063623e-10
[36] 1.132540e-10 6.215513e-11 3.411146e-11 1.872077e-11 1.027417e-11
[41] 5.638586e-12 3.094522e-12 1.698310e-12 9.320521e-13 5.115210e-13
[46] 2.807287e-13
# Plot dexp values 
plot(DEX)
Probability density of Exponential distribution with rate 3
#calculate cumulative probabilities for these values
PEX <- pexp(x_vec, rate = 3) 
PEX
#output
[1] 0.9502129 0.9726763 0.9850044 0.9917703 0.9954834 0.9975212
 [7] 0.9986396 0.9992534 0.9995903 0.9997751 0.9998766 0.9999323
[13] 0.9999628 0.9999796 0.9999888 0.9999939 0.9999966 0.9999981
[19] 0.9999990 0.9999994 0.9999997 0.9999998 0.9999999 0.9999999
[25] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[31] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[37] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[43] 1.0000000 1.0000000 1.0000000 1.0000000
# Plot cumulative probabilities                 
plot(PEX) 
Cumulative probabilities for Exponential distribution with rate 3
# Specify vector for cumulative probabilities
prob_vec <- seq(0, 1, by = 0.1)   
prob_vec
#output
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0                  
# Calculate quantile values for these cumulative probabilities
#from an Exponential distribution with rate 3
QEX <- qexp(prob_vec, rate = 3)
QEX
#output
[1] 0.00000000 0.03512017 0.07438118 0.11889165 0.17027521
 [6] 0.23104906 0.30543024 0.40132427 0.53647930 0.76752836
[11]        Inf
# Plot values                   
plot(QEX)  
Quantile values of Exponential distribution with rate 3
#Set number 30 
N <- 30
# Draw N random number from Exponential distribution with rate 3
REX <- rexp(N, rate = 3)
REX
#output
[1] 0.347262698 0.113683445 0.134654860 0.004289886 0.112857280
 [6] 0.115457058 0.072351288 0.983339690 0.022066066 0.115432567
[11] 0.271507935 0.724925475 0.899791045 0.451568319 0.184542056
[16] 0.061661427 0.208170068 0.044074432 0.137766094 0.150764298
[21] 0.485294863 0.079782160 0.020996603 0.187394563 0.058556869
[26] 0.021327833 0.041098657 0.196455535 0.599667342 0.488005906
# Plot random numbers in a histogram with 6 bins
hist(REX, breaks = 6, main = "")
Histogram of random numbers drawn from Exponential distribution with rate 3

For getting more knowledge of R and a preview of our training course, you can watch R tutorial videos on our YouTube channel !

wilsonzhang746

Recent Posts

Download R Course source files

Click here to download R Course source files !

2 months ago

Download Python Course source files

Click here to download Python Course Source Files !

2 months ago

How to create a data frame from nested dictionary with Pandas in Python

For online Python training registration, click here ! Pandas provides flexible ways of generating data…

5 months ago

How to delete columns of a data frame in Python

For online Python training registration, click here ! Data frame is the tabular data object…

5 months ago

Using isin() to check membership of a data frame in Python

Click her for course registration ! When a data frame in Python is created via…

5 months ago

How to assign values to Pandas data frame in Python

We provide affordable online training course(via ZOOM meeting) for Python and R programming at fundamental…

5 months ago