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)
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
hasil <- data.frame()
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
)
)
}
}
}
}
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
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
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
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.