Pendahuluan

Bootstrap adalah metode resampling dengan pengembalian (replacement) yang digunakan untuk mengukur ketidakpastian estimasi statistik tanpa asumsi distribusi tertentu (Efron & Tibshirani, 1993). Pembelajaran ini mencakup pembangkitan data, proses bootstrap, dan visualisasi hasilnya.


Persiapan Data

# Membuat distribusi normal acak sebagai data awal
set.seed(300)
myData <- rnorm(2000, 20, 4.5)

# Sanity check
length(myData)
## [1] 2000
mean(myData)
## [1] 20.25773
sd(myData)
## [1] 4.590852
# Visualisasi distribusi myData
hist(myData,
     breaks = 30,
     col    = "lightblue",
     main   = "Distribusi myData",
     xlab   = "Nilai",
     ylab   = "Frekuensi")
abline(v = mean(myData), col = "red", lwd = 2, lty = 2)
legend("topright",
       legend = paste("Mean =", round(mean(myData), 5)),
       col = "red", lty = 2, lwd = 2)


Latihan 1 — Bootstrap dari Data yang Ada

Tugas: Tetapkan set.seed(150), bangkitkan distribusi normal 1000 observasi dengan mean = 30 dan SD = 2,5. Hitung mean dari 50 sampel bootstrap.

# Membangkitkan data
set.seed(150)
myData_lat1 <- rnorm(1000, mean = 30, sd = 2.5)

# Sanity check
length(myData_lat1)
## [1] 1000
mean(myData_lat1)
## [1] 29.92068
sd(myData_lat1)
## [1] 2.475175
# Bootstrap: hitung mean dari 50 sampel
set.seed(150)
sample.size     <- 1000
n.samples       <- 50
bootstrap_lat1  <- c()

for (i in 1:n.samples) {
  obs              <- sample(1:sample.size, replace = TRUE)
  bootstrap_lat1[i] <- mean(myData_lat1[obs])
}

# Hasil bootstrap
length(bootstrap_lat1)
## [1] 50
summary(bootstrap_lat1)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   29.73   29.89   29.92   29.93   29.98   30.08
sd(bootstrap_lat1)
## [1] 0.07028105

Interpretasi: Standar deviasi dari distribusi mean bootstrap mengukur standard error estimasi. Nilai yang kecil menunjukkan estimasi mean yang stabil dan konsisten.


Latihan 2 — Visualisasi Hasil Bootstrap

Tugas: Tampilkan dua histogram — distribusi mean bootstrap (Latihan 1) dan distribusi data asli — dalam satu grafik gabungan.

# Dua histogram dalam satu grafik
par(mfrow = c(2, 1))

hist(bootstrap_lat1,
     col  = "#d83737",
     xlab = "Mean",
     main = "Distribusi Mean dari 50 Sampel Bootstrap")

hist(myData_lat1,
     col  = "#37aad8",
     xlab = "Nilai",
     main = "Distribusi Data Asli (n = 1000, mean = 30, sd = 2,5)")

par(mfrow = c(1, 1)) # Reset layout

Interpretasi: Histogram atas menunjukkan distribusi mean bootstrap yang jauh lebih sempit dibanding distribusi data asli di bawahnya. Hal ini mencerminkan prinsip Teorema Limit Pusat — rata-rata sampel berdistribusi normal dengan variabilitas lebih kecil dari data aslinya.


Perbandingan Dua Pendekatan Bootstrap

Materi Week 6 memperkenalkan dua cara bootstrap yang berbeda:

# Pendekatan 1: Resampling dari data yang sudah ada
set.seed(200)
sample.size     <- 2000
n.samples       <- 1000
bootstrap_A     <- c()

for (i in 1:n.samples) {
  obs           <- sample(1:sample.size, replace = TRUE)
  bootstrap_A[i] <- mean(myData[obs])
}

# Pendekatan 2: Resampling dari proses pembangkitan data (DGP)
set.seed(200)
bootstrap_B <- c()

for (i in 1:n.samples) {
  bootstrap_B[i] <- mean(rnorm(2000, 20, 4.5))
}

# Perbandingan hasil
cat("SD Bootstrap Pendekatan 1 (dari data):", round(sd(bootstrap_A), 7), "\n")
## SD Bootstrap Pendekatan 1 (dari data): 0.1021229
cat("SD Bootstrap Pendekatan 2 (dari DGP) :", round(sd(bootstrap_B), 7), "\n")
## SD Bootstrap Pendekatan 2 (dari DGP) : 0.1041927
# Visualisasi perbandingan
par(mfrow = c(2, 1))

hist(bootstrap_A,
     col  = "#d83737",
     xlab = "Mean",
     main = "Pendekatan 1: Mean dari 1000 Sampel Bootstrap (dari myData)")

hist(bootstrap_B,
     col  = "#8B0000",
     xlab = "Mean",
     main = "Pendekatan 2: Mean dari 1000 Sampel Bootstrap (dari DGP)")

par(mfrow = c(1, 1))

Interpretasi: Kedua pendekatan menghasilkan SD yang sangat mirip (~0,10), menunjukkan bahwa resampling dari data yang ada dan dari proses pembangkitan asli memberikan estimasi ketidakpastian yang setara ketika ukuran sampel cukup besar.


Kesimpulan

Metode bootstrap memungkinkan estimasi ketidakpastian secara komputasional tanpa bergantung pada asumsi distribusi. Tiga hal utama yang dipelajari:

  1. Pembangkitan data dengan rnorm() dan pengecekan dengan length(), mean(), sd()
  2. Proses bootstrap menggunakan for loop dan sample(..., replace=TRUE)
  3. Visualisasi distribusi bootstrap vs data asli menggunakan hist() dan par()

Standar deviasi dari distribusi bootstrap (bootstrap standard error) merupakan ukuran kuantitatif ketidakpastian estimasi yang dihasilkan.


Referensi

Efron, B. & Tibshirani, R.J. (1993). An Introduction to the Bootstrap. Chapman & Hall/CRC.

Wickham, H. & Grolemund, G. (2017). R for Data Science. O’Reilly Media. https://r4ds.had.co.nz