Ketakbiasan Penduga \(\mu\) dan \(\sigma^2\)

Penduga dikatakan tidak bias jika nilai harapan dari penduga tersebut sama dengan parameter populasi yang diestimasi.

  • \(\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\)

Namun, penduga \(s^2\) dapat menjadi penduga bisa saja menjadi penduga berbias bagi \(\sigma^2\) jika salah menggunakan rumus untuk menghitung varians sample atau populasi. Oleh karena itu, kita harus membedakan perhitungan varians untuk sampel dan populasi.

Algoritma

  1. Tentukan sebaran yang akan digunakan.
  2. Ulangi sebanyak \(k\) kali:
    • Bangkitkan \(n\) buah data dari sebaran yang sudah ditentukan.
    • Hitung nilai \(\bar{x}\) dan varians sampel tanpa penyesuaian (\(s^2\)) serta varians sampel dengan penyesuaian (\(s^2_{koreksi}\)).
    • Hitung rata-rata dari \(\bar{x}\) dan varians-varians tersebut, kemudian bandingkan dengan \(\mu\) dan \(\sigma^2\).

Aplikasi di R

set.seed(123)
n = 10  # ukuran sampel
k = 1000 # jumlah ulangan
populasi = rnorm(10000, 25, sqrt(5)) # populasi menyebar normal
miu = mean(populasi) # nilai rata-rata populasi

# Mengambil sampel dan menghitung rata-rata sampel
sampel = matrix(NA, k, n)
for (i in 1:k) sampel[i,] = sample(populasi, n)
xbar = apply(sampel, 1, mean)
E.xbar = mean(xbar) # estimasi harapan dari xbar

# Output hasil
cat("Mean Populasi:", miu, "\n")
## Mean Populasi: 24.9947
cat("E(x̄) dari Sampel:", E.xbar, "\n")
## E(x̄) dari Sampel: 24.97598
set.seed(123)
n = 10  # ukuran sampel
k = 1000 # jumlah ulangan
populasi = rnorm(10000, 25, sqrt(5)) # populasi normal dengan mean=25, varians=5
sigma2 = var(populasi) * (length(populasi) - 1) / length(populasi) # varians populasi

# Mengambil sampel dan menghitung varians tanpa koreksi (bias)
sampel = matrix(NA, k, n)
for (i in 1:k) sampel[i,] = sample(populasi, n)

s2_biased = apply(sampel, 1, function(x) var(x) * (length(x) - 1) / length(x)) # Varians menggunakan rumus varians populasi
E.s2_biased = mean(s2_biased) # Ekspektasi varians tanpa koreksi

# Mengambil sampel dan menghitung varians dengan koreksi (tak bias)
s2_unbiased = apply(sampel, 1, var) # Varians dengan koreksi (n-1)
E.s2_unbiased = mean(s2_unbiased) # Ekspektasi varians dengan koreksi

# Output hasil
cat("Varians Populasi:", sigma2, "\n")
## Varians Populasi: 4.985877
cat("E(s^2) (bias):", E.s2_biased, "\n")
## E(s^2) (bias): 4.535246
cat("E(s^2) dengan koreksi (tak bias):", E.s2_unbiased, "\n")
## E(s^2) dengan koreksi (tak bias): 5.039162

Dari hasil di atas, kita bisa melihat bahwa:

  • \(\bar{x}\) tetap merupakan penduga tak bias bagi \(\mu\).

  • \(s^2\), yaitu varians sampel tanpa penyesuaian, memiliki nilai harapan lebih kecil dari \(\sigma^2\), yang berarti penduga ini bias.

  • \(s^2_{koreksi}\), yaitu varians sampel dengan penyesuaian \(n-1\) di penyebutnya, memiliki nilai harapan yang lebih mendekati \(\sigma^2\), sehingga merupakan penduga tak bias bagi varians populasi.

Kesimpulan

Penduga \(s^2\) yang dihitung dengan penyebut \(n\) merupakan penduga bias bagi varians populasi, karena \(E(s^2) < \sigma^2\). Oleh karena itu, kita menggunakan penyesuaian dengan penyebut \(n-1\) dalam perhitungan \(s^2_{koreksi}\), yang menjadikannya penduga tak bias bagi varians populasi.

