Teorema Limit Pusat

Teorema Limit Pusat menyatakan bahwa rata-rata dari contoh acak yang berasal dari sebaran apapun memiliki sebaran normal jika ukuran contohnya sangat besar. Jika contoh acak diambil dari populasi dengan mean \(\mu\) dan ragam \(\sigma^2\), maka semakin besar ukuran contoh, sebaran dari \(\bar{x}\) akan semakin mendekati sebaran normal dengan mean \(\mu\) dan ragam \(\frac{\sigma^2}{n}\).

Algoritma

  1. Tentukan ukuran contoh (\(n\))
  2. Tentukan sebaran data
  3. Ulang sebanyak \(k\) kali:
    • Ambil \(n\) contoh acak dari sebaran data yang sudah ditentukan
    • Hitung rataannya lalu simpan
  4. Periksa sebaran dari \(k\) rataan

Aplikasi di R: Hampiran Normal Terhadap Geometrik

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
set.seed(123)
populasi    = rgeom(20, 0.1)

n1          = 2
contoh_geo1 = urnsamples(populasi, size = 2, replace = F, ordered = F)
mean_geo1   = matrix(apply(contoh_geo1, 1, mean))

n2          = 5
contoh_geo2 = urnsamples(populasi, size = 5, replace = F, ordered = F)
mean_geo2   = matrix(apply(contoh_geo2, 1, mean))

n3          = 10
contoh_geo3 = urnsamples(populasi, size = 10, replace = F, ordered = F)
mean_geo3   = matrix(apply(contoh_geo3, 1, mean))

hist(mean_geo1,main = paste("Hampiran Normal Terhadap Geometrik (n = 2)"),xlab = "xbar")

hist(mean_geo2,main = paste("Hampiran Normal Terhadap Geometrik (n = 5)"),xlab = "xbar")

hist(mean_geo3,main = paste("Hampiran Normal Terhadap Geometrik (n = 10)"),xlab = "xbar")

Tujuannya adalah untuk menunjukkan bagaimana distribusi rata-rata sampel \(\bar{x}\) dari distribusi geometrik mendekati distribusi normal ketika ukuran sampel (\(n\)) meningkat.

Hampiran Normal Terhadap Geometrik

# Load library
library(probs)

# Set seed for reproducibility
set.seed(123)

# Create exponential population
populasi = rexp(20)

# Function to generate samples and calculate means
generate_means <- function(n, populasi) {
  contoh = urnsamples(populasi, size = n, replace = FALSE, ordered = FALSE)
  return(matrix(apply(contoh, 1, mean)))
}

# Sample sizes
n1 = 2
n2 = 5
n3 = 10

# Generate sample means
mean_exp1 = generate_means(n1, populasi)
mean_exp2 = generate_means(n2, populasi)
mean_exp3 = generate_means(n3, populasi)

# Set layout for multiple plots and adjust margins
par(mfrow = c(3,1), mar = c(4,4,2,1))  # Adjust margins to avoid errors

# Plot histograms
hist(mean_exp1, main = "Hampiran Normal Terhadap Eksponensial (n = 2)", xlab = "xbar", col = "skyblue", border = "black")
hist(mean_exp2, main = "Hampiran Normal Terhadap Eksponensial (n = 5)", xlab = "xbar", col = "lightgreen", border = "black")
hist(mean_exp3, main = "Hampiran Normal Terhadap Eksponensial (n = 10)", xlab = "xbar", col = "salmon", border = "black")

#### Hampiran Normal Terhadap Seragam

# Load library
library(probs)

# Set seed for reproducibility
set.seed(123)

# Create uniform population
populasi = runif(20)

# Function to generate samples and calculate means
generate_means <- function(n, populasi) {
  contoh = urnsamples(populasi, size = n, replace = FALSE, ordered = FALSE)
  return(matrix(apply(contoh, 1, mean)))
}

# Sample sizes
n1 = 2
n2 = 5
n3 = 10

# Generate sample means
mean_unif1 = generate_means(n1, populasi)
mean_unif2 = generate_means(n2, populasi)
mean_unif3 = generate_means(n3, populasi)

# Adjust plot layout and margins to prevent error
par(mfrow = c(3,1), mar = c(3,3,2,1))  # Mengurangi margin atas & kiri

