Bangkitkan bilangan acak yang berdistribusi exponential (3) dengan Inverse Transform Method, yang amatannya berjumlah 1000. Bandingkan hasilnya dengan fungsi bawaan R rexp dengan menggunakan histrogram.
# banyaknya amatan
n <- 1000
# membangkitan U(0,1)
u <- runif(n)
Dapatkan bilangan acak x dengan menghitung F^-1 (u) {r echo=FALSE} # fungsi inverse CDF set.seed(10) # membuat seed x <- -(log(1-u)/3) #log merupakan ln di R head(x)
Memeriksa banyak amatan {r echo=FALSE} # memeriksa banyaknya amatan length(x)
Membangkitkan dengan fungsi bawaan R {r echo=FALSE} set.seed(10) # membuat seed y <- rexp(n,rate = 3) head(y)
{r echo=FALSE} # memeriksa banyaknya amatan length(y)
{r echo=FALSE} par(mfrow=c(1,2)) hist(x,main=“Exp dari Inverse Transform”) hist(y,main=“Exp dari fungsi rexp”)
Bangkitkan peubah acak Y ~ Beta(2,2) yang memiliki fungsi PDF f(x) = 6x(1-x), 0<x<1 dengan menggunakan Acceptance-Rejection Method sebanyak 1000 amatan. Kemudian gambarkan histogramnya!
Tetapkan peubah acak dari X sebagai target sebaran beserta PDFnya g(y)=1,0<=y<=1
Bangkitkan peubah acak Y {r echo=FALSE} # banyaknya amatan n=1000 set.seed(10) y = runif(n,0,1)
Bangkitkan u berdasarkan distribusi Uniform(0,1) {r echo=FALSE} set.seed(30) u = runif(n,0,1)
Hitung nilai c dengan mencari maksimum dari f(y)/g(y) dan didapatkan nilai C = 1.5 {r echo=FALSE} h <- function(y) 6y(1-y) derivH <- optimize(f=h,interval=c(0,1),maximum=T) derivH$objective
Jika u <= f(y)/g(y), jadikan Y sebagai X {r echo=FALSE} f <- function(y) 6y(1-y) g <- function(y) 1 nilaic <- derivH$objective #kriteria penerimaan criteria <- u < f(y)/(nilaic*g(y)) head(criteria)
{r echo=FALSE} #jadikan Y sebagai X x <- y[criteria] head(x)
banyaknya amatan {r echo=FALSE} length(x)
{r echo=FALSE} z <- rbeta(n,shape1 = 2,shape2 = 2) par(mfrow=c(1,2)) hist(x,main=“beta(2,2) dari AR”) hist(z,main=“beta(2,2) dari rbeta”)
Bangkitkan peubah acak X ~ Gamma(3/2, 1) yang memiliki fungsi PDF f(x) = 1/r(3/2) x^1/2 e^-x, 0<x<~ dengan menggunakan Acceptance-Rejection Method sebanyak 1000 amatan. Kemudian gambarkan histogramnya!
Tetapkan peubah acak dari Y sebagai target sebaran beserta PDFnya g(y). Didapatkan g(y) = 2/3e^(-2/3y), 0<=y<=~
Bangkitkan peubah acak Y tersebut {r echo=FALSE} # banyaknya amatan n=1500 set.seed(10) y = rexp(n,rate = 2/3)
Bangkitkan u berdasarkan distribusi Uniform(0,1) {r echo=FALSE} set.seed(30) u = runif(n,0,1)
Hitung nilai c dengan mencari nilai maksimum dari f(y)/g(y) {r echo=FALSE} h <- function(y) (-1) * (3/(2gamma(3/2))) (y)^(1/2) * exp(-y/3) derivH <- optim(par = 0,fn=h,lower = 0,method = “L-BFGS-B”) derivH$value
Jika u <= f(y)/cg(y), jadikan Y sebagai X {r echo=FALSE} f <- function(y) (3/(2gamma(3/2))) (y)^(1/2) * exp(-y) g <- function(y) (2/3) * exp(-(2/3) * y) nilaic <- -derivH$value #jangan lupa tambahkan negatif #kriteria penerimaan criteria <- u < f(y)/(nilaic*g(y)) head(criteria)
{r echo=FALSE} x <- y[criteria] head(x)
{r echo=FALSE} #karena >1000 ambil 1000 saja x <- x[1:1000]
{r echo=FALSE} z <- rgamma(n,shape = 3/2,scale = 1) par(mfrow=c(1,2)) hist(x,main=“gamma(3/2,1) dari AR”) hist(z,main=“beta(3/2,1) dari rgamma”)
Bangkitkan peubah acak X~t(2) sebanyak 1000 amatan yang didapatkan dari hasil transformasi langsung peubah acak Y~x^2(2) dan Z~N(0,1). Buatlah histogramnya dan bandingkan hasilnya dengan hasil bangkitan yang diperoleh dari fungsi rt.
x <- z/sqrt(y/2) head(x)
Bangkitkan peubah Y, X1, X2, dan X3 berdasarkan model regresi linear berganda berikut ini: Y=10+3X1+5X2+7X3+E dengan mengasumsikan bahwa E N(0,1). Banyaknya amatan yang dibangkitkan adalah 1000
Bangkitkan residual berdasarkan distribusi normal E~N(0,sigma) {r echo=FALSE} #banyaknya amatan n <- 1000 set.seed(12) epsilon <- rnorm(n,mean = 0,sd = 1)
Bangkitkan peubah penjelas Xi yang saling bebas {r echo=FALSE} set.seed(10) X <- replicate(3,rnorm(n,mean=0,sd=1.5)) head(X)
Bangkitkan peubah respon Y dengan menggunakan model regresi {r echo=FALSE} betas <- matrix(c(10,3,5,7),nrow = 4,ncol = 1) Xgab <- cbind(1,X)
Y <- Xgab%*%betas+epsilon
dataRegresi <- data.frame(Y,X) colnames(dataRegresi) <- c(“Y”,“X1”,“X2”,“X3”) head(dataRegresi)