Tugas

Lakukan simulasi untuk mempelajari pengaruh ukuran sampel, variabilitas data (standar deviasi), dan pengetahuan tentang standar deviasi populasi (diketahui/tidak diketahui) terhadap lebar interval kepercayaan 95%, dengan informasi setiap faktor dan level sebagai berikut: - Faktor 1: Ukuran Sampel (n), Level: 5, 30, 100 - Faktor 2: Variabilitas Data (Standar Deviasi, σ atau s), Level: 10, 50, 90 - Faktor 3: Pengetahuan Standar Deviasi Populasi, Level: Diketahui (σ), Tidak Diketahui (s)

Parameter simulasi

set.seed(2025)

#Faktor dan level 
n_levels <- c(5, 30, 100)
sd_levels <- c(10, 50, 90)
status_sd <- c("Diketahui", "Tidak Diketahui")

#Parameter 
alpha <- 0.05
mu <- 100
n_sim <- 1000

Menyiapkan tempat penyempanan hasil

hasil <- data.frame()

Simulasi seluruh kombinasi faktor

for (n in n_levels) {
  for (sd_pop in sd_levels) {
    for (status in status_sd) {
      for (i in 1:n_sim) {
        
        # Membentuk sampel
        x <- rnorm(n, mean = mu, sd = sd_pop)
        xbar <- mean(x)
        
        if (status == "Diketahui") {
          # Pakai distribusi z
          z_value <- qnorm(1 - alpha/2)
          margin_error <- z_value * sd_pop / sqrt(n)
        } else {
          # Pakai distribusi t
          s <- sd(x)
          t_value <- qt(1 - alpha/2, df = n - 1)
          margin_error <- t_value * s / sqrt(n)
        }
        
        lower <- xbar - margin_error
        upper <- xbar + margin_error
        width <- upper - lower
        
        hasil <- rbind(
          hasil,
          data.frame(
            n = n,
            sd = sd_pop,
            status_sd = status,
            sim = i,
            mean_sample = xbar,
            lower_ci = lower,
            upper_ci = upper,
            width_ci = width
          )
        )
      }
    }
  }
}

Melihat beberapa data hasil simulasi

head(hasil)
##   n sd status_sd sim mean_sample lower_ci upper_ci width_ci
## 1 5 10 Diketahui   1   106.14603 97.38081 114.9113 17.53045
## 2 5 10 Diketahui   2   101.02291 92.25768 109.7881 17.53045
## 3 5 10 Diketahui   3    98.51872 89.75349 107.2839 17.53045
## 4 5 10 Diketahui   4   102.57631 93.81108 111.3415 17.53045
## 5 5 10 Diketahui   5   107.79534 99.03012 116.5606 17.53045
## 6 5 10 Diketahui   6    96.34811 87.58289 105.1133 17.53045

Membauat ringkasan rata rata lebar interval kepercayaan

ringkasan <- aggregate(
  width_ci ~ n + sd + status_sd,
  data = hasil,
  FUN = mean
)

ringkasan$width_ci <- round(ringkasan$width_ci, 3)
ringkasan
##      n sd       status_sd width_ci
## 1    5 10       Diketahui   17.530
## 2   30 10       Diketahui    7.157
## 3  100 10       Diketahui    3.920
## 4    5 50       Diketahui   87.652
## 5   30 50       Diketahui   35.784
## 6  100 50       Diketahui   19.600
## 7    5 90       Diketahui  157.774
## 8   30 90       Diketahui   64.411
## 9  100 90       Diketahui   35.279
## 10   5 10 Tidak Diketahui   23.299
## 11  30 10 Tidak Diketahui    7.386
## 12 100 10 Tidak Diketahui    3.944
## 13   5 50 Tidak Diketahui  115.073
## 14  30 50 Tidak Diketahui   36.602
## 15 100 50 Tidak Diketahui   19.733
## 16   5 90 Tidak Diketahui  213.484
## 17  30 90 Tidak Diketahui   67.266
## 18 100 90 Tidak Diketahui   35.548

Membuat ringkasan lebih lengkap

ringkasan_lengkap <- aggregate(
  width_ci ~ n + sd + status_sd,
  data = hasil,
  FUN = function(x) c(mean = mean(x), sd = sd(x), min = min(x), max = max(x))
)

