set.seed(123)
# Faktor dan level
sample_sizes <- c(5, 30, 100) # Ukuran sampel
std_devs <- c(10, 50, 90) # Standar deviasi
pop_known <- c(TRUE, FALSE) # Pengetahuan σ (TRUE = diketahui, FALSE = tidak diketahui)
# Data frame untuk menyimpan hasil
results <- data.frame(Sample_Size=integer(),
Std_Dev=numeric(),
Pop_Known=logical(),
CI_Width=numeric())
# Simulasi
for (n in sample_sizes) {
for (sd in std_devs) {
for (known in pop_known) {
# Menghasilkan sampel acak
data_sample <- rnorm(n, mean=0, sd=sd)
# Menghitung mean sampel
sample_mean <- mean(data_sample)
# Jika standar deviasi populasi diketahui → gunakan distribusi normal (z)
if (known) {
error_margin <- qnorm(0.975) * (sd / sqrt(n))
} else {
# Jika tidak diketahui → gunakan distribusi t
sample_sd <- sd(data_sample) # Estimasi dari sampel
error_margin <- qt(0.975, df=n-1) * (sample_sd / sqrt(n))
}
# Lebar interval kepercayaan
ci_width <- 2 * error_margin
# Simpan hasil
results <- rbind(results, data.frame(Sample_Size=n, Std_Dev=sd, Pop_Known=known, CI_Width=ci_width))
}
}
}
# Menampilkan hasil
print(results)
## Sample_Size Std_Dev Pop_Known CI_Width
## 1 5 10 TRUE 17.530451
## 2 5 10 FALSE 28.893263
## 3 5 50 TRUE 87.652254
## 4 5 50 FALSE 175.203915
## 5 5 90 TRUE 157.774057
## 6 5 90 FALSE 282.054842
## 7 30 10 TRUE 7.156777
## 8 30 10 FALSE 6.495727
## 9 30 50 TRUE 35.783883
## 10 30 50 FALSE 42.884906
## 11 30 90 TRUE 64.410989
## 12 30 90 FALSE 65.024702
## 13 100 10 TRUE 3.919928
## 14 100 10 FALSE 3.980583
## 15 100 50 TRUE 19.599640
## 16 100 50 FALSE 18.310974
## 17 100 90 TRUE 35.279352
## 18 100 90 FALSE 35.749291
# Visualisasi hasil
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
ggplot(results, aes(x=factor(Sample_Size), y=CI_Width, fill=factor(Pop_Known))) +
geom_bar(stat="identity", position="dodge") +
facet_wrap(~Std_Dev) +
labs(title="Pengaruh Ukuran Sampel dan Variabilitas terhadap Lebar Interval Kepercayaan",
x="Ukuran Sampel", y="Lebar Interval Kepercayaan",
fill="Standar Deviasi Populasi Diketahui") +
theme_minimal()
Berdasarkan hasil simulasi dan visualisasi berikut adalah interpretasinya :
Sample_Size
), semakin kecil lebar interval kepercayaan (CI_Width
).Std_Dev
), semakin lebar interval kepercayaan.Pop_Known = TRUE
), maka interval kepercayaan lebih kecil dibandingkan jika tidak diketahui (Pop_Known = FALSE
).