par(mfrow=c(3,1))
library(probs)
## Warning: package 'probs' was built under R version 4.4.3
##
## Attaching package: 'probs'
## The following objects are masked from 'package:base':
##
## intersect, setdiff, union
par(mfrow = c(3, 1))
library(probs)
set.seed(123)
populasi <- rgeom(20, 0.1)
n_values <- c(2, 5, 10)
for (n in n_values) {
sampel <- urnsamples(populasi, size = n, replace = FALSE, ordered = FALSE)
mean_geo <- apply(sampel, 1, mean)
hist(mean_geo, main = paste("n =", n), xlab = "Rata-rata Sampel", col = "skyblue", border = "white")
}
Tujuannya adalah untuk menunjukkan bagaimana distribusi rata-rata sampel
dari distribusi geometrikmendekati distribusi normal ketika ukuran
sampel meningkat.
set.seed(42)
populasi <- rgeom(1000, 0.1)
ambil_mean <- function(n, iter = 1000) {
replicate(iter, mean(sample(populasi, size = n, replace = FALSE)))
}
mean_geo1 <- ambil_mean(2)
mean_geo2 <- ambil_mean(5)
mean_geo3 <- ambil_mean(10)
par(mfrow = c(1, 3))
hist(mean_geo1, breaks=30, main = "CLT - Geometrik (n = 2)", col = "skyblue",
xlab = "Rata-rata Sampel", probability = TRUE)
hist(mean_geo2, breaks=30, main = "CLT - Geometrik (n = 5)", col = "salmon",
xlab = "Rata-rata Sampel", probability = TRUE)
hist(mean_geo3, breaks=30, main = "CLT - Geometrik (n = 10)", col = "palegreen",
xlab = "Rata-rata Sampel", probability = TRUE)
par(mfrow = c(1,1))
par(mfrow = c(3, 1))
library(probs)
set.seed(123)
populasi <- rexp(20, rate = 0.1)
n_values <- c(2, 5, 10)
for (n in n_values) {
sampel <- urnsamples(populasi, size = n, replace = FALSE, ordered = FALSE)
mean_exp <- apply(sampel, 1, mean)
hist(mean_exp, main = paste("n =", n), xlab = "Rata-rata Sampel", col = "skyblue", border = "white")
}
par(mfrow = c(3, 1))
set.seed(123)
populasi <- rexp(1000, rate = 1)
ambil_mean <- function(n, iter = 1000) {
replicate(iter, mean(sample(populasi, size = n, replace = FALSE)))
}
mean_exp1 <- ambil_mean(2)
mean_exp2 <- ambil_mean(5)
mean_exp3 <- ambil_mean(10)
hist(mean_exp1, breaks = 30, main = "Hampiran Normal Eksponensial (n = 2)",
xlab = "Rata-rata Sampel", col = "skyblue", probability = TRUE)
hist(mean_exp2, breaks = 30, main = "Hampiran Normal Eksponensial (n = 5)",
xlab = "Rata-rata Sampel", col = "salmon", probability = TRUE)
hist(mean_exp3, breaks = 30, main = "Hampiran Normal Eksponensial (n = 10)",
xlab = "Rata-rata Sampel", col = "palegreen", probability = TRUE)
par(mfrow = c(1, 1))
par(mfrow = c(3, 1))
library(probs)
set.seed(123)
populasi <- runif(20)
n_values <- c(2, 5, 10)
for (n in n_values) {
sampel <- urnsamples(populasi, size = n, replace = FALSE, ordered = FALSE)
mean_unif <- apply(sampel, 1, mean)
hist(mean_unif, main = paste("n =", n), xlab = "Rata-rata Sampel", col = "lightgreen", border = "white")
}
Kesimpulan : Semakin besar ukuran contoh, maka sebaran rata-rata dari
contoh acak yang berasal dari sebaran geometrik, eksponensial, maupun
uniform akan mendekati sebaran normal. Hal ini ditunjukkan darihistogram
yang mana ketika n semakin besar akan semakin cenderung membentuk kurva
normal
par(mfrow = c(3, 1))
set.seed(123)
populasi <- runif(1000, min = 0, max = 1)
ambil_mean <- function(n, iter = 1000) {
replicate(iter, mean(sample(populasi, size = n, replace = FALSE)))
}
mean_unif1 <- ambil_mean(2)
mean_unif2 <- ambil_mean(5)
mean_unif3 <- ambil_mean(10)
hist(mean_unif1, breaks = 30, main = "Hampiran Normal - Seragam (n = 2)",
xlab = "Rata-rata Sampel", col = "lightblue", probability = TRUE)
hist(mean_unif2, breaks = 30, main = "Hampiran Normal - Seragam (n = 5)",
xlab = "Rata-rata Sampel", col = "lightgreen", probability = TRUE)
hist(mean_unif3, breaks = 30, main = "Hampiran Normal - Seragam (n = 10)",
xlab = "Rata-rata Sampel", col = "lightcoral", probability = TRUE)
par(mfrow = c(1, 1))
par(mfrow = c(3, 1))
set.seed(1299)
populasi <- rnorm(1000, mean = 5, sd = sqrt(12))
ambil_mean <- function(n, iter = 1000) {
replicate(iter, mean(sample(populasi, size = n, replace = FALSE)))
}
mean_norm1 <- ambil_mean(3)
mean_norm2 <- ambil_mean(4)
mean_norm3 <- ambil_mean(15)
mean_xbar1 <- mean(mean_norm1)
var_xbar1 <- var(mean_norm1)
mean_xbar2 <- mean(mean_norm2)
var_xbar2 <- var(mean_norm2)
mean_xbar3 <- mean(mean_norm3)
var_xbar3 <- var(mean_norm3)
hist(mean_norm1, breaks = 30, col = "lightblue", probability = TRUE,
main = "Distribusi Rata-rata Sampel ~ Normal (n = 3)",
xlab = expression(bar(X)))
hist(mean_norm2, breaks = 30, col = "lightgreen", probability = TRUE,
main = "Distribusi Rata-rata Sampel ~ Normal (n = 4)",
xlab = expression(bar(X)))
hist(mean_norm3, breaks = 30, col = "lightcoral", probability = TRUE,
main = "Distribusi Rata-rata Sampel ~ Normal (n = 15)",
xlab = expression(bar(X)))
par(mfrow = c(1, 1))
Ketakbiasan penduga merujuk pada sifat di mana rata-rata dari hasil estimasi suatu parameter, jika dilakukan berulang kali, akan mendekati nilai sebenarnya dari parameter tersebut. Artinya, metode estimasi tersebut tidak cenderung menghasilkan nilai yang terlalu tinggi atau terlalu rendah secara sistematis.
Untuk menguji apakah suatu penduga bersifat tak bias, langkah-langkah berikut dapat dilakukan:
Tentukan Distribusi dan Parameter Populasi Misalnya, gunakan distribusi Normal dengan rata-rata 10 dan simpangan baku 2.
Lakukan Simulasi Sebanyak k Kali
Hitung Rata-rata Penduga
library(probs)
set.seed(123)
hitung_statistik <- function(populasi, n) {
sampel <- urnsamples(populasi, size = n, replace = FALSE, ordered = FALSE)
mean_sampel <- apply(sampel, 1, mean)
median_sampel <- apply(sampel, 1, median)
list(
mean_populasi = mean(populasi),
harapan_mean_contoh = mean(mean_sampel),
harapan_median_contoh = mean(median_sampel)
)
}
n <- 10
populasi1 <- rnorm(20)
stat_normal <- hitung_statistik(populasi1, n)
populasi2 <- rexp(20)
stat_exponensial <- hitung_statistik(populasi2, n)
populasi3 <- runif(20)
stat_seragam <- hitung_statistik(populasi3, n)
hasil <- data.frame(
Hasil = c("Mean Populasi", "Harapan Mean Sampel", "Harapan Median Sampel"),
Normal = c(stat_normal$mean_populasi, stat_normal$harapan_mean_contoh, stat_normal$harapan_median_contoh),
Eksponensial = c(stat_exponensial$mean_populasi, stat_exponensial$harapan_mean_contoh, stat_exponensial$harapan_median_contoh),
Seragam = c(stat_seragam$mean_populasi, stat_seragam$harapan_mean_contoh, stat_seragam$harapan_median_contoh)
)
print(hasil, row.names = FALSE)
## Hasil Normal Eksponensial Seragam
## Mean Populasi 0.1416238 1.113617 0.4436850
## Harapan Mean Sampel 0.1416238 1.113617 0.4436850
## Harapan Median Sampel 0.1174878 1.132277 0.4058455
Berdasarkan output di atas, dengan populasi terhingga maupun tak hingga serta tiga sebaran yangberbeda, nilai harapan median contoh tetap berbeda dengan dan nilai harapan rataan contoh ( )mendekati sama (pada populasi tak hingga) bahkan sama persis dengan nilai parameter rataan populasi (pada populasi terhingga) sehingga penduga tak bias bagi adalah ( ) Pada populasi terhingga, percontohan bersifat unik artinya tidak ada percontohan yang berulangsehingga dapat dipastikan kombinasi contoh hanya muncul satu kali sehingga nilai parameter dan nilaiharapan penduga parameter yang tak bias sama persis. Pada populasi tak hingga, percontohan yang terambil secara acak merupakan sebagian dari keseluruhan kemungkinan percontohan yang ada sehingga nilai parameter dan nilai harapan pendugaparameter yang tak bias tidak sama persis, namun sangat mendekati.
library(probs)
set.seed(888)
n <- 10
populasi_normal <- rnorm(20)
sigma2_normal <- var(populasi_normal) * (20 - 1) / 20
sampel_normal <- urnsamples(populasi_normal, size = n, replace = FALSE, ordered = FALSE)
s2_n1_normal <- apply(sampel_normal, 1, var)
E_s2_n1_normal <- mean(s2_n1_normal)
s2_n_normal <- s2_n1_normal * (n - 1) / n
E_s2_n_normal <- mean(s2_n_normal)
populasi_exp <- rexp(20)
sigma2_exp <- var(populasi_exp) * (20 - 1) / 20
sampel_exp <- urnsamples(populasi_exp, size = n, replace = FALSE, ordered = FALSE)
s2_n1_exp <- apply(sampel_exp, 1, var)
E_s2_n1_exp <- mean(s2_n1_exp)
s2_n_exp <- s2_n1_exp * (n - 1) / n
E_s2_n_exp <- mean(s2_n_exp)
hasil <- data.frame(
Keterangan = c("Ragam Populasi", "Nilai Harapan Ragam Sampel (n-1)", "Nilai Harapan Ragam Sampel (n)"),
Sebaran_Normal = c(sigma2_normal, E_s2_n1_normal, E_s2_n_normal),
Sebaran_Eksponensial = c(sigma2_exp, E_s2_n1_exp, E_s2_n_exp)
)
print(hasil)
## Keterangan Sebaran_Normal Sebaran_Eksponensial
## 1 Ragam Populasi 1.298573 0.8957634
## 2 Nilai Harapan Ragam Sampel (n-1) 1.366919 0.9429088
## 3 Nilai Harapan Ragam Sampel (n) 1.230227 0.8486180
Berdasarkan hasil simulasi, penggunaan pembagi yang sesuai dalam menghitung ragam sampel sangat penting untuk mendapatkan estimasi yang mendekati nilai ragam populasi. Penduga ragam dengan pembagi yang lebih kecil dari ukuran sampel cenderung memberikan estimasi yang lebih akurat dibandingkan dengan pembagi yang sama dengan ukuran sampel. Hal ini menunjukkan bahwa metode tersebut lebih mendekati nilai sebenarnya dari ragam populasi.
Dalam konteks populasi hingga, setiap kombinasi sampel yang diambil tanpa pengembalian bersifat unik, sehingga tidak ada pengulangan dalam pengambilan sampel. Hal ini memungkinkan perhitungan nilai harapan dari penduga ragam dilakukan secara menyeluruh. Namun, meskipun menggunakan pembagi yang lebih kecil dari ukuran sampel, estimasi ragam sampel tidak selalu sama persis dengan ragam populasi, terutama pada ukuran populasi yang kecil. Perbedaan ini disebabkan oleh keterbatasan jumlah data yang tersedia dan variasi yang lebih besar dalam sampel kecil.
Secara keseluruhan, untuk memperoleh estimasi ragam yang lebih akurat pada populasi hingga, disarankan menggunakan metode yang mempertimbangkan pembagi yang lebih kecil dari ukuran sampel. Pendekatan ini membantu mengurangi bias dalam estimasi dan memberikan hasil yang lebih mendekati nilai sebenarnya dari ragam populasi.`
Selang kepercayaan 95% berarti bahwa jika kita mengambil banyak sampel acak dari suatu populasi dan membentuk selang kepercayaan untuk setiap sampel, maka sekitar 95% dari selang-selang tersebut akan mencakup nilai parameter populasi yang sebenarnya. Dengan kata lain, kita memiliki keyakinan 95% bahwa selang kepercayaan yang dihitung dari sampel kita mencakup nilai parameter populasi.
Untuk memahami konsep ini lebih lanjut, kita dapat melakukan simulasi di R dengan langkah-langkah sebagai berikut:
Menentukan Distribusi: Pilih distribusi yang akan digunakan, misalnya distribusi normal.
Melakukan Simulasi: Ulangi proses berikut sebanyak k kali:
Evaluasi: Hitung proporsi dari selang kepercayaan yang mencakup nilai parameter populasi yang sebenarnya
alpha <- 0.05
mu <- 50
std <- 10
k <- 100
z <- qnorm(1 - alpha / 2)
set.seed(123)
simulasi_SK <- function(n, k, mu, std, z) {
sampel <- matrix(rnorm(n * k, mean = mu, sd = std), k)
xbar <- apply(sampel, 1, mean)
s <- apply(sampel, 1, sd)
SE <- s / sqrt(n)
SK <- (xbar - z * SE < mu) & (mu < xbar + z * SE)
return(sum(SK) / k)
}
n_list <- c(10, 30, 100)
hasil_SK <- sapply(n_list, simulasi_SK, k = k, mu = mu, std = std, z = z)
hasil <- data.frame(
"Ukuran Sampel" = n_list,
"Ketepatan Selang Kepercayaan" = hasil_SK
)
print(hasil)
## Ukuran.Sampel Ketepatan.Selang.Kepercayaan
## 1 10 0.93
## 2 30 0.92
## 3 100 0.99
n <- 30
k <- 100
alpha <- 0.05
mu <- 50
std <- 10
set.seed(123)
sampel <- matrix(rnorm(n * k, mu, std), nrow = k)
xbar <- rowMeans(sampel)
s <- apply(sampel, 1, sd)
SE <- s / sqrt(n)
z <- qnorm(1 - alpha / 2)
lower_bounds <- xbar - z * SE
upper_bounds <- xbar + z * SE
colors <- ifelse(lower_bounds <= mu & mu <= upper_bounds, "blue", "red")
x_values <- rbind(lower_bounds, upper_bounds)
y_values <- rbind(1:k, 1:k)
matplot(x_values, y_values, col = colors, type = "l", lty = 1,
main = "Selang Kepercayaan 95% (n=30)",
xlab = "Nilai Rata-rata Sampel",
ylab = "Ulangan ke-")
abline(v = mu, lty = 2, col = "black")
Gambar ini merupakan hasil simulasi selang kepercayaan 95% untuk rata-rata populasi, dengan ukuran sampel sebanyak 30 dan jumlah simulasi sebanyak 100 kali. Setiap garis horizontal pada grafik mewakili satu selang kepercayaan yang diperoleh dari satu sampel. Garis vertikal yang ditambahkan menunjukkan nilai rata-rata populasi yang sebenarnya.
Tujuan dari visualisasi ini adalah untuk menunjukkan seberapa sering selang kepercayaan yang dibentuk dari sampel acak berhasil mencakup nilai rata-rata populasi yang sebenarnya. Jika sebuah selang kepercayaan melintasi garis vertikal, berarti selang tersebut berhasil mencakup nilai rata-rata populasi. Sebaliknya, jika tidak melintasi garis vertikal, selang tersebut tidak mencakup nilai rata-rata populasi.
Dari hasil simulasi, terlihat bahwa sebagian besar selang kepercayaan mencakup nilai rata-rata populasi, sesuai dengan tingkat kepercayaan 95%. Hal ini menunjukkan bahwa metode pembentukan selang kepercayaan yang digunakan cukup andal dalam memperkirakan rata-rata populasi.
# Interval Kepercayaan
library(car)
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.3
data("Prestige")
# Menghitung rata-rata
m <- mean(Prestige$income)
m
## [1] 6797.902
# Menghitung standar error
p <- dim(Prestige)[1]
se <- sd(Prestige$income)/sqrt(p)
se
## [1] 420.4089
# Menghitung nilai kritis t
tval <- qt(0.975, df=p-1)
# Menghitung interval kepercayaan
cat(paste("KI: [", round(m-tval*se, 2),",",round(m+tval*se,2),"]"))
## KI: [ 5963.92 , 7631.88 ]
Artinya, dengan tingkat kepercayaan 95%, rata-rata pendapatan populasi berada dalam rentang 5963.92hingga 7631.88.