Ketakbiasan Penduga Least-Square dalam Regresi Linier

Penduga \(b = (X'X)^{-1} X'y\) adalah penduga tak bias bagi \(\beta\) jika \(E(\varepsilon) = 0\).

Algoritma

  1. Tentukan \(\beta_0\) dan \(\beta_1\).
  2. Ulangi sebanyak \(k\) kali:
    • Bangkitkan \(n\) buah data \(X\) dari suatu sebaran tertentu.
    • Bangkitkan \(\varepsilon\) yang menyebar normal dengan nilai tengah 0 dan ragam \(\sigma^2_\varepsilon\).
    • Hitung \(b_0\) dan \(b_1\).
    • Hitung rata-rata dari \(b_0\) dan \(b_1\), bandingkan dengan \(\beta_0\) dan \(\beta_1\).

Aplikasi di R

set.seed(123)
n = 50 # ukuran sampel
k = 1000 # ulangan
beta       = c(8,20) # beta_0 = 8 dan beta_1 = 20
varerror = 3

betaduga   = matrix(NA,k,2)
for (i in 1:k){
  x = runif(n)*100 #membangkitan n bilangan seragam yang meneybar uniform [0,100]
  epsilon = rnorm(n,0,sqrt(varerror))
  X = cbind(1,x)
  y = X %*% beta + epsilon
  betaduga[i,] = solve (t(X) %*% X) %*% (t(X) %*% y)
}

rataanbetaduga = apply(betaduga,2,mean)
names(rataanbetaduga) = c("b0","b1")
rataanbetaduga
##        b0        b1 
##  8.022609 19.999690

Dari hasil di atas, nilai harapan dari \(b_0\) dan \(b_1\) sudah mendekati nilai parameter \(\beta_0\) dan \(\beta_1\), sehingga dapat dikatakan bahwa:

  • \(b\) merupakan penduga tak bias bagi \(\beta\).

Selang Kepercayaan

Pengertian

Selang kepercayaan 95% untuk \(\theta\) berarti kita percaya 95% bahwa selang \(a\) sampai \(b\) memuat nilai parameter \(\theta\) yang sebenarnya.

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.

Algoritma

  1. Tentukan sebaran yang akan digunakan.
  2. Ulangi sebanyak \(k\) kali:
    • Bangkitkan \(n\) buah data \(X\) dari suatu sebaran tertentu.
    • Hitung nilai \(\bar{x}\) dan \(s^2\).
    • Hitung \(\sigma^2_{\bar{x}}\) dan buat selang kepercayaan \((1-\alpha)\).
    • Hitung proporsi banyaknya selang kepercayaan yang memuat \(\mu\), bandingkan dengan \((1-\alpha)\).

Aplikasi di R

n    = 60         # Ukuran sampel dalam setiap ulangan  
k    = 100        # Jumlah ulangan atau simulasi  
alpha  = 0.05     # Taraf signifikansi (α) untuk selang kepercayaan  
mu   = 50         # Rata-rata populasi  
std  = 10         # Standar deviasi populasi  

sampel = matrix(rnorm(n*k, mu, std), k)  # Membuat matriks berisi k baris, dengan n kolom dari distribusi normal(µ, σ)  
xbar = apply(sampel, 1, mean)            # Menghitung rata-rata sampel untuk setiap baris (setiap ulangan)  
s    = apply(sampel, 1, sd)              # Menghitung standar deviasi sampel untuk setiap ulangan  
SE   = s / sqrt(n)                       # Menghitung Standard Error (SE) dari rata-rata sampel  

z    = qnorm(1 - alpha / 2)              # Nilai kritis distribusi normal untuk taraf signifikansi alpha  
SK   = (xbar - z * SE < mu & mu < xbar + z * SE)  # Menghitung apakah µ termasuk dalam selang kepercayaan  

sum(SK)/k # proporsi banyaknya SK yang memuat mu
## [1] 0.96
# Membuat selang kepercayaan dari setiap iterasi simulasi
matplot(rbind(xbar-z*SE, xbar+z*SE), rbind(1:k,1:k), col=ifelse(SK,"blue","red"), type = "l", lty = 1, 
        main='Selang Kepercayaan', xlab='SK', ylab='Banyak Ulangan')
abline(v=mu)

Hasil simulasi menunjukkan bahwa sekitar 95% selang kepercayaan yang dibentuk dari sampel acak berhasil mencakup nilai rata-rata populasi \((\mu)\). Hal ini sesuai dengan konsep selang kepercayaan, di mana dalam jangka panjang, sekitar \(( (1 - \alpha) \times 100\% )\) dari selang yang dibentuk seharusnya memuat parameter populasi yang sebenarnya. Perbedaan kecil antara hasil empiris dan nilai teoritis dapat disebabkan oleh variasi acak dalam pengambilan sampel, namun secara umum, metode ini telah menunjukkan validitasnya dalam estimasi parameter populasi

Slide Bunda Erfi

Bagian 1: Pengaruh Perubahan Probabilitas pada Sebaran Binomial

Pada bagian ini, kita akan melihat bagaimana pengaruh perubahan probabilitas \(p\) terhadap sebaran Binomial, dengan ukuran sampel \(n\) tetap.

Langkah-langkah:

  1. Tentukan ukuran sampel \(n\) yang tetap, misalnya \(n = 50\).
  2. Variasikan nilai \(p\) pada sebaran Binomial, misalnya \(p = 0.2, 0.4, 0.6, 0.8\).
  3. Simulasikan data menggunakan fungsi standar rbinom() di R.
  4. Gambarkan histogram dan kurva density untuk masing-masing nilai \(p\) menggunakan fungsi dasar.
  5. Gabungkan hasilnya menggunakan par(mfrow) untuk menampilkan plot dalam satu tampilan.

1.1. Menentukan Ukuran Sampel dan Probabilitas

# Set seed untuk hasil yang dapat direproduksi
set.seed(123)

# Tentukan ukuran sampel (n) yang tetap
n = 50

# Tentukan berbagai nilai p
p_values = c(0.2, 0.4, 0.6, 0.8)

Penjelasan:

  • Kita menetapkan \(n = 50\) untuk ukuran sampel yang tetap.

  • Nilai \(p\) akan divariasikan, dimulai dari 0.2 hingga 0.8.

1.2. Simulasi Data Binomial untuk Setiap Nilai p

# Simulasikan data binomial untuk setiap nilai p
simulations = list()
for (p in p_values) {
  simulations[[as.character(p)]] = rbinom(1000, size = n, prob = p)
}

Penjelasan:

  • Menggunakan rbinom(), kita menghasilkan 1000 data acak untuk setiap nilai \(p\).

  • Hasil simulasi ini disimpan dalam list simulations.

1.3. Membuat Plot Terpisah untuk Setiap Nilai p

# Mengatur agar plot ditampilkan dalam beberapa area (4 plot dalam 1 tampilan)
par(mfrow=c(2,2))

# Menampilkan histogram untuk setiap nilai p
for (i in 1:length(p_values)) {
  hist(simulations[[as.character(p_values[i])]], 
       probability = TRUE, 
       col=rgb(1,0,0,0.5), 
       xlim=c(0, n), 
       main=paste("Sebaran Binomial (p = ", p_values[i], ")", sep=""), 
       xlab="Jumlah Keberhasilan", 
       ylab="Kepadatan", 
       xaxp=c(0, n, n/5), 
       ylim=c(0, 0.2))
  
  # Menambahkan garis density
  lines(density(simulations[[as.character(p_values[i])]]), col="blue", lwd=2)
}

Penjelasan:

  • Fungsi par(mfrow=c(2,2)) digunakan untuk membuat 4 plot dalam satu tampilan (2 baris dan 2 kolom).

  • Untuk setiap nilai \(p\), kita menggambar histogram dengan menambahkan garis density yang menunjukkan distribusi data.

  • Histogram menunjukkan frekuensi, sementara kurva density menggambarkan distribusi data secara lebih halus.


Bagian 2: Pengaruh Perubahan Ukuran Sampel (n) pada Sebaran Binomial

Sekarang kita akan melihat bagaimana perubahan ukuran sampel \(n\) mempengaruhi sebaran Binomial, dengan nilai \(p\) tetap. Misalnya kita akan menggunakan \(p = 0.5\) dan mengubah ukuran sampel dari \(n = 20\) hingga \(n = 100\).

Langkah-langkah:

  1. Tentukan nilai \(p = 0.5\) yang tetap.
  2. Variasikan ukuran sampel \(n\) (misalnya \(n = 20, 50, 100\)).
  3. Simulasikan data menggunakan fungsi standar rbinom() di R.
  4. Gambarkan histogram dan kurva density untuk masing-masing ukuran sampel menggunakan fungsi dasar.
  5. Gabungkan hasilnya menggunakan par(mfrow).

2.1. Menentukan Ukuran Sampel dan Probabilitas

# Set seed untuk hasil yang dapat direproduksi
set.seed(123)

# Tentukan nilai p yang tetap
p = 0.5

# Tentukan berbagai nilai n
n_values = c(20, 50, 100)

Penjelasan:

  • Kita menetapkan \(p = 0.5\) yang tetap.

  • Ukuran sampel \(n\) akan divariasikan, dengan nilai \(n = 20, 50, 100\).

2.2. Simulasi Data Binomial untuk Setiap Nilai n

# Simulasikan data binomial untuk setiap nilai n
simulations_n = list()
for (n in n_values) {
  simulations_n[[as.character(n)]] = rbinom(1000, size = n, prob = p)
}

Penjelasan:

  • Menggunakan rbinom(), kita menghasilkan 1000 data acak untuk setiap ukuran sampel \(n\).

  • Hasil simulasi ini disimpan dalam list simulations_n.

2.3. Membuat Plot Terpisah untuk Setiap Nilai n

# Mengatur agar plot ditampilkan dalam beberapa area (3 plot dalam 1 tampilan)
par(mfrow=c(1,3))

# Menampilkan histogram untuk setiap nilai n
for (i in 1:length(n_values)) {
  hist(simulations_n[[as.character(n_values[i])]], 
       probability = TRUE, 
       col=rgb(1,0,0,0.5), 
       xlim=c(0, max(n_values)), 
       main=paste("Sebaran Binomial (n = ", n_values[i], ")", sep=""), 
       xlab="Jumlah Keberhasilan", 
       ylab="Kepadatan", 
       xaxp=c(0, max(n_values), max(n_values)/5), 
       ylim=c(0, 0.2))
  
  # Menambahkan garis density
  lines(density(simulations_n[[as.character(n_values[i])]]), col="blue", lwd=2)
}

Penjelasan:

  • Dengan par(mfrow=c(1,3)), kita mengatur agar ada 3 plot dalam satu baris (tiga kolom).

  • Untuk setiap ukuran sampel \(n\), kita menggambar histogram dan kurva density yang menunjukkan distribusi data.

Bagian 3: Pengaruh Perubahan Probabilitas \(p\) pada Sebaran Binomial Negatif

Di bagian ini, kita akan melihat bagaimana perubahan probabilitas \(p\) mempengaruhi distribusi Binomial Negatif, dengan \(r\) tetap.

Langkah-langkah:

  1. Tetapkan \(r\) tetap (misalnya \(r = 10\)).
  2. Variasikan nilai \(p\) (misalnya \(p = 0.2, 0.4, 0.6, 0.8\)).
  3. Simulasikan data menggunakan fungsi rnbinom().
  4. Gambarkan histogram dan kurva density untuk masing-masing nilai \(p\).
  5. Gabungkan hasilnya menggunakan par(mfrow).

3.1. Menentukan Parameter dan Simulasi Data Binomial Negatif

# Set seed untuk hasil yang dapat direproduksi
set.seed(123)

# Tentukan nilai r tetap
r = 10

# Tentukan berbagai nilai p
p_values_neg = c(0.2, 0.4, 0.6, 0.8)

# Simulasikan data binomial negatif untuk setiap nilai p
simulations_p = list()
for (p in p_values_neg) {
  simulations_p[[as.character(p)]] = rnbinom(1000, size = r, prob = p)
}

Penjelasan:

  • Kita tetap menetapkan \(r = 10\) dan memvariasikan nilai \(p\) pada nilai \(0.2, 0.4, 0.6, 0.8\).

  • Menggunakan rnbinom(), kita mensimulasikan 1000 data acak untuk setiap nilai \(p\).

3.2. Membuat Plot Terpisah untuk Setiap Nilai \(p\)

# Mengatur agar plot ditampilkan dalam beberapa area (4 plot dalam 1 tampilan)
par(mfrow=c(2,2))

# Menampilkan histogram untuk setiap nilai p
for (i in 1:length(p_values_neg)) {
  hist(simulations_p[[as.character(p_values_neg[i])]], 
       probability = TRUE, 
       col=rgb(1,0,0,0.5), 
       xlim=c(0, 100), 
       main=paste("Sebaran Binomial Negatif (p = ", p_values_neg[i], ")", sep=""), 
       xlab="Jumlah Percobaan", 
       ylab="Kepadatan", 
       xaxp=c(0, 100, 20), 
       ylim=c(0, 0.2))
  
  # Menambahkan garis density
  lines(density(simulations_p[[as.character(p_values_neg[i])]]), col="blue", lwd=2)
}

Penjelasan:

  • Fungsi par(mfrow=c(2,2)) digunakan untuk menampilkan 4 plot dalam satu tampilan (2 baris dan 2 kolom).

  • Setiap plot menggambarkan distribusi Binomial Negatif untuk nilai \(p = 0.2, 0.4, 0.6, 0.8\), dengan histogram dan kurva density.


Bagian 4: Pengaruh Perubahan \(r\) pada Sebaran Binomial Negatif

Di bagian ini, kita akan melihat bagaimana perubahan jumlah keberhasilan \(r\) mempengaruhi distribusi Binomial Negatif, dengan \(p\) tetap.

Langkah-langkah:

  1. Tetapkan \(p\) tetap (misalnya \(p = 0.5\)).
  2. Variasikan nilai \(r\) (misalnya \(r = 5, 10, 20\)).
  3. Simulasikan data menggunakan fungsi rnbinom().
  4. Gambarkan histogram dan kurva density untuk masing-masing nilai \(r\).
  5. Gabungkan hasilnya menggunakan par(mfrow).

4.1. Menentukan Parameter dan Simulasi Data Binomial Negatif

# Set seed untuk hasil yang dapat direproduksi
set.seed(123)

# Tetapkan nilai p tetap
p = 0.5

# Tentukan berbagai nilai r
r_values = c(2, 19, 49)

# Simulasikan data binomial negatif untuk setiap nilai r
simulations_r = list()
for (r in r_values) {
  simulations_r[[as.character(r)]] = rnbinom(1000, size = r, prob = p)
}

Penjelasan:

  • Kita menetapkan \(p = 0.5\) yang tetap dan memvariasikan nilai \(r\) pada nilai \(5, 10, 20\).

  • Menggunakan rnbinom(), kita mensimulasikan 1000 data acak untuk setiap nilai \(r\).

4.2. Membuat Plot Terpisah untuk Setiap Nilai \(r\)

# Mengatur agar plot ditampilkan dalam beberapa area (3 plot dalam 1 tampilan)
par(mfrow=c(1,3))

# Menampilkan histogram untuk setiap nilai r
for (i in 1:length(r_values)) {
  hist(simulations_r[[as.character(r_values[i])]], 
       probability = TRUE, 
       col=rgb(1,0,0,0.5), 
       xlim=c(0, 100), 
       main=paste("Sebaran Binomial Negatif (r = ", r_values[i], ")", sep=""), 
       xlab="Jumlah Percobaan", 
       ylab="Kepadatan", 
       xaxp=c(0, 100, 20), 
       ylim=c(0, 0.2))
  
  # Menambahkan garis density
  lines(density(simulations_r[[as.character(r_values[i])]]), col="blue", lwd=2)
}

Penjelasan:

  • Dengan par(mfrow=c(1,3)), kita mengatur tampilan untuk menampilkan 3 plot dalam satu baris (tiga kolom).

  • Setiap plot menggambarkan distribusi Binomial Negatif untuk nilai \(r = 5, 10, 20\), dengan histogram dan kurva density.