Pendahuluan

Bootstrap adalah metode resampling yang mengambil sampel acak dengan pengembalian dari data yang ada, diulang berkali-kali. Tujuannya adalah mengestimasi distribusi sampling dari suatu statistik (seperti mean) tanpa asumsi distribusi tertentu.

Tugas ini terdiri dari dua latihan:


Latihan 1

Membuat Data & Bootstrap

set.seed(150)

# Buat data asli: 1000 observasi normal, mean=30, sd=2.5
myData2 <- rnorm(1000, mean = 30, sd = 2.5)

Sanity Check Data Asli

cat("Jumlah observasi :", length(myData2), "\n")
## Jumlah observasi : 1000
cat("Mean             :", round(mean(myData2), 4), "\n")
## Mean             : 29.9207
cat("Standar Deviasi  :", round(sd(myData2),   4), "\n")
## Standar Deviasi  : 2.4752

Nilai mean mendekati 30 dan SD mendekati 2,5 — sesuai dengan parameter yang dimasukkan ke rnorm(). Perbedaan kecil muncul karena sifat acak dari proses pembangkitan data.

Mengambil 50 Sampel & Menghitung Rata-Rata

n_sampel      <- 50
ukuran_sampel <- length(myData2)
vektor_mean   <- numeric(n_sampel)   # vektor untuk menyimpan hasil

for (i in 1:n_sampel) {
  sampel_i       <- sample(myData2, size = ukuran_sampel, replace = TRUE)
  vektor_mean[i] <- mean(sampel_i)
}

cat("=== Isi Vektor Rata-Rata (50 nilai) ===\n")
## === Isi Vektor Rata-Rata (50 nilai) ===
print(round(vektor_mean, 4))
##  [1] 29.9122 29.9511 29.8895 29.8387 29.8372 29.9644 29.8800 29.9810 29.8836
## [10] 29.8876 29.9222 29.8876 29.9202 29.8849 29.9030 29.9153 29.8711 29.8788
## [19] 30.0219 29.9459 29.9592 29.7464 29.9237 29.9411 29.8353 30.0110 29.9935
## [28] 30.0615 29.9701 29.9234 29.8469 29.9226 29.9114 29.9988 29.9690 29.9060
## [37] 29.8656 29.9739 29.9678 29.9775 29.8780 30.0148 30.1023 29.9179 29.8981
## [46] 29.9912 29.9383 29.8596 29.9018 29.9593

Ringkasan Vektor Rata-Rata

cat("Rata-rata dari 50 mean sampel :", round(mean(vektor_mean), 4), "\n")
## Rata-rata dari 50 mean sampel : 29.9268
cat("SD dari 50 mean sampel        :", round(sd(vektor_mean),   4), "\n")
## SD dari 50 mean sampel        : 0.0634
cat("Min                           :", round(min(vektor_mean),  4), "\n")
## Min                           : 29.7464
cat("Max                           :", round(max(vektor_mean),  4), "\n")
## Max                           : 30.1023

Rata-rata dari 50 nilai rata-rata sampel sangat mendekati mean populasi (30), menunjukkan bahwa bootstrap berhasil mereplikasi distribusi sampling dari mean.


Latihan 2

Visualisasi: Dua Histogram dalam Satu Grafik

par(mfrow = c(1, 2))

# Histogram 1: Distribusi rata-rata dari Latihan 1
hist(vektor_mean,
     breaks = 15,
     col    = "#37aad8",
     border = "white",
     main   = "Distribusi Rata-Rata\n50 Sampel Bootstrap",
     xlab   = "Rata-Rata Sampel",
     ylab   = "Frekuensi")
abline(v  = mean(vektor_mean), col = "red", lwd = 2, lty = 2)
legend("topright",
       legend = paste("Mean =", round(mean(vektor_mean), 2)),
       col = "red", lty = 2, lwd = 2, cex = 0.85)

# Histogram 2: Distribusi data asli
hist(myData2,
     breaks = 30,
     col    = "#f4a261",
     border = "white",
     main   = "Distribusi Data Asli\n(1000 Observasi)",
     xlab   = "Value",
     ylab   = "Frekuensi")
abline(v  = mean(myData2), col = "red", lwd = 2, lty = 2)
legend("topright",
       legend = paste("Mean =", round(mean(myData2), 2)),
       col = "red", lty = 2, lwd = 2, cex = 0.85)

par(mfrow = c(1, 1))

Interpretasi

Perbandingan Dua Histogram

perbandingan <- data.frame(
  Aspek = c("Pusat distribusi (Mean)",
            "Sebaran (SD)",
            "Bentuk"),
  Data_Asli = c(
    round(mean(myData2), 4),
    round(sd(myData2),   4),
    "Normal, lebih lebar"
  ),
  Rata_Rata_Sampel = c(
    round(mean(vektor_mean), 4),
    round(sd(vektor_mean),   4),
    "Normal, jauh lebih sempit"
  )
)

knitr::kable(perbandingan,
             col.names = c("Aspek", "Data Asli (myData2)", "Rata-Rata Sampel Bootstrap"),
             align = "lcc")
Aspek Data Asli (myData2) Rata-Rata Sampel Bootstrap
Pusat distribusi (Mean) 29.9207 29.9268
Sebaran (SD) 2.4752 0.0634
Bentuk Normal, lebih lebar Normal, jauh lebih sempit

Penjelasan Konseptual

Histogram rata-rata sampel (kiri) jauh lebih sempit dibanding histogram data asli (kanan). Fenomena ini dapat dijelaskan melalui rumus Standar Error:

\[SE = \frac{SD}{\sqrt{n}}\]