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}\).
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.
# 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
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
Berdasarkan output di atas, contoh acak yang diambil dari
populasi dengan mean = μ
dan ragam = σ2, maka semakin besar ukuran contoh, mean dari x¯
akan semakin mendekati μ dan ragamnya semakin mendekati σ2n
Dilihat dari histogramnya pun, semakin besar ukuran contoh, kurva mendekati sebaran normal.
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
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
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.
# 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
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 (σ²)
adalah s² dengan penyebut (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 ((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.
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)
# 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 ]