Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
IntroProbDS/ch04.r
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
224 lines (178 sloc)
5.11 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############# | |
# Chapter 4.3 (Cumulative Distribution Function) | |
## CDF of a Gaussian Mixture | |
# R code to generate the PDF and CDF | |
library(EnvStats) | |
x = seq(-5, 10, (5+10)/1000) | |
x = sort(x) | |
f = dnormMix(x, 0, 1, 5, 1, p.mix=c(0.7)) | |
plot(x,f, xlim=c(-5,10), ylim=c(0,0.4), type="n") | |
lines(x, f, lwd=4, col="blue") | |
polygon(c(min(x), x[x<=0.8]), c(f[x<=0.8], 0), col="lightblue") | |
grid() | |
F = pnormMix(x, 0, 1, 5, 1, p.mix=c(0.7)) | |
plot(x, F, type="n") | |
lines(x, F, lwd=4, col="blue") | |
grid() | |
## CDF of a Uniform random variable | |
# R code to generate the PDF and CDF | |
x = seq(-5, 10, (5+10)/1500) | |
f = dunif(x, -3, 4) | |
F = punif(x, -3, 4) | |
plot(x, f, type="n") | |
lines(x, f, lwd=5, col="blue") | |
grid() | |
# CDF | |
plot(x, F, type="n") | |
lines(x, F, lwd=5, col="blue") | |
grid() | |
## CDF of an exponential random variable | |
# R code to generate the PDF and CDF | |
x = seq(-5, 10, (5+10)/1500) | |
f = dexp(x, 1/2) | |
F = pexp(x, 1/2) | |
plot(x, f, type="n") | |
lines(x, f, lwd=5, col="blue") | |
grid() | |
# CDF | |
plot(x, F, type="n") | |
lines(x, F, lwd=5, col="blue") | |
grid() | |
############# | |
# Chapter 4.5 | |
## Generate a uniform random variable | |
# R code to generate 1000 uniform random numbers | |
a = 0; b = 1; | |
X = runif(1000, a, b) | |
hist(X) | |
grid() | |
## Mean, variance, median, mode of a uniform random variable | |
# R code to computer empirical mean, var, median, mode | |
library(pracma) | |
a = 0; b = 1; | |
X = runif(1000, a, b) | |
M = mean(X) | |
V = var(X) | |
Med = median(X) | |
Mod = Mode(X) | |
## Mean and Variance computation (not on "Code and Data" section of website, but written in textbook p.34) | |
# R code to compute mean and variance | |
unifstat = function(a, b) { | |
M = (a+b)/2 | |
V = ((a-b)^2)/12 | |
return(list(mean = M, var = V)) | |
} | |
a = 0; b = 1; | |
M = unifstat(a, b)$mean | |
V = unifstat(a, b)$var | |
## Probability of a uniform random variable | |
# R code to compute the probability P(0.2 < X < 0.3) | |
a = 0; b = 1; | |
F = punif(0.3, a, b) - punif(0.2, a, b) | |
## PDF of an exponential random variable | |
# R code to generate the PDF and CDF of an exponential random variable | |
lambda1 = 1/2 | |
lambda2 = 1/5 | |
x = seq(0, 1, (0+1)/1000) | |
# PDFs | |
f1 = dexp(x, 1/lambda1) | |
f2 = dexp(x, 1/lambda2) | |
plot(x, f2, type="n") | |
lines(x, f1, lwd=4, col="blue", lty=6) | |
lines(x, f2, lwd=4, col="red") | |
legend(0.8, 4.5, legend=c(expression(paste(lambda, "=5")), expression(paste(lambda, "=2"))), col=c("red", "blue"), lty=1:1) | |
grid() | |
# CDFs | |
F1 = pexp(x, 1/lambda1) | |
F2 = pexp(x, 1/lambda2) | |
plot(x, F2, type="n") | |
lines(x, F1, lwd=4, col="blue", lty=6) | |
lines(x, F2, lwd=4, col="red") | |
legend(0.8, 0.2, legend=c(expression(paste(lambda, "=5")), expression(paste(lambda, "=2"))), col=c("red", "blue"), lty=1:1) | |
grid() | |
############# | |
# Chapter 4.6 | |
## Generate Gaussian PDF (not on "Code and Data" section on website, but written in textbook p.42) | |
# R code to generate a Gaussian PDF | |
x = seq(-10, 10, (10+10)/1000) | |
mu = 0; sigma = 1; | |
f = dnorm(x, mu, sigma) | |
plot(x, f, type="n") | |
lines(x, f, lwd=4, col="blue") | |
grid() | |
## PDF and CDF of a Gaussian random variable | |
# R code to generate standard Gaussian PDF and CDF | |
x = seq(-5, 5, (5+5)/1000) | |
f = dnorm(x) | |
F = pnorm(x) | |
plot(x, f, type = "n") | |
lines(x, f, lwd=6) | |
grid() | |
# CDF | |
plot(x, F, type = "n") | |
lines(x, F, lwd=6) | |
grid() | |
## Verify standardised gaussian (not on "Code and Data" section on website, but written in textbook p.45) | |
# R code to verify standardised Gaussian | |
x = seq(-5, 5, (5+5)/1000) | |
mu = 3; sigma = 2; | |
f1 = dnorm((x-mu)/sigma, 0, 1) # Standardised | |
f2 = dnorm(x, mu, sigma) # Raw | |
# Skewness and kurtosis of a random variable | |
# R code to plot a Gamma distribution | |
x = seq(0, 30, (0+30)/1000) | |
theta = 1 | |
plot(x, dgamma(x, 2, theta), type = "n") | |
lines(x, dgamma(x, 2, theta), lwd = 4) | |
lines(x, dgamma(x, 5, theta), lwd = 4, col = "#333333") | |
lines(x, dgamma(x, 10, theta), lwd = 4, col = "#666666") | |
lines(x, dgamma(x, 15, theta), lwd = 4, col = "#999999") | |
lines(x, dgamma(x, 20, theta), lwd = 4, col = "#CCCCCC") | |
legend(23, 0.36, legend=c("k = 2", "k = 5", "k = 10", "k = 15", "k = 20"), col=c("1", "#333333", "#666666", "#999999", "#CCCCCC"), lwd = 4,lty=1:1) | |
grid() | |
# R code to compute skewness and kurtosis | |
library(e1071) | |
X = rgamma(10000, 3, 5) | |
s = skewness(X) | |
k = kurtosis(X) | |
# Histogram of Z = X1 + X2 + X3 (not on "Code and "Data" section, but written in textbook p.50) | |
# R code to show the histogram of Z = X1 + X2 + X3 | |
N = 10000 | |
X1 = runif(N, 1, 6) | |
X2 = runif(N, 1, 6) | |
X3 = runif(N, 1, 6) | |
Z = X1 + X2 + X3 | |
hist(Z, breaks=seq(2.5,18.5)) | |
grid() | |
############# | |
# Chapter 4.8 | |
## Generating Gaussians from uniform | |
# R code to generate Gaussian from uniform | |
library(HDInterval) | |
mu = 3 | |
sigma = 2 | |
U = runif(10000, 0, 1) | |
gU = sigma * inverseCDF(U, pnorm) + mu; | |
hist(U) | |
grid() | |
hist(gU, col="yellow") | |
grid() | |
## Generating exponential random variables from uniform random nums (not in "code" section, but in textbook p.63) | |
# R code to generate exponential random variables | |
lambda = 1 | |
U = runif(10000, 0, 1) | |
gU = -(1/lambda)*log(1-U) | |
## Plotting PDFs based on transformed vars (not in "code" section, but in textbook p.65) | |
# R code to generate the desired random variables | |
U = runif(10000, 0, 1) | |
gU = rep(0, 10000) | |
gU[U >= 0.0 & U <= 0.1] = 1 | |
gU[U > 0.1 & U <= 0.6] = 2 | |
gU[U > 0.6 & U <= 0.9] = 3 | |
gU[U > 0.9 & U <= 1] = 4 | |
hist(gU) | |
grid() | |
############# |