Estimasi Distribusi dan Parameter Model

1. Teorema Limit Pusat (Central Limit Theorem / CLT)

Estimasi parameter adalah proses untuk menaksir nilai parameter populasi (seperti rata-rata μ atau standar deviasi σ) berdasarkan data sampel. Terdapat dua jenis:

Poin Estimasi: estimasi tunggal dari parameter (misal: rata-rata sampel = estimator rata-rata populasi).

Interval Estimasi: rentang nilai di mana parameter diyakini berada dengan tingkat keyakinan tertentu.

- Rata-rata dari contoh acak yang berasal dari sebaran apapun memiliki sebaran normal jika ukurancontohnya sangat besar

- Jika contoh acak diambil dari populasi dengan mean dan ragam , maka semakin besar ukurancontoh, sebaran dari akan semakin mendekati sebaran normal dengan mean dan ragam

Algoritma

1. Tentukan ukuran contoh ( )

2. Tentukan sebaran data

3. Ulang kali

- Ambil contoh acak dari sebaran data yang sudah ditentukan
- Hitung rataannya lalu simpan

4. Periksa sebaran dari rataan

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

a.Hampiran Normal terhadap Distribusi Geometrik

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.

versi 2

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)) 

b. Distribusi Eksponensial

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))

c. Distribusi Seragam

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

versi 2

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))

Sebaran Percontohan Sebaran Normal

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 Parameter

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.

Algoritme Simulasi Ketakbiasan

Untuk menguji apakah suatu penduga bersifat tak bias, langkah-langkah berikut dapat dilakukan:

  1. Tentukan Distribusi dan Parameter Populasi Misalnya, gunakan distribusi Normal dengan rata-rata 10 dan simpangan baku 2.

  2. Lakukan Simulasi Sebanyak k Kali

    • Untuk setiap iterasi:
    • Bangkitkan sampel acak berukuran n dari distribusi yang telah ditentukan.
    • Hitung penduga dari sampel tersebut (misalnya, rata-rata sampel).
  3. Hitung Rata-rata Penduga

    • Setelah k iterasi, hitung rata-rata dari semua penduga yang diperoleh.
    • Bandingkan rata-rata ini dengan nilai parameter sebenarnya untuk menilai ketakbiasan.

Aplikasi di R

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

Kesimpulan :

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.

Penerapan ketakbiasan penduga (Ragam)

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

Kesimpulan

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%

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.​

Simulasi di R

Untuk memahami konsep ini lebih lanjut, kita dapat melakukan simulasi di R dengan langkah-langkah sebagai berikut:​

  1. Menentukan Distribusi: Pilih distribusi yang akan digunakan, misalnya distribusi normal.​

  2. Melakukan Simulasi: Ulangi proses berikut sebanyak k kali:​

    • Ambil n data acak dari distribusi yang telah ditentukan.​
    • Hitung rata-rata dan simpangan baku dari sampel.​
    • Buat selang kepercayaan 95% untuk rata-rata sampel.​
  3. 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")

Visualisasi Selang Kepercayaan 95%

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.