UAS MSR: Simulasi Monte Carlo dan Resampling Bootstrap

Nomer 1 Simulasi Monte Carlo

Data awal

impresi_A <- 100000
klik_A <- 2500
impresi_B <- 80000
klik_B <- 2000

Hitung CTR aktual

ctr_A <- klik_A / impresi_A
ctr_B <- klik_B / impresi_B

Gabungkan data

total_klik <- klik_A + klik_B
total_impresi <- impresi_A + impresi_B
ctr_gabungan <- total_klik / total_impresi

Hitung Standar Error

SE <- sqrt(ctr_gabungan * (1 - ctr_gabungan) * (1/impresi_A + 1/impresi_B))

Hitung Statistik Uji (Z)

Z <- (ctr_A - ctr_B) / SE

Cari Nilai P (P-value)

p_value <- 2 * (1 -pnorm(abs(Z)))

Hasil Manual

cat("Proporsi klik untuk Iklan A (ctr_A):", ctr_A, "\n")
## Proporsi klik untuk Iklan A (ctr_A): 0.025
cat("Proporsi klik untuk Iklan B (ctr_B):", ctr_B, "\n")
## Proporsi klik untuk Iklan B (ctr_B): 0.025
cat("Proporsi gabungan (ctr_gabungan):", ctr_gabungan, "\n")
## Proporsi gabungan (ctr_gabungan): 0.025
cat("Standar error (SE):", SE, "\n")
## Standar error (SE): 0.0007405657
cat("Statistik uji Z / Perbedaan observasi:", Z, "\n")
## Statistik uji Z / Perbedaan observasi: 0
cat("P-value:",p_value,"\n")
## P-value: 1

Hasil fungsi Prop test

prop.test(x = c(klik_A, klik_B), n = c(impresi_A,impresi_B))
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(klik_A, klik_B) out of c(impresi_A, impresi_B)
## X-squared = 0, df = 1, p-value = 1
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.001451482  0.001451482
## sample estimates:
## prop 1 prop 2 
##  0.025  0.025

Dari hasil tersebut, didapatkan statistik uji Z atau perbedaan observasi sebesar 0, yang artinya tidak ada perbedaan antara proporsi klik iklan A dan B yang diamati dari data sampel. Hal ini diperkuat dengan p-value bernilai 1 (sangat besar) yang menunjukkan bahwa tak tolak H_0 atau tidak ada bukti yang kuat signifikan untuk menolak hipotesis nol (H_0) pada taraf nyata 5%, artinya proporsi klik untuk kedua iklan adalah sama.

Nomer 2 Resampling Bootstrap

Data

impresi_A <- 100000
impresi_B <- 80000
klik_A <- 2500
klik_B <- 2000

Menghitung proporsi awal

proporsi_A <- klik_A / impresi_A
proporsi_B <- klik_B / impresi_B

Fungsi untuk menghitung perbedaan proporsi pada sampel bootstrap

bootstrap_beda <- function(data_A, data_B) {
  idx_A <- sample(1:length(data_A), length(data_A), replace = TRUE)
  idx_B <- sample(1:length(data_B), length(data_B), replace = TRUE)
  sampel_A <- data_A[idx_A]
  sampel_B <- data_B[idx_B]
  proporsi_A <- sum(sampel_A) / length(sampel_A)
  proporsi_B <- sum(sampel_B) / length(sampel_B)
  return(proporsi_A - proporsi_B)
}

Menyiapkan data

data_A <- c(rep(1, klik_A), rep(0, impresi_A - klik_A))
data_B <- c(rep(1, klik_B), rep(0, impresi_B - klik_B))

Melakukan bootstrap

set.seed(16)  # Untuk reproduktifitas
n_bootstrap <- 10000
bootstrap_bedas <- numeric(n_bootstrap)

for (i in 1:n_bootstrap) {
  bootstrap_bedas[i] <- bootstrap_beda(data_A, data_B)
}

Menghitung selang kepercayaan 95%

alpha <- 0.05
ci_bawah <- quantile(bootstrap_bedas, alpha / 2)
ci_atas <- quantile(bootstrap_bedas, 1 - alpha / 2)

Hasil

cat("Proporsi klik untuk Iklan A:", proporsi_A, "\n")
## Proporsi klik untuk Iklan A: 0.025
cat("Proporsi klik untuk Iklan B:", proporsi_B, "\n")
## Proporsi klik untuk Iklan B: 0.025
cat("Perbedaan proporsi:", proporsi_A - proporsi_B, "\n")
## Perbedaan proporsi: 0
cat("Selang kepercayaan 95% untuk perbedaan proporsi:", ci_bawah, "hingga", ci_atas, "\n")
## Selang kepercayaan 95% untuk perbedaan proporsi: -0.0014625 hingga 0.0014625

Perbedaan proporsi antara iklan A dan iklan B adalah 0. Ini menunjukkan bahwa tidak ada perbedaan dalam rasio klik-impresi antara kedua iklan dari data sampel asli. Sementara itu, selang kepercayaan 95% untuk perbedaan proporsi adalah -0,0014775 hingga 0,0014625. Selang kepercayaan ini mencakup nilai 0, yang berarti pada tingkat kepercayaan 95%, perbedaan proporsi klik antara Iklan A dan Iklan B dapat bernilai nol (tidak ada perbedaan).

Visualisasi Distribusi Sampling

hist(bootstrap_bedas, breaks = 30, main = "Distribusi Sampling dari Perbedaan Proporsi", xlab = "Perbedaan Proporsi")
abline(v = ci_bawah, col = "green", lwd = 2)
abline(v = ci_atas, col = "green", lwd = 2)

Dari histogram tersebut, dapat terlihat bahwa distribusi yang berpusat di sekitar 0 mengindikasikan perbedaan proporsi antara Iklan A dan Iklan B cenderung kecil atau bahkan tidak ada perbedaan. Bentuk simetris distribusi menunjukkan bahwa peluang mendapatkan perbedaan proporsi positif (iklan A lebih baik) atau negatif (iklan B lebih baik) adalah sama. Lalu, selang kepercayaan yang lebar (garis hijau) mengindikasikan ketidakpastian yang cukup besar dalam estimasi perbedaan proporsi antara kedua iklan.

Monte Carlo dan Bootstrap memberikan hasil yang sama, yaitu tidak ada perbedaan dalam rasio klik-impresi antara iklan A dan iklan B. Pendekatan Monte Carlo dan Bootstrap keduanya efektif dalam analisis statistik untuk memahami perbedaan rasio klik-impresi antara dua iklan. Monte Carlo lebih fokus pada pengujian hipotesis, sementara Bootstrap lebih pada pendugaan selang kepercayaan.