Tugas STA561 Pertemuan 10

Soal 1

Diketahui pdf (probability density function) dari distirbusi Kumaraswamy adalah sebagai berikut :

\(f(x|a,b) = abx^{a-1}(1-x^{a})^{b-1} \text{ , dimana } x \in (0,1)\)

Jika diketahui \(a=5\) dan \(b=3\)

a. Menghitung Nilai Harapan Secara Manual

Hitunglah \(E(X)\) dengan menggunakan metode Trapezoida untuk \(n=4\), Simpson untuk \(n=4\) dan four-point Gauss Quadrature secara manual :

\(E(X) = \int_{0}^{1}15x^{5}(1-x^{5})^{2}dx\)

dimana, \(f(x) = 15x^{5}(1-x^{5})^{2}\)

Metode Trapezoida

Dengan \(n=4\) maka :

\(E(X) = \frac{h}{2}(f(x_{0})+2f(x_{1})+2f(x_{2})+2f(x_{3})+f(x_{4})) \text{ , dengan } X=0, 0.25, 0.5, 0.75, 1\)

\[\begin{align} h &= \frac{x_{n}-x_{0}}{n}=\frac{1-0}{4}=0.25 \\ f(x_{0}) &= 15(0)^{5}(1-(0)^{5})^{2}=0 \\ f(x_{1}) &= 15(0.25)^{5}(1-(0.25)^{5})^{2}=0.01461984 \\ f(x_{2}) &= 15(0.5)^{5}(1-(0.5)^{5})^{2}=0.4399109 \\ f(x_{3}) &= 15(0.75)^{5}(1-(0.75)^{5})^{2}=2.070617 \\ f(x_{4}) &= 15(1)^{5}(1-(1)^{5})^{2}=0 \\ \end{align}\]

\[\begin{equation} \begin{split} E(X) &= \int_{0}^{1}15x^{5}(1-x^{5})^{2} dx \\ &= \frac{h}{2}(f(x_{0})+2f(x_{1})+2f(x_{2})+2f(x_{3})+f(x_{4})) \\ &= \frac{0.25}{2}(0+2(0.01461984)+2(0.4399109)+2(2.070617)+0) \\ & = \frac{0.25}{2}(5.050295) \\ & = 0.6312869 \end{split} \end{equation}\]

Metode Simpson

Dengan \(n=4\) maka :

\(E(X) = \frac{h}{3}(f(x_{0})+4f(x_{1})+2f(x_{2})+4f(x_{3})+f(x_{4})) \text{ , dengan } X=0, 0.25, 0.5, 0.75, 1\)

\[\begin{align} h &= \frac{x_{n}-x_{0}}{n}=\frac{1-0}{4}=0.25 \\ f(x_{0}) &= 15(0)^{5}(1-(0)^{5})^{2}=0 \\ f(x_{1}) &= 15(0.25)^{5}(1-(0.25)^{5})^{2}=0.01461984 \\ f(x_{2}) &= 15(0.5)^{5}(1-(0.5)^{5})^{2}=0.4399109 \\ f(x_{3}) &= 15(0.75)^{5}(1-(0.75)^{5})^{2}=2.070617 \\ f(x_{4}) &= 15(1)^{5}(1-(1)^{5})^{2}=0 \\ \end{align}\]

\[\begin{equation} \begin{split} E(X) &= \int_{0}^{1}15x^{5}(1-x^{5})^{2} dx \\ &= \frac{h}{3}(f(x_{0})+4f(x_{1})+2f(x_{2})+4f(x_{3})+f(x_{4})) \\ &= \frac{0.25}{3}(0+4(0.01461984)+2(0.4399109)+4(2.070617)+0) \\ & = \frac{0.25}{3}(9.220768) \\ & = 0.7683974 \end{split} \end{equation}\]

Metode Gauss Quadrature

\(\int_{a}^{b}f(x)dx = \int_{-1}^{1} f(\frac{b-a}{2}\xi+\frac{a+b}{2})\frac{dx}{d\xi} d\xi\)

\(\text{dengan }\frac{dx}{d\xi} = \frac{b-a}{2}\)