# Plot histograms
hist(mean_unif1, main = "Hampiran Normal Terhadap Seragam (n = 2)", xlab = "x̄", col = "skyblue", border = "black")
hist(mean_unif2, main = "Hampiran Normal Terhadap Seragam (n = 5)", xlab = "x̄", col = "lightgreen", border = "black")
hist(mean_unif3, main = "Hampiran Normal Terhadap Seragam (n = 10)", xlab = "x̄", col = "salmon", border = "black")

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 dari histogram yang mana ketika n semakin besar akan semakin cenderung membentuk kurva normal

Sebaran Percontohan Sebaran Normal

par(mfrow = c(3,1), mar = c(4,4,2,1))  # Mengurangi margin agar tidak terlalu besar
library(probs)
set.seed(1299)
populasi     = rnorm(20,5,sqrt(12)) # Membangkitkan bil. acak ~ Normal (miu = 5, sigma2 =12) 

n1           = 3
contoh_norm1 = urnsamples(populasi, size = 3, replace = F, ordered = F)
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 = 4, replace = F, ordered = F)
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 = 15, replace = F, ordered = F)
mean_norm3   = matrix(apply(contoh_norm3, 1, mean))
mean_xbar3   = mean(mean_norm3)
var_xbar3    = var(mean_norm3)

hist(mean_norm1, main = "(n = 3)", xlab = "xbar")
hist(mean_norm2, main = "(n = 4)", xlab = "xbar")
hist(mean_norm3, main = "(n = 15)", xlab = "xbar")

hasil        = data.frame("."=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
##        . 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

Kesimpulan

Ketakbiasan Penduga Parameter

x¯ adalah penduga tak bias bagi μ, jika E(x¯) = μ
s2 adalah penduga tak bias bagi σ2, jika E(s2) = σ2

Maka dalam hal ini kita akan membuktikan apakah benar nilai harapan penduga parameter sama dengan nilai parameternya

Algoritme

  1. Tentukan sebaran yang akan digunakan
  2. Ulangi sebanyak k kali
  3. Bangkitkan n buah data dari sebaran yang sudah ditentukan
  4. Hitung nilai x¯ dan s2
  5. Hitung rata-rata dari x¯ dan s2, kemudian bandingkan dengan μ dan σ2

Aplikasi di R

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 μ
dan nilai harapan rataan contoh (x¯) mendekati sama (pada populasi tak hingga) bahkan sama persis dengan nilai parameter rataan populasi μ
(pada populasi terhingga) sehingga penduga tak bias bagi μ adalah (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

Selang Kepercayaan

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.

Algoritme

  1. Tentukan sebaran yang akan digunakan.
  2. Ulangi sebanyak k kali.
  3. Bangkitkan n buah data dari sebaran yang sudah ditentukan.
  4. Hitung nilai x¯ dan s².
  5. Hitung σ²x¯ dan buat selang kepercayaan (1−α)%.
  6. Hitung proporsi banyaknya selang kepercayaan yang memuat μ, bandingkan dengan (1−α).

Aplikasi di R

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)

Simulasi Selang Kepercayaan 95% untuk Rata-rata Populasi

  • Gambar ini menunjukkan hasil simulasi selang kepercayaan 95% untuk rata-rata populasi (μ = 50) dengan ukuran sampel n = 100.
  • Simulasi dilakukan sebanyak k = 100 kali, menghasilkan 100 selang kepercayaan.
  • Tujuan gambar adalah memvisualisasikan seberapa sering selang kepercayaan berhasil menangkap nilai rata-rata populasi (μ).
  • Garis vertikal di x = 50 merepresentasikan nilai rata-rata populasi (μ = 50).
  • Selang kepercayaan yang melintasi garis vertikal berarti berhasil menangkap μ.
  • Garis horizontal menunjukkan setiap selang kepercayaan dari satu sampel.
  • Jika garis horizontal melintasi garis vertikal di x = 50, selang kepercayaan tersebut mencakup μ.
  • Semakin besar ukuran sampel (n), semakin tinggi proporsi selang kepercayaan yang memuat nilai parameter mendekati (1 - α).
# Interval Kepercayaan
library(car)
## Loading required package: carData
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.