Kerjakan simulasi menggunakan format ADEMP. Tugas dikumpulkan menggunakan format pdf dan dikumpulkan paling lambat 27 April 2026 pukul 23.59.
Melakukan simulasi untuk mendapatkan batas bawah ukuran contoh nobs agar statistik baku Z∼N(0,1), jika populasi asal berdistribusi normal namun mengandung pencilan (outlier).
set.seed(123)
# Fungsi untuk menghitung nilai Z
simulasi_z_outlier = function(n, iterasi = 1000) {
# Parameter Teoretis Populasi Campuran (95% N(0,1) + 5% N(10,1))
# Rata-rata: E(X) = 0.95(0) + 0.05(10) = 0.5
mu_pop = 0.5
# Ragam: Var(X) = E(X^2) - (E(X))^2 = (0.95*(1+0) + 0.05*(1+100)) - 0.5^2 = 5.75
sd_pop = sqrt(5.75)
z_stats = numeric(iterasi)
for(i in 1:iterasi) {
# Bangkitkan indikator: 1 jika outlier, 0 jika normal
is_outlier = rbinom(n, 1, 0.05)
# Bangkitkan data sesuai indikator
data = ifelse(is_outlier == 1, rnorm(n, 10, 1), rnorm(n, 0, 1))
# Hitung Z
z_stats[i] = (mean(data) - mu_pop) / (sd_pop / sqrt(n))
}
return(z_stats)
}
# Uji untuk beberapa ukuran sampel n
ukuran_n_soal1 = c(10, 30, 50, 100, 200)
cat("Hasil Uji Shapiro-Wilk Soal 1 \n")
## Hasil Uji Shapiro-Wilk Soal 1
for(n in ukuran_n_soal1) {
z_hasil = simulasi_z_outlier(n)
uji_shapiro = shapiro.test(z_hasil)
cat("Ukuran sampel n =", n, " --> p-value =", uji_shapiro$p.value, "\n")
}
## Ukuran sampel n = 10 --> p-value = 2.532448e-22
## Ukuran sampel n = 30 --> p-value = 1.471424e-09
## Ukuran sampel n = 50 --> p-value = 3.900323e-07
## Ukuran sampel n = 100 --> p-value = 9.631374e-05
## Ukuran sampel n = 200 --> p-value = 5.543631e-05
Seluruh ukuran sampel yang dihasilkan menghasilkan nilai yang jauh lebih kecil dari 0.05. Data simulasi menunjukkan bahwa kehadiran 5% outlier dari populasi merusak bentuk distribusi dan memperlambat konvergensi Teorema Limit Pusat (CLT). Maka aturan dari CLT gagal dalam simulasi ini, bahkan pada n = 200 masih belum mencapa sebaran normal baku.
Mengevaluasi dan menemukan batas bawah ukuran sampel agar distribusi dari rataan sampel yang dibakukan mendekati normal baku, ketika populasi asalnya berdistribusi normal namun terdapat pencilan.
populasi disrtribusi campuran dengan 95% data berasal dari \(N(\mu = 0, \sigma^2 = 1)\) dan 5% data merupakan pencilan ekstrem \(N(\mu = 10, \sigma^2 = 1)\)
ukuran sampel disimulasikan untuk \(n_obs = {10, 30, 50, 100, 200}\)
pengulangan sebanyak 1000 iterasi untuk setiap ukuran sampel
penduga yang diamati adalah statistik \(Z\) baku dari rataan sampel \(Z = \frac{\bar{X} - \mu_{pop}}{\sigma_{pop}/\sqrt{n}}\)
Membangkitkan sampel, menghitung rata-rata \(\bar{X}\), lalu menstandardisasinya menjadi \(Z\). Kenormalan \(Z\) dievaluasi menggunakan Uji Shapiro-Wilk untuk setiap ukuran sampel.
Nilai p-value dari Uji Shapiro-Wilk. Jika p-value \(> 0.05\), maka \(Z\) sudah dapat dikatakan mengikuti distribusi Normal Baku. Batas bawah \(n_{obs}\) adalah ukuran sampel terkecil yang membuat grafik QQ-plot membentuk garis lurus dan lulus uji Shapiro-Wilk.
Bangkitkan dua gugus data:
Data dari sebaran gamma(shape = 3, rate = 1).
Data campuran:
40% dari sebaran uniform(0,2) + 60% dari sebaran chi-square(df = 4).
30% sebaran gamma(shape = 2) + 30% gamma(shape = 5) + 20% normal(mean = 1) + 20% normal(mean = 3).
Ambil sampel dengan ukuran n = 6, 22, 150.
Buat histogram dan normal QQ-plot untuk setiap kombinasi data dan ukuran sampel.
Tentukan pada ukuran n berapa distribusi rata-rata data mendekati distribusi normal.
# Fungsi Pembangkit Data
bangkitkan_data = function(n, jenis) {
if (jenis == "Gamma") {
return(rgamma(n, shape = 3, rate = 1))
} else if (jenis == "Mix1") {
# 40% U(0,2) + 60% Chisq(4)
pilih = sample(1:2, n, replace = TRUE, prob = c(0.4, 0.6))
return(ifelse(pilih == 1, runif(n, 0, 2), rchisq(n, df = 4)))
} else if (jenis == "Mix2") {
# 30% Gam(2), 30% Gam(5), 20% N(1), 20% N(3)
pilih = sample(1:4, n, replace = TRUE, prob = c(0.3, 0.3, 0.2, 0.2))
hasil = numeric(n)
hasil[pilih == 1] = rgamma(sum(pilih == 1), shape = 2, rate = 1)
hasil[pilih == 2] = rgamma(sum(pilih == 2), shape = 5, rate = 1)
hasil[pilih == 3] = rnorm(sum(pilih == 3), mean = 1, sd = 1)
hasil[pilih == 4] = rnorm(sum(pilih == 4), mean = 3, sd = 1)
return(hasil)
}
}
ukuran_n_soal2 = c(6, 22, 150)
jenis_data = c("Gamma", "Mix1", "Mix2")
iterasi = 1000
# Loop untuk membuat Histogram dan QQ-Plot
for (jenis in jenis_data) {
# Siapkan jendela plot 3 baris 2 kolom
par(mfrow = c(3, 2), mar = c(4, 4, 2, 1))
for (n in ukuran_n_soal2) {
rata2_sampel = numeric(iterasi)
for (i in 1:iterasi) {
rata2_sampel[i] = mean(bangkitkan_data(n, jenis))
}
# Histogram
hist(rata2_sampel, main = paste(jenis, "| n =", n),
xlab = "Rata-rata", col = "darkblue", border = "white", breaks=30)
# QQ-Plot
qqnorm(rata2_sampel, main = paste("QQ-Plot | n =", n))
qqline(rata2_sampel, col = "red", lwd = 2)
}
}
par(mfrow = c(1, 1))n = 6
Histogram terlihat belum simetris sempurna. Pada Gamma dan Mix1, right-skewed sangat terlihat jelas.
Pada QQ-Plot, titik-titik observasi sangat menyimpang dari garis lurus merah, terutama di bagian ekor atas (kanan). Ini membuktikan bahwa pada ukuran sampel kecil, rata-rata sampel masih membawa sifat “miring” dari populasi aslinya.
n = 22
Kemenjuluran histogram mulai berkurang dan perlahan mulai memusat membentuk gundukan di tengah.
Titik-titik pada QQ-Plot sudah mulai merapat ke garis merah di bagian tengah, namun masih terlihat ada pembelokan kecil di ujung ekor grafik, menandakan sebaran belum normal sempurna.
n = 150
Histogram untuk ketiga gugus data (baik yang tunggal maupun campuran yang rumit) sudah membentuk kurva lonceng yang halus dan simetris (konvergen)
QQ-Plot menunjukkan titik-titik sampel berhimpit lurus dengan garis diagonal merah dari ujung ke ujung.
Melihat kecepatan konvergensi rata-rata sampel menuju distribusi Normal pada populasi yang menjulur (Gamma) dan multimodal (Campuran).
Menggunakan fungsi bawaan R (rgamma, runif,
rchisq, rnorm) dengan probabilitas pembobot
(mixture probabilities). Sampel \(n
\in \{6, 22, 150\}\) dengan iterasi 1000.
Rata-rata sampel (\(\bar{X}\)).
Penilaian visual kemiripan distribusi dengan kurva lonceng normal.