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.