This page contains related R codes for STAT 51100 Section 010. This page is for Chapter 4, some continuous random variables. We will cover several distributions: Normal distribution, Exponential distribution, Gamma distribution, Weibull distribution, and log-normal distribution.

We can use R to simulate random variables from the above distribution, and we can also use R to calculate the probability mass function, cumulative distribution function, and also draw the probability histogram.

General function format are

d*(x, parameters) |

p*(x, parameters) |

q*(p, parameters) |

r*(sample size, parameters) |

Here

d* function will calculate the value of the probability mass function at value x. Parameters are needed to be specified.

p* function will calculate the value of the cumulative distribution function at value x, i.e., \(P(X \leq x)\).

q* function will calculate the percentile at value \(p\), see this function after we learn percentile in Chapter 4.

r* function will simulate a ramdom sample of size as the sample size specified in this function, with a specified distribution.

A useful function *help.search()* to check how to use the above functions. We will not simulate discrete random variables in this tutorial.

The Normal distribution has the form as *dnorm, pnorm, qnorm, rnorm*. The following calculates the pdf for a standard normal distribution between -5 and 5.

```
x<-seq(-5, 5, by=0.01)
y<-dnorm(x)
plot(x, y, type='l', xlab='X', ylab='Density', main='Standard Normal Distribution')
abline(h=0, lty=2)
abline(v=0, lty=2)
```

We can also specify different mean and variance/standard deviation.

```
y<-dnorm(x, mean=1, sd=2)
plot(x, y, type='l', xlab='X', ylab='Density', main='Normal Distribution: N(1, 2)')
abline(h=0, lty=2)
abline(v=1, lty=2)
```

We will illustrate how to calculate \(P(X\leq 1.25)\), \(P(-0.38 \leq X \leq 1.25)\) using the (difference of the) CDF(s).

`pnorm(1.25)`

`## [1] 0.8943502`

`pnorm(1.25)-pnorm(-.38)`

`## [1] 0.5423775`

Now we will illustrate how to find percentile of a standard normal distribution, the following will find .90, .95, .975 and .99 percentiles of standard normal distribution

```
q<-c(.9, .95, .975, .99)
qnorm(q)
```

`## [1] 1.281552 1.644854 1.959964 2.326348`

We can also simulate some data from standard normal distribution and draw histogram of it

```
x<-rnorm(1000)
hist(x, freq=FALSE)
t<-seq(-5, 5, by=0.1)
y<-dnorm(t)
lines(t, y, col=2)
```