Pendekatan Gauss Quadrature dengan \(n\) point :

\(\int_{a}^{b}f(x)dx = \frac{b-a}{2} \sum_{i=1}^{n} w_{i} f(\frac{b-a}{2}\xi_{i}+\frac{a+b}{2})\)

Pada metode ini akan digunakan four-point Gauss Quadrature, berikut nilai \(\xi_{i}\) dan \(w_{i}\) untuk \(n=4\) :

\[\begin{align} \xi_{1}&=-\sqrt{\frac{3}{7}-\frac{2}{7}\sqrt{\frac{6}{7}}} = -0.339981 & w_{1} &=\frac{18+\sqrt{30}}{36} = 0.6521452 \\ \xi_{2}&=\sqrt{\frac{3}{7}-\frac{2}{7}\sqrt{\frac{6}{7}}} = 0.339981 & w_{2} &=\frac{18+\sqrt{30}}{36} = 0.6521452 \\ \xi_{3}&=-\sqrt{\frac{3}{7}+\frac{2}{7}\sqrt{\frac{6}{7}}} = -0.8611363 & w_{3} &=\frac{18-\sqrt{30}}{36} = 0.3478548 \\ \xi_{4}&=\sqrt{\frac{3}{7}+\frac{2}{7}\sqrt{\frac{6}{7}}} = 0.8611363 & w_{4} &=\frac{18-\sqrt{30}}{36} = 0.3478548 \end{align}\]

\[\begin{equation} \begin{split} E(X) &= \int_{0}^{1}15x^{5}(1-x^{5})^{2} dx \\ &= \frac{b-a}{2}(w_{1}f(\frac{b-a}{2}\xi_{1}+\frac{a+b}{2})+w_{2}f(\frac{b-a}{2}\xi_{2}+\frac{a+b}{2})+w_{3}f(\frac{b-a}{2}\xi_{3}+\frac{a+b}{2})+w_{4}f(\frac{b-a}{2}\xi_{4}+\frac{a+b}{2})) \\ &= \frac{1-0}{2}(w_{1}f(\frac{1-0}{2}\xi_{1}+\frac{0+1}{2})+w_{2}f(\frac{1-0}{2}\xi_{2}+\frac{0+1}{2})+w_{3}f(\frac{1-0}{2}\xi_{3}+\frac{0+1}{2})+w_{4}f(\frac{1-0}{2}\xi_{4}+\frac{0+1}{2})) \\ &= \frac{1}{2}(w_{1}f(\frac{1}{2}\xi_{1}+\frac{1}{2})+w_{2}f(\frac{1}{2}\xi_{2}+\frac{1}{2})+w_{3}f(\frac{1}{2}\xi_{3}+\frac{1}{2})+w_{4}f(\frac{1}{2}\xi_{4}+\frac{1}{2})) \\ &= \frac{1}{2}(0.6521452f(0.3300095)+0.6521452f(0.6699905)+0.3478548f(0.06943185)+0.3478548f(0.9305682)) \\ &= \frac{1}{2}(0.6521452(0.05825283)+0.6521452(1.515178)+0.3478548(0.000024)+0.3478548(0.9558169)) \\ &= \frac{1}{2}(1.358599) \\ & = 0.6792997 \end{split} \end{equation}\]

b. Menghitung Nilai Harapan dengan Fungsi di R

Jika diketahui nilai exact dari \(E(X)=\frac{b\Gamma(1+\frac{1}{a})\Gamma(b)}{\Gamma(1+\frac{1}{a}+b)}\) , metode mana yang paling mendekati untuk menghitung nilai \(E(X)\) dengan toleransi 0.0001?

Menghitung nilai exact :

a <- 5
b <- 3
exact_value=(b*gamma(1+(1/a))*gamma(b))/(gamma(1+(1/a)+b))
exact_value
## [1] 0.7102273

Fungsi \(E(X)\) buatan pengguna pada R :

f <- function(x){15*(x^5)*((1-(x^5))^2)}

Metode Trapezoida

