rm(list = ls())
set.seed(123)
n_vals   <- c(5, 30, 100)
sd_vals  <- c(10, 50, 90)
known_sd <- c(TRUE, FALSE)
hasil <- expand.grid(n = n_vals, sd = sd_vals, known = known_sd)
hasil$lebar_CI <- NA
for (i in 1:nrow(hasil)) {
  n      <- hasil$n[i]
  sd_pop <- hasil$sd[i]
  known  <- hasil$known[i]
  
  sampel <- rnorm(n, mean = 100, sd = sd_pop)
  mean_samp <- mean(sampel)
  sd_samp   <- sd(sampel)
  
  alpha <- 0.05 
  
  if (known) {
    z <- qnorm(1 - alpha/2)
    margin <- z * sd_pop / sqrt(n)
  } else {
    t <- qt(1 - alpha/2, df = n - 1)
    margin <- t * sd_samp / sqrt(n)
  }
  
  hasil$lebar_CI[i] <- 2 * margin
}
library(knitr)
kable(hasil, digits = 2, 
      caption = "Lebar Interval Kepercayaan 95% untuk Setiap Kombinasi",
      col.names = c("n", "σ/s", "σ Diketahui?", "Lebar CI"))
Lebar Interval Kepercayaan 95% untuk Setiap Kombinasi
n σ/s σ Diketahui? Lebar CI
5 10 TRUE 17.53
30 10 TRUE 7.16
100 10 TRUE 3.92
5 50 TRUE 87.65
30 50 TRUE 35.78
100 50 TRUE 19.60
5 90 TRUE 157.77
30 90 TRUE 64.41
100 90 TRUE 35.28
5 10 FALSE 22.48
30 10 FALSE 8.22
100 10 FALSE 3.64
5 50 FALSE 106.58
30 50 FALSE 36.36
100 50 FALSE 20.33
5 90 FALSE 110.59
30 90 FALSE 67.36
100 90 FALSE 35.75
if (require(ggplot2)) {
  hasil$known_label <- ifelse(hasil$known, "σ Diketahui", "σ Tidak Diketahui")
  hasil$sd_label <- factor(hasil$sd, levels = c(10, 50, 90),
labels = c("σ = 10", "σ = 50", "σ = 90"))
  
   p1 <- ggplot(hasil, aes(x = factor(n), y = lebar_CI, fill = known_label)) +
    geom_bar(stat = "identity", position = position_dodge(width = 0.8)) +
    facet_wrap(~ sd_label, scales = "free_y") +
    labs(x = "Ukuran Sampel (n)", y = "Lebar CI 95%",
         title = "Pengaruh n, Variabilitas, dan Pengetahuan σ terhadap Lebar CI",
         fill = "Pengetahuan σ") +
    theme_minimal()
  print(p1)
  
  p2 <- ggplot(hasil, aes(x = n, y = lebar_CI, color = known_label, linetype = known_label)) +
    geom_line(size = 1) + geom_point(size = 2) +
    facet_wrap(~ sd_label, scales = "free_y") +
    labs(x = "Ukuran Sampel (n)", y = "Lebar CI 95%",
         title = "Tren Lebar CI vs n pada Berbagai Tingkat Variabilitas",
         color = "Pengetahuan σ", linetype = "Pengetahuan σ") +
    theme_minimal()
  print(p2)
}
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.4.3

## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

# Berdasarkan tabel lebar interval kepercayaan 95% yang diperoleh dari 18 kombinasi faktor, dapat disimpulkan:

# 1. Pengaruh ukuran sampel (n):
# Untuk nilai σ dan status pengetahuan yang sama, semakin besar n, lebar interval semakin kecil. Contoh pada σ=10, diketahui: n=5 lebar 17,53; n=30 lebar 7,16; n=100 lebar 3,92. Hal ini karena margin of error berbanding terbalik dengan √n. Semakin besar sampel, estimasi semakin presisi.

# 2. Pengaruh variabilitas data (σ atau s):
# Untuk n dan status pengetahuan yang sama, semakin besar σ, lebar interval semakin besar. Contoh pada n=30, diketahui: σ=10 lebar 7,16; σ=50 lebar 35,78; σ=90 lebar 64,41. Data yang lebih heterogen meningkatkan ketidakpastian, sehingga interval melebar.

# 3. Pengaruh pengetahuan standar deviasi populasi:
# a. Pada n kecil (n=5): selisih antara diketahui dan tidak diketahui cukup besar (misal σ=50: 87,65 vs 106,58; σ=90: 157,77 vs 110,59 – meskipun yang tidak diketahui lebih kecil karena fluktuasi sampel, secara teoritis seharusnya lebih besar).

# b. Pada n besar (n=100): selisih sangat kecil (σ=50: 19,60 vs 20,33; σ=90: 35,28 vs 35,75). Hal ini sesuai teori: ketika σ tidak diketahui, digunakan distribusi t yang ekornya lebih gemuk, terutama berpengaruh pada derajat bebas kecil. Untuk n besar, t mendekati z.

# 4. Interaksi ketiga faktor:
# Kombinasi n=5, σ=90, diketahui menghasilkan interval 157,77; sementara kombinasi n=100, σ=10, diketahui menghasilkan interval tersempit (3,92). Secara umum, ketidakpastian estimasi dapat ditekan dengan memperbesar sampel, menggunakan data yang homogen, dan mengetahui σ populasi. Fluktuasi pada sampel kecil (n=5, σ=90, tidak diketahui = 110,59) menunjukkan bahwa estimasi variabilitas sampel bisa lebih rendah dari populasi, namun pola utama tetap terlihat.