1) Melihat ketidakbiasan ukuran pemusatan data mean dan median dalam mengistimasi rata-rata populasi menggunakan algoritma BOOTSTRAP.

Bootstrap adalah teknik resampling yang digunakan untuk mengestimasi distribusi sampling dari suatu statistik berdasarkan sampel yang tersedia. Teknik ini memungkinkan kita untuk membuat banyak sampel baru dari sampel yang tersedia dengan memilih sampel secara acak dengan pengembalian.

  1. Siapkan sampel yang tersedia dalam bentuk vektor atau matriks di dalam R.
  2. Tentukan jumlah sampel yang akan diambil dari sampel yang tersedia.
  3. Untuk setiap sampel yang diambil, ambil sampel secara acak dengan pengembalian dari sampel yang tersedia.
  4. Hitung statistik dari setiap sampel yang diambil. Statistik yang sering digunakan adalah mean, median, variance, dll.
  5. Gabungkan semua statistik yang dihitung dari setiap sampel yang diambil.
  6. Hitung nilai rata-rata, standar deviasi, atau interval kepercayaan dari semua statistik yang dihitung untuk mendapatkan perkiraan distribusi sampling dari statistik yang diestimasi.

Membuat data populasi

set.seed(1234)
populasi <- rnorm(1000, mean = 50, sd = 10)

Jumlah sampel yang akan diambil

n_sample <- 1000

Mengambil sampel 100 sampel sebanyak 1000 kali dengan teknik bootstrap

sample_means <- replicate(n_sample, mean(sample(populasi, 100, replace=TRUE)))

Menghitung nilai rata-rata dari semua sampel

estimated_mean <- mean(sample_means)
estimated_mean
## [1] 49.79265

Mengambil sampel dengan teknik bootstrap

sample_medians <- replicate(n_sample, median(sample(populasi, 100, replace=TRUE)))

Menghitung nilai median dari semua sampel

estimated_medians <- median(sample_medians)
estimated_medians
## [1] 49.64058

menggambar histogram dari mean dan median hasil resampling

library(tidyr)
library(ggplot2)
## Menggabungkan data mean dan median hasil resampling dalam satu dataframe
df <- data.frame(sample_means, sample_medians)

ggplot(gather(df), aes(x=value, fill=key)) + 
  geom_histogram(alpha=0.5, position="identity", bins=30) +
  labs(title="Histogram Data Mean dan Data Median", x="Nilai", y="Frekuensi", fill="Data")+
  geom_vline(aes(xintercept=mean(sample_means)), color="red", linetype="dashed", size=0.5)+
  geom_vline(aes(xintercept=mean(sample_medians)), color="blue", linetype="dashed", size=0.5)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.

Soal no 2

# data
set.seed(1234)
data <- rnorm(1000)
# Membuat fungsi untuk menghitung ragam
calculate_variance <- function(x) {
  return(var(x))
}
# Melakukan bootstrap dengan 1000 iterasi
n_boot <- 1000
variances <- numeric(n_boot)
set.seed(1234)
for (i in 1:n_boot) {
  # Mengambil sampel acak dengan pengembalian
  sample <- sample(data, 100, replace=TRUE)
  
  # Menghitung ragam dari sampel
  variances[i] <- calculate_variance(sample)
}

mean(variances)
## [1] 0.9912643
# dengan pembagi n-1
calculate_variance1 <- function(x) {
  return(var(x)*(100-1)/100)
}
set.seed(1234)
for (i in 1:n_boot) {
  # Mengambil sampel acak dengan pengembalian
  sample1 <- sample(data, 100, replace=TRUE)
  
  # Menghitung ragam dari sampel
  variances[i] <- calculate_variance1(sample1)
}

mean(variances)
## [1] 0.9813517

Hasilnya, penduga ragam dengan pembagi n-1 lebih mendekati nilai ragam sebenarnya dari populasi.