Teknik Bootstrap:
Resampling untuk Inferensi Statistik
1. Apa Itu Teknik Bootstrap?
Teknik Bootstrap diperkenalkan oleh Bradley Efron pada tahun 1979 sebagai metode resampling berbasis komputer untuk mengestimasi distribusi sampling suatu statistik. Ide dasarnya sederhana namun revolusioner: gunakan data yang tersedia sebagai "populasi tiruan" dan lakukan pengambilan sampel berulang kali dengan pengembalian (sampling with replacement) untuk membangun distribusi empiris dari statistik yang diminati.
Metode ini sangat berguna ketika:
2. Algoritma Bootstrap
Secara formal, prosedur Bootstrap Non-Parametrik dapat dituliskan sebagai berikut:
dimana g(·) adalah statistik yang diminati (mean, median, variansi, korelasi, dsb.) dan B adalah jumlah replikasi bootstrap (umumnya B ≥ 1.000, direkomendasikan B = 10.000 untuk interval kepercayaan).
3. Metode Interval Kepercayaan Bootstrap
Ada beberapa metode konstruksi interval kepercayaan bootstrap yang umum digunakan:
4. Implementasi dengan R
Kita akan menggunakan dataset mtcars yang sudah tersedia secara bawaan di R. Dataset ini memuat data performa 32 model mobil tahun 1973–1974. Kita akan mengestimasi koefisien korelasi antara variabel mpg (miles per gallon) dan wt (berat kendaraan), beserta interval kepercayaannya.
boot sudah termasuk dalam distribusi R standar (base), namun perlu di-load secara manual menggunakan library(boot).
4.1 Eksplorasi Data Awal
# ───────────────────────────────────────────── # Bootstrap: Eksplorasi Data mtcars # ───────────────────────────────────────────── # Memuat data dan melihat struktur data("mtcars") str(mtcars) # Statistik deskriptif variabel yang diminati cat("\n=== Ringkasan Variabel ===\n") cat("MPG - Mean:", round(mean(mtcars$mpg), 3), " | SD:", round(sd(mtcars$mpg), 3), "\n") cat("WT - Mean:", round(mean(mtcars$wt), 3), " | SD:", round(sd(mtcars$wt), 3), "\n") # Korelasi Pearson pada sampel asli r_obs <- cor(mtcars$mpg, mtcars$wt) cat("\nKorelasi Pearson (sampel asli):", round(r_obs, 4), "\n") # Uji korelasi klasik (sebagai pembanding) cor.test(mtcars$mpg, mtcars$wt)
4.2 Bootstrap Manual (Dari Nol)
Memahami mekanisme Bootstrap dari implementasi dasar sebelum menggunakan fungsi bawaan:
# ───────────────────────────────────────────── # Bootstrap Manual: Distribusi Korelasi mpg~wt # ───────────────────────────────────────────── set.seed(42) # reprodusibilitas B <- 10000 # jumlah replikasi bootstrap n <- nrow(mtcars) # ukuran sampel # Vektor untuk menyimpan statistik bootstrap r_boot <- numeric(B) # Loop bootstrap for (b in 1:B) { # Ambil indeks bootstrap dengan replacement idx <- sample(1:n, size = n, replace = TRUE) data_b <- mtcars[idx, ] # Hitung korelasi pada sampel bootstrap ke-b r_boot[b] <- cor(data_b$mpg, data_b$wt) } # ── Ringkasan Distribusi Bootstrap ── cat("=== Hasil Bootstrap (B = 10.000) ===\n") cat("Estimasi asli (r) :", round(r_obs, 4), "\n") cat("Rata-rata bootstrap :", round(mean(r_boot), 4), "\n") cat("Bootstrap SE :", round(sd(r_boot), 4), "\n") cat("Bootstrap Bias :", round(mean(r_boot) - r_obs, 4), "\n") # ── Interval Kepercayaan Percentile 95% ── ci_pct <- quantile(r_boot, c(0.025, 0.975)) cat("\n95% CI (Percentile) : [", round(ci_pct[1], 4), ",", round(ci_pct[2], 4), "]\n") # ── Interval Basic (Pivotal) ── ci_bas <- c(2*r_obs - ci_pct[2], 2*r_obs - ci_pct[1]) cat("95% CI (Basic) : [", round(ci_bas[1], 4), ",", round(ci_bas[2], 4), "]\n")
4.3 Bootstrap dengan Paket boot
Paket boot menyediakan implementasi yang lebih lengkap dan efisien, termasuk metode BCa yang lebih akurat:
# ───────────────────────────────────────────── # Bootstrap menggunakan paket {boot} # ───────────────────────────────────────────── library(boot) # Definisikan fungsi statistik # data: dataset; i: indeks bootstrap fn_cor <- function(data, i) { d <- data[i, ] cor(d$mpg, d$wt) } # Jalankan bootstrap set.seed(42) boot_res <- boot( data = mtcars, statistic = fn_cor, R = 10000 ) # Tampilkan ringkasan print(boot_res) # Interval kepercayaan semua metode sekaligus cat("\n=== Interval Kepercayaan 95% ===\n") boot_ci <- boot.ci(boot_res, type = c("norm", "perc", "basic", "bca")) print(boot_ci) # Visualisasi distribusi bootstrap plot(boot_res, main = "Distribusi Bootstrap Korelasi MPG ~ WT")
4.4 Bootstrap pada Regresi Linear
Bootstrap sangat berguna untuk mendapatkan standard error dan interval kepercayaan koefisien regresi tanpa bergantung pada asumsi normalitas residual:
# ───────────────────────────────────────────── # Bootstrap: Koefisien Regresi mpg ~ wt + hp # ───────────────────────────────────────────── library(boot) # Model regresi OLS awal model_ols <- lm(mpg ~ wt + hp, data = mtcars) cat("=== Estimasi OLS (klasik) ===\n") print(coef(summary(model_ols))) # Fungsi statistik: ekstrak koefisien regresi fn_lm <- function(data, i) { d <- data[i, ] fit <- lm(mpg ~ wt + hp, data = d) coef(fit) } # Jalankan bootstrap set.seed(2024) boot_lm <- boot( data = mtcars, statistic = fn_lm, R = 10000 ) # Ringkasan Bootstrap SE vs OLS SE cat("\n=== Perbandingan Standard Error ===\n") se_ols <- coef(summary(model_ols))[, "Std. Error"] se_boot <- apply(boot_lm$t, 2, sd) hasil <- data.frame( Koefisien = names(se_ols), Estimasi = round(coef(model_ols), 4), SE_OLS = round(se_ols, 4), SE_Boot = round(se_boot, 4) ) print(hasil, row.names = FALSE) # CI Bootstrap BCa untuk koefisien wt (indeks 2) cat("\n95% CI BCa untuk β_wt:\n") print(boot.ci(boot_lm, type = "bca", index = 2))
5. Interpretasi Hasil
6. Memilih Jumlah Replikasi B
Pertanyaan praktis yang sering muncul: berapa nilai B yang cukup?
| Tujuan | B yang Disarankan | Alasan |
|---|---|---|
| Estimasi SE | B ≥ 200 | Stabilisasi SE memerlukan replikasi minimal |
| CI Percentile | B ≥ 1.000 | Perlu ekor distribusi yang terisi |
| CI BCa | B ≥ 2.000 (disarankan 10.000) | Estimasi akselerasi sensitif terhadap B kecil |
| Publikasi ilmiah | B = 10.000 atau lebih | Reprodusibilitas & presisi laporan |
parallel = "multicore" dan ncpus = parallel::detectCores() - 1 dalam fungsi boot().
6.1 Bootstrap dengan Paralelisasi
# Bootstrap paralel (untuk dataset besar) library(boot) library(parallel) n_cores <- detectCores() - 1 cat("Core tersedia:", n_cores, "\n") set.seed(42) boot_par <- boot( data = mtcars, statistic = fn_cor, R = 10000, parallel = "multicore", # "snow" untuk Windows ncpus = n_cores ) print(boot_par)
7. Ringkasan
- Bootstrap adalah teknik resampling non-parametrik yang mengestimasi distribusi sampling suatu statistik melalui pengulangan pengambilan sampel dengan pengembalian.
- Tidak memerlukan asumsi distribusi parametrik — sangat berguna untuk statistik kompleks dan sampel kecil.
- Interval BCa umumnya paling akurat karena mengoreksi bias dan kemiringan distribusi bootstrap.
- Paket
bootdi R menyediakan implementasi yang efisien, fleksibel, dan siap untuk keperluan akademik maupun industri. - Jumlah replikasi B = 10.000 direkomendasikan untuk keperluan pelaporan ilmiah.
Referensi
Efron, B. (1979). Bootstrap methods: Another look at the jackknife. The Annals of Statistics, 7(1), 1–26.
Efron, B., & Tibshirani, R. J. (1993). An Introduction to the Bootstrap. Chapman & Hall/CRC.
Davison, A. C., & Hinkley, D. V. (1997). Bootstrap Methods and Their Application. Cambridge University Press.
Canty, A., & Ripley, B. (2024). boot: Bootstrap R (S-Plus) Functions. R package version 1.3-30.
0 Response to "Tutorial R : Teknik Bootstrap dalam Statistika"
Post a Comment