trapezoid <- function(ftn, a, b, n = 100) {
     h <- (b-a)/n
     x.vec <- seq(a, b, by = h)
     f.vec <- sapply(x.vec, ftn)     # ftn(x.vec)
     Trap <- h*(f.vec[1]/2 + sum(f.vec[2:n]) + f.vec[n+1]/2)
     return(Trap)
}


tol <-  0.0001
err <- 1
n = 2


while(err>tol){
  res_trap <- trapezoid(f,0,1,n = n)
  
  err <- abs(res_trap-exact_value)
  
  #cat("n=",n,", result=",res_trap,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}

n_trap <- n
err_trap <- err
res_trap
## [1] 0.7101278

Metode Simpson

simpson_n <- function(ftn, a, b, n = 100) {
    n <- max(c(2*(n %/% 2), 4))
    h <- (b-a)/n
    x.vec1 <- seq(a+h, b-h, by = 2*h)       # ganjil
    x.vec2 <- seq(a+2*h, b-2*h, by = 2*h)   # genap
    f.vec1 <- sapply(x.vec1, ftn)   # ganjil
    f.vec2 <- sapply(x.vec2, ftn)   # genap
    S <- h/3*(ftn(a) + ftn(b) + 4*sum(f.vec1) + 2*sum(f.vec2))
    return(S)
}

tol <-  0.0001
err <- 1
n <- 2
f <- function(x){15*(x^5)*((1-(x^5))^2)}

while(err>tol){
  res_simp <- simpson_n(f,0,1,n = n)
  
  err <- abs(res_simp-exact_value)
  
  #cat("n=",n,", result=",res_simp,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}

n_simp <- n
err_simp <- err
res_simp
## [1] 0.7103096

Metode Gauss Quadrature

library(polynom) 
library(orthopolynom)
library(gaussquad)
library(pracma)
## 
## Attaching package: 'pracma'
## The following object is masked from 'package:polynom':
## 
##     integral
f <- function(x){15*(x^5)*((1-(x^5))^2)}

tol <-  0.0001
err <- 1
n <- 2

while(err>tol){
  
  gL <- gaussLegendre(n = n,a=0,b=1)

 Ci <- gL$w # koefisien
 xi <- gL$x # gauss point
  
  res_gl <- sum(Ci * f(xi))

  err <- abs(res_gl-exact_value)
  
  #cat("n=",n,", result=",res_gl,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}

n_gl <- n
err_gl <- err
res_gl
## [1] 0.7101422

Rangkuman Hasil Penghitungan Nilai Harapan

Metode <- c('Trapezoida','Simpson','Gauss Quadrature')
Hasil <- c(res_trap,res_simp,res_gl)
Error <- c(err_trap,err_simp,err_gl)
n <- c(n_trap,n_simp,n_gl)
res_fin <- data.frame(Metode,Hasil,Error,n)
res_fin

Dari perbandingan 3 metode di atas dapat disimpulkan metode Simpson menghasilkan error yang paling kecil.

Soal 2

Diketahui pdf (probability density function) dari distirbusi Eksponensial adalah sebagai berikut :

\(f(x|a,b) = \lambda e^{-\lambda x} \text{ , dimana } x \in (0,\infty)\)

Jika diketahui \(\lambda=2\), hitunglah CDF dari distribusi exponensial tersebut untuk \(x=4\), dengan menggunakan metode Trapezoida, Simpson, Gauss Quadrature dan Monte Carlo. Metode mana yang paling baik.

PDF dengan \(\lambda=2\) :

\(f(x) = 2 e^{-2x} \text{ , dimana } x \in (0,\infty)\)

CDF untuk \(x=4\) :

\(P(X \le 4) = \int_{0}^{4}2e^{-2x}dx\)

Fungsi PDF buatan pengguna pada R :

ftn2 <- function(x){2*exp(-2*x)}

Menghitung nilai exact dengan fungsi pexp :

exact_value2 <- pexp(4,2)
exact_value2
## [1] 0.9996645

Metode Trapezoida

tol <-  0.000001
err <- 1
n <- 2
a2 <- 0
b2 <- 4

while(err>tol){
  res_trap <- trapezoid(ftn2,a2,b2,n = n)
  
  err <- abs(res_trap-exact_value2)
  
  #cat("n=",n,", result=",res_trap,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==5000){
    break
  }
  
}

res_trap2 <- res_trap
n_trap2 <- n
err_trap2 <- err
res_trap2
## [1] 0.9996655

Metode Simpson

tol <-  0.000001
err <- 1
n <- 2

while(err>tol){
  res_simp <- simpson_n(ftn2,a2,b2,n = n)
  
  err <- abs(res_simp-exact_value2)
  
  #cat("n=",n,", result=",res_simp,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}

res_simp2 <- res_simp
n_simp2 <- n
err_simp2 <- err
res_simp2
## [1] 0.9996655

Metode Gauss Quadrature

library(polynom) 
library(orthopolynom)
library(gaussquad)
library(pracma)

GaussLegendre_integral <- function(ftn,a,b,n) {
  gL <- gaussLegendre(n = n,a=a2,b=b2)
  Ci <- gL$w # koefisien
  xi <- gL$x # gauss point
  res_gl <- sum(Ci * ftn(xi))
  return(res_gl)
}
tol <-  0.000001
err <- 1
n <- 2
while(err>tol){
  res_gl <- GaussLegendre_integral(ftn2,a=a2,b=b2,n = n)
  err <- abs(res_gl-exact_value2)
  
  #cat("n=",n,", result=",res_gl,", error=",err,"\n",sep = "")
  
  n=n+1
  if(n==1000){
    break
  }
  
}

res_gl2 <- res_gl
n_gl2 <- n
err_gl2 <- err
res_gl2
## [1] 0.9996645

Metode Monte Carlo :

mc_integral <- function(ftn, a, b,m=1000){
  #Membangkitkan x berdistribusi U(a,b)
  x <- runif(m,a,b)
  # Menghitung rata-rata dari output fungsi
  Gx <- ftn(x)
  Gx_m <- mean(Gx)
  theta.hat <- (b-a)*Gx_m
  return(theta.hat)
}
tol <-  0.000001
err <- 1
m <- 100000

while(err>tol){
  res_mc <- mc_integral(ftn2,a2,b2,m)
  
  err <- abs(res_mc-exact_value2)
  
  #cat("n=",n,", result=",res_simp,", error=",err,"\n",sep = "")
  
  m=m+100000
  if(m==10000000){
    break
  }
  
}

res_mc2 <- res_mc
m_mc2 <- m
err_mc2 <- err
res_mc2
## [1] 1.00015

Rangkuman Hasil Penghitungan CDF

Metode <- c('Trapezoida','Simpson','Gauss Quadrature','Monte Carlo')
Hasil <- c(res_trap2,res_simp2,res_gl2,res_mc2)
Error <- c(err_trap2,err_simp2,err_gl2,err_mc2)
Parameter <- c(n_trap2,n_simp2,n_gl2,m_mc2)
res_fin2 <- data.frame(Metode,Hasil,Error,Parameter)
res_fin2

Dari hasil simulasi dengan berbagai n dan m, maka dengan nilai toleransi sebesar \(0.000001\) metode yang paling mendekati nilai CDF sebenernya adalah Gauss Quadrature dengan parameter \(n=8\) karena memiliki error yang paling kecil.

Membandingkan kecepatan pemrosesan setiap metode dengan fungsi microbenchmark dari package microbenchmark :

library(microbenchmark)
speed_test <- microbenchmark(
  trapezoid(ftn2,a2,b2,n = 2311),
  simpson_n(ftn2,a2,b2,n = 71),
  GaussLegendre_integral(ftn2,a=a2,b=b2,n = 8),
  mc_integral(ftn2,a2,b2,10000),
  times = 100 # 100 kali ulangan 
)
ggplot2::autoplot(speed_test)
## Coordinate system already present. Adding new coordinate system, which will replace the existing one.

Secara kecapatan pemrosesan metode Simpson merupakan yang paling cepat, sementara metode Gauss Quadrature sedikit lebih lambat dari metode Simpson. Dari nilai error dan kecepatan pemrosesan dapat disimpulkan bahwa metode Gauss Quadrature adalah yang terbaik, karena memiliki error paling kecil dan kecepatan pemrosesan yang cepat.