Latihan 1 Tetapkan set.seed Anda pada angka 150. Hasilkan distribusi normal acak dari 1000 observasi, dengan rata-rata 30 dan simpangan baku 2,5. Hitung rata-rata dari 50 sampel dari 1000 observasi dari kumpulan data tersebut. Simpan hasil Anda dalam vektor.
Fungsi yang relevan: set.seed(), rnorm(), for(i in x), sample().
# ==========================
# LATIHAN 1
# ==========================
set.seed(150)
# Membuat data asli
myData <- rnorm(1000,
mean = 30,
sd = 2.5)
# Parameter bootstrap
sample.size <- 1000
n.samples <- 50
# Menyimpan hasil mean
bootstrap.results <- c()
for(i in 1:n.samples)
{
obs <- sample(1:sample.size,
replace = TRUE)
bootstrap.results[i] <- mean(myData[obs])
}
# Hasil
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
# Ringkasan
summary(bootstrap.results)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 29.75 29.89 29.92 29.93 29.97 30.10
# Standar deviasi distribusi mean
sd(bootstrap.results)
## [1] 0.06342673
Interpretasi Latihan 1
Berdasarkan simulasi, diperoleh 50 nilai rata-rata hasil bootstrap dari data yang terdiri atas 1000 observasi berdistribusi normal dengan rata-rata 30 dan simpangan baku 2,5. Nilai rata-rata pada vektor bootstrap.results cenderung berada di sekitar 30, menunjukkan bahwa proses bootstrap mampu menghasilkan estimasi rata-rata yang konsisten dengan rata-rata data asli.
Latihan 2 Hasilkan dua histogram untuk menampilkan secara grafis distribusi rata-rata yang diperoleh dalam Latihan 1 serta nilai dari 1000 observasi dalam kumpulan data asli Anda. Gabungkan histogram ini menjadi satu grafik keseluruhan.
Fungsi yang relevan: par(), hist().
# ==========================
# LATIHAN 2
# ==========================
par(mfrow = c(2,1))
# Histogram hasil bootstrap
hist(
bootstrap.results,
col = "lightcoral",
main = "Distribusi Mean Bootstrap (50 Sampel)",
xlab = "Mean"
)
# Histogram data asli
hist(
myData,
col = "lightblue",
main = "Distribusi Data Asli",
xlab = "Nilai"
)
Interpretasi Latihan 2
Histogram pertama menunjukkan distribusi rata-rata hasil bootstrap. Sebaran histogram ini relatif sempit dan terpusat di sekitar nilai 30 karena yang diamati adalah distribusi rata-rata sampel.
Histogram kedua menunjukkan distribusi data asli yang memiliki penyebaran lebih besar karena berisi seluruh 1000 observasi individual. Dengan demikian, distribusi rata-rata bootstrap memiliki variabilitas yang lebih kecil dibandingkan distribusi data asli.