ringkasan_rapi <- data.frame(
  n = ringkasan_lengkap$n,
  sd = ringkasan_lengkap$sd,
  status_sd = ringkasan_lengkap$status_sd,
  mean_width = round(ringkasan_lengkap$width_ci[, "mean"], 3),
  sd_width   = round(ringkasan_lengkap$width_ci[, "sd"], 3),
  min_width  = round(ringkasan_lengkap$width_ci[, "min"], 3),
  max_width  = round(ringkasan_lengkap$width_ci[, "max"], 3)
)

ringkasan_rapi
##      n sd       status_sd mean_width sd_width min_width max_width
## 1    5 10       Diketahui     17.530    0.000    17.530    17.530
## 2   30 10       Diketahui      7.157    0.000     7.157     7.157
## 3  100 10       Diketahui      3.920    0.000     3.920     3.920
## 4    5 50       Diketahui     87.652    0.000    87.652    87.652
## 5   30 50       Diketahui     35.784    0.000    35.784    35.784
## 6  100 50       Diketahui     19.600    0.000    19.600    19.600
## 7    5 90       Diketahui    157.774    0.000   157.774   157.774
## 8   30 90       Diketahui     64.411    0.000    64.411    64.411
## 9  100 90       Diketahui     35.279    0.000    35.279    35.279
## 10   5 10 Tidak Diketahui     23.299    8.321     2.993    55.850
## 11  30 10 Tidak Diketahui      7.386    0.984     4.393    10.865
## 12 100 10 Tidak Diketahui      3.944    0.277     2.850     4.963
## 13   5 50 Tidak Diketahui    115.073   42.664    13.194   273.864
## 14  30 50 Tidak Diketahui     36.602    4.960    23.970    53.626
## 15 100 50 Tidak Diketahui     19.733    1.379    14.965    23.978
## 16   5 90 Tidak Diketahui    213.484   75.558    34.855   500.576
## 17  30 90 Tidak Diketahui     67.266    8.718    41.995    95.162
## 18 100 90 Tidak Diketahui     35.548    2.476    28.301    44.010

Visualisasi hasil

library(ggplot2)

ggplot(ringkasan, aes(x = factor(n), y = width_ci, fill = status_sd)) +
  geom_bar(stat = "identity", position = "dodge") +
  facet_wrap(~ sd, labeller = label_both) +
  labs(
    title = "Rata-rata Lebar Interval Kepercayaan 95%",
    x = "Ukuran Sampel (n)",
    y = "Rata-rata Lebar CI",
    fill = "Status SD"
  ) +
  theme_minimal()

# Interpertasi

cat("Interpretasi:\n")
## Interpretasi:
cat("- Semakin besar ukuran sampel, lebar interval kepercayaan cenderung semakin kecil.\n")
## - Semakin besar ukuran sampel, lebar interval kepercayaan cenderung semakin kecil.
cat("- Semakin besar standar deviasi, lebar interval kepercayaan cenderung semakin besar.\n")
## - Semakin besar standar deviasi, lebar interval kepercayaan cenderung semakin besar.
cat("- Jika standar deviasi populasi tidak diketahui, interval kepercayaan cenderung lebih lebar, terutama saat n kecil.\n")
## - Jika standar deviasi populasi tidak diketahui, interval kepercayaan cenderung lebih lebar, terutama saat n kecil.

Berdasarkan hasil simulasi, dapat dilihat bahwa lebar interval kepercayaan 95% dipengaruhi secara jelas oleh ukuran sampel, besar standar deviasi, dan status pengetahuan standar deviasi populasi. Semakin besar ukuran sampel, interval kepercayaan semakin sempit karena estimasi rata-rata menjadi lebih presisi, sedangkan semakin besar variabilitas data, interval kepercayaan semakin lebar karena ketidakpastian data juga meningkat. Selain itu, pada kondisi standar deviasi populasi tidak diketahui, interval kepercayaan cenderung lebih lebar dibandingkan kondisi diketahui, terutama saat ukuran sampel kecil, karena perhitungan menggunakan distribusi t yang memberikan ketidakpastian lebih besar daripada distribusi z. Secara keseluruhan, hasil ini menunjukkan bahwa estimasi paling presisi diperoleh saat ukuran sampel besar, variabilitas data kecil, dan standar deviasi populasi diketahui.