To generate a random variable from known distributions, you can use some type of physical machine. E.g., you can roll a fair die to generate Discrete Uniform data or you can roll weighted die to generate Categorical data.
There are also several ways to computationally generate random variables from a probability distribution. Perhaps the most common one is “inverse sampling”. To generate a random variable using inverse sampling, first sample \(p\) from a uniform distribution and then find the associated quantile quantile function \(\hat{F}^{-1}(p)\).1
Using Data.
You can generate a random variable from a known empirical distribution. Inverse sampling randomly selects observations from the dataset with equal probabilities. To implement this, we
order the data and associate each observation with an ECDF value
draw \(p \in [0,1]\) as a uniform random variable
find the associated quantile via the ECDF
Tip
Here is an example of generating random murder rates for US states.
# Generating random variables via inverse ECDFp <-runif(3000) ## Multiple DrawsQX_hat <-quantile(FX_hat, p, type=1)QX_hat[c(1,2,3)]## 47.39953815% 4.08322967% 65.45706145% ## 6.8 2.1 9.0## Can also do directly from the dataQX_hat <-quantile(X, p, type=1)QX_hat[c(1,2,3)]## 47.39953815% 4.08322967% 65.45706145% ## 6.8 2.1 9.0
Using Math.
If you know the distribution function that generates the data, then you can derive the quantile function and do inverse sampling. That is how computers generate random data from a distribution.
Code
# 4 random data points from 3 different distributionsqunif(4)## [1] NaNqexp(4)## [1] NaNqnorm(4)## [1] NaN
Here is an in-depth example of the Dagum distribution. The distribution function is \(F(x)=(1+(x/b)^{-a})^{-c}\). For a given probability \(p\), we can then solve for the quantile as \(F^{-1}(p)=\frac{ b p^{\frac{1}{ac}} }{(1-p^{1/c})^{1/a}}\). Afterwhich, we sample \(p\) from a uniform distribution and then find the associated quantile.
Code
# Theoretical Quantile Function (from VGAM::qdagum)qdagum <-function(p, scale.b=1, shape1.a, shape2.c) {# Quantile function (theoretically derived from the CDF) ans <- scale.b * (expm1(-log(p) / shape2.c))^(-1/ shape1.a)# Special known cases ans[p ==0] <-0 ans[p ==1] <-Inf# Safety Checks ans[p <0] <-NaN ans[p >1] <-NaNif(scale.b <=0| shape1.a <=0| shape2.c <=0){ ans <- ans*NaN }# Returnreturn(ans)}# Generate Random Variables (VGAM::rdagum)rdagum <-function(n, scale.b=1, shape1.a, shape2.c){ p <-runif(n) # generate random probabilities x <-qdagum(p, scale.b=scale.b, shape1.a=shape1.a, shape2.c=shape2.c) #find the inversesreturn(x)}# Exampleset.seed(123)X <-rdagum(3000,1,3,1)X[c(1,2,3)]## [1] 0.7390476 1.5499868 0.8845006
9.2 Factorial Distributions
Binomial.
The sum of \(n\) Bernoulli trials (number of successes)
Discrete, support \(\{0,1,\ldots,n\}\)
Probability Mass Function: \(Prob(X_{i}=x)=\binom{n}{x}p^{x}(1-p)^{n-x}\)
Suppose that employees at a company are \(70%\) female and \(30%\) male. If we select a random sample of eight employees, what is the probability that more than \(2\) in the sample are female?
Tip
Show that \(\mathbb{E}[X_{i}]=np\) and \(\mathbb{V}[X_{i}]=np(1-p)\). Start with the case \(n=1\), then the case \(n=2\), then case \(n=3\), then the general case of any \(n\).
The Binomial Limit Theorem (de Moivre–Laplace theorem) says that as \(n\) grows large, with \(p \in (0,1)\) staying fixed, the Binomial distribution is approximately normal with mean \(np\) and variance \(np(1-p)\)
Tip
The unemployment rate is \(10%\). Suppose that \(100\) employable people are selected randomly. What is the probability that this sample contains between \(9\) and \(12\) unemployed people. Use the normal approximation to binomial probabilities.
Parameters are \(\mu \approx n p = 10\)\(\sigma^2= n p (1−p) = 100 (0.1)(0.9)=9\)\(\sigma=\sqrt{9}=3\)).
Poisson.
The number of events in a fixed interval
Discrete, support \(\{0,1,2,\ldots\}\)
Probability Mass Function: \(Prob(X_{i}=x)=e^{-\lambda}\lambda^x/x!\)
Show that \(\mathbb{E}[X_{i}] = \mathbb{V}[X_{i}]= \lambda\).
Irwin–Hall.
The sum of \(n\) i.i.d. \(\text{Uniform}(0,1)\).
Continuous, support \([0,n]\)
Probability Density Function: \(f(x) = \dfrac{1}{(n-1)!}
\displaystyle\sum_{k=0}^{\lfloor x \rfloor} (-1)^k
\binom{n}{k} (x - k)^{n-1}\) for \(x \in [0,n]\), and \(0\) otherwise
A common use case: representing the sum of many small independent financial shocks
Code
## Minimal example (base R)# Irwin–Hall PDF functiondirwinhall <-function(x, n) { f_x <-vector(length=length(x))for(i inseq(x)) { xx <- x[i]if(xx <0| xx > n){ f_x[i] <-0 } else { k <-seq(0, floor(xx)) f_k <-sum((-1)^k*choose(n, k)*(xx-k)^(n-1))/factorial(n-1) f_x[i] <- f_k } }return(f_x)}# Parametersn <-2x <-seq(0, n, length.out =500)# Compute and plot PDFf_x <-dirwinhall(x, n)plot(x, f_x, type="l", col="blue",main='', xlab ="x", ylab ="f(x)")title(bquote(paste('IrwinHall(',.(n), ')')))
See also the Bates distribution, which is for the mean of \(n\) i.i.d. \(\text{Uniform}(0,1)\) random variables. It essentially rescales the Irwin-Hall distribution to range between \(0\) and \(1\).
Beta.
The sample space is any number on the unit interval, \(X_{i} \in [0,1]\), but with non-uniform probabilities.
The Beta distribution is mathematically complicated to write, and so we omit it. However, we can find the probability graphically using either the probability density function or cumulative distribution function.
Tip
Suppose \(X_{i}\) is a random variable with a beta distribution. Intuitively depict \(Prob(X_{i} \in [0.2, 0.8])\) by drawing an area under the density function. Numerically estimate that same probability using the CDF.
This distribution is often used, as the probability density function has two parameters that allow it to take many different shapes.
Tip
For each example below, intuitively depict \(Prob(X_{i} \leq 0.5)\) using the PDF. Repeat the exercise using a CDF instead of a PDF to calculate a numerical value.
Finally, the conditional probability of \(Prob(\text{die is} >2 \mid \text{die shows even number}) = Prob(A \mid B) = \frac{Prob(A \cap B)}{P(B)} = \frac{1/3}{1/2} = 2/3\)
Consider a six sided die with sample space \(\{1,2,3,4,5,6\}\) where each outcome is each equally likely. What is \(Prob(\text{die is odd or }<5)\)? Denote the odd events as \(A=\{1,3,5\}\) and the less than five events as \(B=\{1,2,3,4\}\). Then
\(A\cup B=\{1,3\}\), which implies \(Prob(A\cap B)=2/6=1/3\).
\(Prob(A)=3/6=1/2\) and \(Prob(B)=4/6=2/3\).
By inclusion–exclusion: \(Prob(A\cup B)=Prob(A)+Prob(B)-Prob(A\cap B)=1/2+2/3-1/3=5/6\).
Now find \(Prob(\text{die is even and }<5)\). Verify your answer with a computer simulation.
Law of Total Probability.
This law states that \(Prob(A)=Prob(A \mid B) P(B) + Prob(A \mid \lnot B) P(\lnot B)\), where \(\lnot B\) is the event “not \(B\)”.
For example, consider a six sided die where events are the number \(>2\) or the number is even. - The sets are \(A=\{3,4,5,6\}\) and \(B=\{2,4,6\}\) and \(\lnot B = \{1,3,5\}\) From before, we know that \(Prob(A)=2/3\), \(Prob(B)=1/2\), and \(Prob(A \mid B) = 2/3\). Then see that \(Prob(A \mid B) Prob(B) = \frac{2}{3} \frac{1}{2} = 2/6\)
We can also directly compute \(Prob(\lnot B)=1/2\), or infer it from \(Prob(\lnot B)=1-Prob(B)\). The conditional probability of \(Prob(\text{die is} >2 \mid \text{die shows odd number}) = Prob(A \mid \lnot B) = \frac{Prob(A \cap \lnot B)}{P(\lnot B)} = 2/3\).
Then we can see that \(Prob(A \mid B) Prob(B) + Prob(A \mid \lnot B) Prob(\lnot B) = 2/6 + 2/6 = 2/3 = Prob(A)\).
Drawing random uniform samples with computers is actually quite complex and beyond the scope of this course.↩︎