Tentukan ukuran contoh (n )
Tentukan sebaran data
Ulang k kali
• Ambil n contoh acak dari sebaran data yang sudah ditentukan
• Hitung rataannya lalu simpan
Periksa sebaran dari k rataan
par(mfrow=c(1,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
set.seed(123)
populasi <- rgeom(20, 0.1)
n1 <- 2
contoh_geo1 <- urnsamples(populasi, size = n1, replace = FALSE, ordered = FALSE)
mean_geo1 <- matrix(apply(contoh_geo1, 1, mean))
n2 <- 5
contoh_geo2 <- urnsamples(populasi, size = n2, replace = FALSE, ordered = FALSE)
mean_geo2 <- matrix(apply(contoh_geo2, 1, mean))
n3 <- 10
contoh_geo3 <- urnsamples(populasi, size = n3, replace = FALSE, ordered = FALSE)
mean_geo3 <- matrix(apply(contoh_geo3, 1, mean))
hist(mean_geo1, main="Hampiran Normal terhadap Geometrik (n=2)", xlab="xbar", col="lightblue")
hist(mean_geo2, main="Hampiran Normal terhadap Geometrik (n=5)", xlab="xbar", col="lightgreen")
hist(mean_geo3, main="Hampiran Normal terhadap Geometrik (n=10)", xlab="xbar", col="lightpink")
Simulasi ini bertujuan untuk menunjukkan Teorema Limit Pusat, yaitu bahwa rata-rata sampel (\(\bar{x}\)) dari suatu distribusi akan mendekati distribusi normal ketika ukuran sampel semakin besar, meskipun distribusi asalnya tidak normal. Pada simulasi ini digunakan distribusi geometrik dengan parameter𝑝= 0.1.
Histogram di atas menunjukkan distribusi rata-rata sampel dari distribusi geometrik dengan ukuran sampel yang berbeda. Pada n = 2, distribusi rata-rata sampel masih miring ke kanan dan belum menyerupai distribusi normal karena ukuran sampel masih kecil. Ketika ukuran sampel meningkat menjadi n = 5, bentuk histogram mulai lebih simetris dan nilai rata-rata sampel mulai terkonsentrasi di sekitar nilai tengah. Pada n = 10, distribusi rata-rata sampel terlihat lebih mendekati bentuk kurva normal (bell shape) dan penyebaran datanya semakin stabil.
Hal ini menunjukkan bahwa semakin besar ukuran sampel, distribusi rata-rata sampel dari distribusi geometrik semakin mendekati distribusi normal, sesuai dengan Teorema Limit Pusat.
par(mfrow=c(1,1))
library(probs)
set.seed(123)
populasi <- rexp(20)
n1 <- 2
contoh_exp1 <- urnsamples(populasi, size = n1, replace = FALSE, ordered = FALSE)
mean_exp1 <- matrix(apply(contoh_exp1, 1, mean))
n2 <- 5
contoh_exp2 <- urnsamples(populasi, size = n2, replace = FALSE, ordered = FALSE)
mean_exp2 <- matrix(apply(contoh_exp2, 1, mean))
n3 <- 10
contoh_exp3 <- urnsamples(populasi, size = n3, replace = FALSE, ordered = FALSE)
mean_exp3 <- matrix(apply(contoh_exp3, 1, mean))
hist(mean_exp1, main="Hampiran Normal terhadap Eksponensial (n=2)", xlab="xbar", col="lightblue")
hist(mean_exp2, main="Hampiran Normal terhadap Eksponensial (n=5)", xlab="xbar", col="lightgreen")
hist(mean_exp3, main="Hampiran Normal terhadap Eksponensial (n=10)", xlab="xbar", col="lightpink")
Histogram menunjukkan distribusi rata-rata sampel (\(\bar{x}\)) dari distribusi eksponensial dengan ukuran sampel yang berbeda. Pada n = 2, distribusi rata-rata sampel masih miring ke kanan (right-skewed) dan belum menyerupai distribusi normal karena ukuran sampel masih kecil. Ketika ukuran sampel meningkat menjadi n = 5, bentuk histogram mulai lebih simetris walaupun masih sedikit miring. Pada n = 10, distribusi rata-rata sampel terlihat lebih mendekati bentuk kurva normal (bell shape) dan penyebaran datanya semakin terpusat di sekitar nilai tengah. Hal ini menunjukkan bahwa semakin besar ukuran sampel, distribusi rata-rata sampel dari distribusi eksponensial semakin mendekati distribusi normal, sesuai dengan Teorema Limit Pusat.
par(mfrow=c(1,1))
library(probs)
set.seed(123)
populasi <- runif(20)
n1 <- 2
contoh_unif1 <- urnsamples(populasi, size = n1, replace = FALSE, ordered = FALSE)
mean_unif1 <- matrix(apply(contoh_unif1, 1, mean))
n2 <- 5
contoh_unif2 <- urnsamples(populasi, size = n2, replace = FALSE, ordered = FALSE)
mean_unif2 <- matrix(apply(contoh_unif2, 1, mean))
n3 <- 10
contoh_unif3 <- urnsamples(populasi, size = n3, replace = FALSE, ordered = FALSE)
mean_unif3 <- matrix(apply(contoh_unif3, 1, mean))
hist(mean_unif1, main="Hampiran Normal terhadap Seragam (n=2)", xlab="xbar", col="lightblue")
hist(mean_unif2, main="Hampiran Normal terhadap Seragam (n=5)", xlab="xbar", col="lightgreen")
hist(mean_unif3, main="Hampiran Normal terhadap Seragam (n=10)", xlab="xbar", col="lightpink")
Histogram menunjukkan distribusi rata-rata sampel (\(\bar{x}\)) dari distribusi uniform dengan
ukuran sampel yang berbeda.
Pada n = 2, distribusi rata-rata sampel masih cukup menyebar dan
bentuknya belum sepenuhnya menyerupai distribusi normal.
Ketika ukuran sampel meningkat menjadi n = 5, bentuk histogram mulai
terlihat lebih simetris dan nilai rata-rata sampel mulai terkonsentrasi
di sekitar nilai tengah.
Pada n = 10, distribusi rata-rata sampel semakin mendekati bentuk kurva
normal (bell shape) dengan penyebaran yang lebih terpusat.
Hal ini menunjukkan bahwa semakin besar ukuran sampel, distribusi
rata-rata sampel dari distribusi uniform semakin mendekati distribusi
normal, sesuai dengan Teorema Limit Pusat.
par(mfrow=c(1,1))
library(probs)
set.seed(1299)
populasi <- rnorm(20, 5, sqrt(12))
n1 <- 3
contoh_norm1 <- urnsamples(populasi, size = n1, replace = FALSE, ordered = FALSE)
mean_norm1 <- matrix(apply(contoh_norm1, 1, mean))
mean_xbar1 <- mean(mean_norm1)
var_xbar1 <- var(mean_norm1)
n2 <- 4
contoh_norm2 <- urnsamples(populasi, size = n2, replace = FALSE, ordered = FALSE)
mean_norm2 <- matrix(apply(contoh_norm2, 1, mean))
mean_xbar2 <- mean(mean_norm2)
var_xbar2 <- var(mean_norm2)
n3 <- 15
contoh_norm3 <- urnsamples(populasi, size = n3, replace = FALSE, ordered = FALSE)
mean_norm3 <- matrix(apply(contoh_norm3, 1, mean))
mean_xbar3 <- mean(mean_norm3)
var_xbar3 <- var(mean_norm3)
hist(mean_norm1, main="Sebaran xbar (n=3)", xlab="xbar", col="lightblue")
hist(mean_norm2, main="Sebaran xbar (n=4)", xlab="xbar", col="lightgreen")
hist(mean_norm3, main="Sebaran xbar (n=15)", xlab="xbar", col="lightpink")
hasil <- data.frame(
Statistik = c("Mean", "Varian"),
Populasi = c(5, 12),
`n=3` = c(mean_xbar1, var_xbar1),
`n=4` = c(mean_xbar2, var_xbar2),
`n=15` = c(mean_xbar3, var_xbar3)
)
hasil
## Statistik Populasi n.3 n.4 n.15
## 1 Mean 5 4.809415 4.809415 4.8094152
## 2 Varian 12 4.547044 3.207524 0.2672558
Pada simulasi ini digunakan populasi yang berdistribusi normal dengan mean𝜇= 5 dan varians \(\sigma^2\) = 12. Dari populasi tersebut diambil sampel tanpa pengembalian dengan ukuran 𝑛= 3, 𝑛= 4, dan 𝑛= 15, kemudian dihitung rata-rata sampelnya (\(\bar{x}\)) dan ditampilkan dalam bentuk histogram.
Hasil histogram menunjukkan bahwa distribusi rata-rata sampel cenderung berpusat di sekitar mean populasi, yaitu sekitar 5. Ketika ukuran sampel kecil (n=3), penyebaran nilai masih cukup lebar. Pada ukuran sampel yang lebih besar (n = 4), distribusi mulai lebih terpusat. Sementara pada ukuran sampel yang jauh lebih besar (n=15), distribusi rata-rata sampel menjadi semakin sempit dan lebih simetris.
Hal ini menunjukkan bahwa semakin besar ukuran sampel, maka variansi dari distribusi rata-rata sampel semakin kecil sehingga estimasi terhadap mean populasi menjadi lebih stabil dan akurat.
\(\bar{x}\) adalah penduga tak bias bagi \(\mu\), jika \(E(\bar{x}) = \mu\). \(s^2\) adalah penduga tak bias bagi \(\sigma^2\), jika \(E(s^2) = \sigma^2\)
Maka dalam hal ini akan dibuktikan apakah nilai harapan penduga parameter sama dengan nilai parameternya.
\[ X \sim N(\mu, \sigma^2) \]
\[ E(\bar{x}) \approx \frac{1}{k}\sum_{i=1}^{k} \bar{x}_i \]
\[ E(s^2) \approx \frac{1}{k}\sum_{i=1}^{k} s_i^2 \] kemudian bandingkan dengan parameter populasi \(\mu\) dan \(\sigma^2\).
\[ E(\bar{x}) \approx \mu \] \[ E(s^2) \approx \sigma^2 \]
Penerapan ketakbiasan penduga (mean)
#POPULASI TERHINGGA
#1. Sebaran Normal
library(probs)
set.seed(123)
n = 10
populasi1 = rnorm(20)
mean_pop1 = mean(populasi1)
sampel_normal1 = urnsamples(populasi1, size = 10, replace = F, ordered = F)
mean_normal1 = matrix(apply(sampel_normal1, 1, mean))
median_normal1 = matrix(apply(sampel_normal1, 1, median))
harapan_mean_norm1 = mean(mean_normal1)
harapan_median_norm1 = mean(median_normal1)
#2. Sebaran Eksponensial
library(probs)
set.seed(123)
n = 10
populasi2 = rexp(20)
mean_pop2 = mean(populasi2)
sampel_exp1 = urnsamples(populasi2, size = 10, replace = F, ordered = F)
mean_exp1 = matrix(apply(sampel_exp1, 1, mean))
median_exp1 = matrix(apply(sampel_exp1, 1, median))
harapan_mean_exp1 = mean(mean_exp1)
harapan_median_exp1 = mean(median_exp1)
#3. Uniform
library(probs)
set.seed(123)
n = 10
populasi3 = runif(20)
mean_pop3 = mean(populasi3)
sampel_unif1 = urnsamples(populasi3, size = 10, replace = F, ordered = F)
mean_unif1 = matrix(apply(sampel_unif1, 1, mean))
median_unif1 = matrix(apply(sampel_unif1, 1, median))
harapan_mean_unif1 = mean(mean_unif1)
harapan_median_unif1 = mean(median_unif1)
hasil = data.frame("Hasil"=c("mean_populasi","harapan_mean_contoh","harapan_median_contoh"),"Sebaran Normal"=c(mean_pop1,harapan_mean_norm1,harapan_median_norm1),"Sebaran Eksponensial"=c(mean_pop2,harapan_mean_exp1,harapan_median_exp1),"Sebaran Seragam"=c(mean_pop3,harapan_mean_unif1,harapan_median_unif1))
hasil
## Hasil Sebaran.Normal Sebaran.Eksponensial Sebaran.Seragam
## 1 mean_populasi 0.1416238 0.8111726 0.5508084
## 2 harapan_mean_contoh 0.1416238 0.8111726 0.5508084
## 3 harapan_median_contoh 0.1174878 0.4931612 0.5504018
Kesimpulan :
Berdasarkan output di atas, dengan populasi terhingga maupun tak hingga serta tiga sebaran yang berbeda, nilai harapan median contoh tetap berbeda dengan \(\mu\) dan nilai harapan rataan contoh (\(\bar{x}\)) mendekati sama (pada populasi tak hingga) bahkan sama persis dengan nilai parameter rataan populasi \(\mu\) (pada populasi terhingga) sehingga penduga tak bias bagi \(\mu\) adalah (\(\bar{x}\)).
Pada populasi terhingga, percontohan bersifat unik artinya tidak ada percontohan yang berulang sehingga dapat dipastikan kombinasi contoh hanya muncul satu kali sehingga nilai parameter dan nilai harapan 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 penduga parameter yang tak bias tidak sama persis, namun sangat mendekati.
Penerapan ketakbiasan penduga (Ragam)
# POPULASI TERHINGGA
#Sebaran Normal
set.seed(888)
n = 10
populasi = rnorm(20)
sigma2 = var(populasi)*(20-1)/20 #fungsi var pada R adalah varian contoh (penyebut n-1) sehingga perlu dikali (n-1)/n
library(probs)
sampel = urnsamples(populasi, size = 10, replace = F, ordered = F)
## Pembagi (n-1)
s2.n1 = matrix(apply(sampel, 1, var))
E.s2.n1 = mean(s2.n1)
## Pembagi (n)
s2.n = s2.n1*(10-1)/10
E.s2.n = mean(s2.n)
#Sebaran Eksponensial
set.seed(888)
n = 10
populasi2 = rexp(20)
sigma2.exp = var(populasi2)*(20-1)/20
library(probs)
sampel_exp = urnsamples(populasi2, size = 10, replace = F, ordered = F)
## Pembagi (n-1)
s2.n1.exp = matrix(apply(sampel_exp, 1, var))
E.s2.n1.exp = mean(s2.n1.exp)
## Pembagi (n)
s2.n.exp = s2.n1.exp*(10-1)/10
E.s2.n.exp = mean(s2.n.exp)
hasil = data.frame( "." = c("ragam populasi","nilai harapan ragam contoh (n-1)","nilai harapan ragam contoh (n)"),
"Sebaran Normal" = c(sigma2, E.s2.n1, E.s2.n),"Sebaran Eksponensial" = c(sigma2.exp, E.s2.n1.exp, E.s2.n.exp))
hasil
## . Sebaran.Normal Sebaran.Eksponensial
## 1 ragam populasi 1.298573 1.750903
## 2 nilai harapan ragam contoh (n-1) 1.366919 1.843056
## 3 nilai harapan ragam contoh (n) 1.230227 1.658750
Kesimpulan :
Berdasarkan output di atas, dengan skenario populasi terhingga dan dua sebaran yang berbeda, nilai harapan ragam contoh dengan penyebut \(n-1\) harusnya lebih mendekati nilai parameter daripada nilai harapan ragam contoh dengan penyebut \(n\). Hal ini menunjukkan bahwa penduga tak bias bagi ragam populasi (\(\sigma^2\)) adalah \(s^2\) dengan penyebut adalah \(n-1\), meskipun masih terdapat celah perbedaan (tidak 100% tak berbias).
Pada populasi terhingga, percontohan bersifat unik artinya tidak ada percontohan yang berulang sehingga dapat dipastikan kombinasi contoh hanya muncul satu kali. Jika pada penduga mean nilai parameter dan statistik penduga tak bias sama persis, pada penduga ragam ini hal tersebut tidak berlaku karena perhitungan ragam populasi perlu dikali dengan faktor koreksi \(\frac{(n−1)}{n}\) sedangkan perhitungan ragam contoh (dengan penyebut \(n−1\)) tidak perlu mengalikan dengan faktor koreksi.
Pada populasi tak hingga, percontohan yang terambil secara acak merupakan sebagian dari keseluruhan kemungkinan percontohan yang ada. Namun, dalam hal ini nilai parameter ragam dan nilai harapan penduga tak biasnya tidak sama persis, hanya mendekati.
Apa arti dari SK 95%?
SK 95% bagi \(θ\) : Kita percaya 95% bahwa selang \(a\) sampai \(b\) memuat nilai parameter \(θ\) yang sebenarnya.
SK 95% : Jika kita melakukan 100 kali percontohan acak dan setiap percontohan acak dibuat selang kepercayaannya, maka dari 100 SK yang terbentuk, ada 95 SK yang mencakup parameter sedangkan sisanya sebanyak 5 SK tidak mencakup parameter.
Bangkitkan n buah data dari sebaran yang sudah ditentukan
Hitung nilai \(\bar{x}\)r dan \(s^2\)
Hitung \(\sigma^2\) dan buat selang kepercayaan \((1−α)\)%
Hitung proporsi banyaknya selang kepercayaan yang memuat \(μ\), bandingkan dengan \((1−α)\)
n1 = 10
k = 100 #ulangan
alpha = 0.05
mu = 50
std = 10
set.seed(123)
sampel.norm1 = matrix(rnorm(n1*k,mu,std),k)
xbar.norm1 = apply(sampel.norm1,1,mean)
s.norm1 = apply(sampel.norm1,1,sd)
SE.norm1 = s.norm1/sqrt(n1)
z.norm1 = qnorm(1-alpha/2)
SK.norm1 = (xbar.norm1-z.norm1*SE.norm1 < mu & mu < xbar.norm1+z.norm1*SE.norm1)
x.norm1 = sum(SK.norm1)/k #proporsi banyaknya SK yang memuat mu
n2 = 30
k = 100 #ulangan
alpha = 0.05
mu = 50
std = 10
set.seed(123)
sampel.norm2 = matrix(rnorm(n2*k,mu,std),k)
xbar.norm2 = apply(sampel.norm2,1,mean)
s.norm2 = apply(sampel.norm2,1,sd)
SE.norm2 = s.norm2/sqrt(n2)
z.norm2 = qnorm(1-alpha/2)
SK.norm2 = (xbar.norm2-z.norm2*SE.norm2 < mu & mu < xbar.norm2+z.norm2*SE.norm2)
x.norm2 = sum(SK.norm2)/k #proporsi banyaknya SK yang memuat mu
n3 = 100
k = 100 #ulangan
alpha = 0.05
mu = 50
std = 10
set.seed(123)
sampel.norm3 = matrix(rnorm(n3*k,mu,std),k)
xbar.norm3 = apply(sampel.norm3,1,mean)
s.norm3 = apply(sampel.norm3,1,sd)
SE.norm3 = s.norm3/sqrt(n3)
z.norm3 = qnorm(1-alpha/2)
SK.norm3 = (xbar.norm3-z.norm3*SE.norm3 < mu & mu < xbar.norm3+z.norm3*SE.norm3)
x.norm3 = sum(SK.norm3)/k #proporsi banyaknya SK yang memuat mu
hasil = data.frame("n" =c(10,30,100),"Ketepatan SK Sebaran Normal"=c(x.norm1, x.norm2, x.norm3))
hasil
## n Ketepatan.SK.Sebaran.Normal
## 1 10 0.93
## 2 30 0.93
## 3 100 0.96
matplot(rbind (xbar.norm2-z.norm2*SE.norm2, xbar.norm2+z.norm2*SE.norm2), rbind(1:k,1:k), col=ifelse(SK.norm2,"blue","red"), type = "l", lty = 1,main='Selang Kepercayaan 95% (n=100)', xlab='SK', ylab='banyak ulangan')
abline(v=mu)
Gambar ini adalah hasil dari simulasi selang kepercayaan 95% untuk rata-rata populasi (\(\mu\) =50) dengan ukuran sampel \(n=100\).
Simulasi dilakukan sebanyak \(k=100\) kali, sehingga ada 100 selang kepercayaan yang dihasilkan.
Tujuan gambar ini adalah untuk memvisualisasikan seberapa sering selang kepercayaan berhasil menangkap nilai rata-rata populasi (\(\mu\)).
Garis vertikal di \(x=50\) mengartikan nilai rata-rata populasi (\(\mu=50\)) . Selang kepercayaan yang berhasil menangkap \(\mu\) akan melintasi garis ini.
Garis Horizontal mengartikan bahwa setiap garis mewakili selang kepercayaan dari satu sampel. Jika garis tersebut melintasi garis vertikal di \(x=50\) , artinya selang kepercayaan tersebut berhasil menangkap \(\mu\).
Semakin besar ukuran contoh (\(n\)), maka proporsi SK yang memuat nilai parameter semakin mendekati kebenaran (\(1-\alpha\))
# Interval Kepercayaan
library(car)
## Warning: package 'car' was built under R version 4.4.3
## 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,92 hingga 7631,88.
?urnsamples
## starting httpd help server ... done