# LATIHAN 1
# Menetapkan seed
set.seed(150)
# Menghasilkan 1000 observasi berdistribusi normal
data_asli <- rnorm(1000, mean = 30, sd = 2.5)
# Menyimpan rata-rata bootstrap
bootstrap.results <- numeric(50)
# Melakukan bootstrap sebanyak 50 kali
for(i in 1:50){
bootstrap.sample <- sample(data_asli,
size = 1000,
replace = TRUE)
bootstrap.results[i] <- mean(bootstrap.sample)
}
# Menampilkan hasil bootstrap
bootstrap.results
## [1] 29.91217 29.95111 29.88946 29.83869 29.83717 29.96443 29.87997 29.98104
## [9] 29.88365 29.88761 29.92220 29.88761 29.92020 29.88494 29.90298 29.91531
## [17] 29.87105 29.87878 30.02194 29.94590 29.95923 29.74643 29.92373 29.94112
## [25] 29.83525 30.01097 29.99350 30.06145 29.97009 29.92336 29.84687 29.92258
## [33] 29.91140 29.99878 29.96903 29.90596 29.86557 29.97388 29.96784 29.97746
## [41] 29.87797 30.01480 30.10231 29.91795 29.89808 29.99120 29.93832 29.85962
## [49] 29.90181 29.95929
# Sanity Check
cat("10 Nilai Rata-rata Bootstrap Pertama\n")
## 10 Nilai Rata-rata Bootstrap Pertama
head(bootstrap.results, 10)
## [1] 29.91217 29.95111 29.88946 29.83869 29.83717 29.96443 29.87997 29.98104
## [9] 29.88365 29.88761
cat("\nJumlah Hasil Bootstrap\n")
##
## Jumlah Hasil Bootstrap
length(bootstrap.results)
## [1] 50
cat("\nRingkasan Statistik\n")
##
## Ringkasan Statistik
summary(bootstrap.results)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 29.75 29.89 29.92 29.93 29.97 30.10
cat("\nRata-rata Bootstrap\n")
##
## Rata-rata Bootstrap
mean(bootstrap.results)
## [1] 29.92684
cat("\nSimpangan Baku Bootstrap\n")
##
## Simpangan Baku Bootstrap
sd(bootstrap.results)
## [1] 0.06342673
cat("\nVarians Bootstrap\n")
##
## Varians Bootstrap
var(bootstrap.results)
## [1] 0.004022951
cat("\nStruktur Data\n")
##
## Struktur Data
str(bootstrap.results)
## num [1:50] 29.9 30 29.9 29.8 29.8 ...
Pada latihan ini dibangkitkan 1000 observasi yang mengikuti distribusi normal dengan rata-rata 30 dan simpangan baku 2,5 menggunakan fungsi rnorm(). Selanjutnya dilakukan proses bootstrap sebanyak 50 kali dengan teknik sampling with replacement (replace = TRUE). Pada setiap proses bootstrap diambil sampel berukuran 1000 observasi dari data asli, kemudian dihitung rata-ratanya dan disimpan dalam vektor bootstrap.results.
Hasil sanity check menunjukkan bahwa bootstrap.results berisi 50 nilai rata-rata bootstrap. Ringkasan statistik (summary()) memperlihatkan bahwa rata-rata bootstrap berada di sekitar nilai rata-rata populasi, yaitu sekitar 30, sedangkan nilai simpangan baku (sd()) relatif kecil. Hal ini menunjukkan bahwa estimasi rata-rata yang diperoleh melalui bootstrap cukup stabil.
#==================================================
# LATIHAN 2
#==================================================
# Menampilkan dua histogram dalam satu jendela
par(mfrow = c(1,2))
# Histogram data asli
hist(data_asli,
main = "Histogram Data Asli",
xlab = "Nilai",
col = "skyblue",
border = "black")
# Histogram rata-rata bootstrap
hist(bootstrap.results,
main = "Histogram Rata-rata Bootstrap",
xlab = "Rata-rata",
col = "lightgreen",
border = "black")
Histogram pertama menunjukkan distribusi 1000 observasi yang
dibangkitkan menggunakan distribusi normal dengan rata-rata 30 dan
simpangan baku 2,5. Bentuk histogram menyerupai distribusi normal sesuai
dengan parameter yang digunakan.
Histogram kedua menunjukkan distribusi 50 rata-rata bootstrap yang diperoleh dari proses resampling. Dibandingkan histogram data asli, distribusi rata-rata bootstrap tampak lebih terpusat di sekitar nilai 30 dengan penyebaran yang lebih kecil. Hal ini menunjukkan bahwa metode bootstrap menghasilkan estimasi rata-rata yang stabil dan mendekati rata-rata populasi melalui proses pengambilan sampel ulang.