Simulation to test the assumption of unbiasedness for the mean, median, and variance

Alfidhia Rahman NJ

2023-02-20

Soal

1. Mensimulasikan perbandingan ketakbiasan dari rata-rata contoh dan median contoh

2. Mensimulasikan perbandingan ketakbiasan ragam dengan pembagi n dan n-1

Jawaban No. 1

Untuk menjawab nomor satu, kita akan melakukan perbandingan ketakbiasan dari rata-rata contoh dan median contoh berdasarkan 2 jenis data, yaitu data yang menyebar simetris dan data Non-Simetris. Dalam hal ini, kita juga hanya akan menggunakan contoh (n) sebanyak 100.

Sebaran simetris yang digunakan adalah sebagai berikut:

  1. Sebaran Logistik

Sebaran logistik adalah sebaran peluang kontinu dalam teori peluang dan statistika. Sebaran ini memiliki dua parameter dan terdefinisi untuk semua bilangan real. Plot Probability Density Function (PDF)-nya simetris terhadap rata-rata. Fungsi cumulative density function (CDF)-nya adalah fungsi logistik yang digunakan dalam regresi logistik.

PDF nya sebagai berikut:

\[ f_X(x)=\frac {e^{-\frac{x-\mu}{s}}} {s(1+e^{-\frac{x-\mu}{s} })^2 },\text{ dengan } -\infty<x<\infty \]

dan CDF-nya sebagai berikut:

\[ F_X(x)= \int^x_{-\infty}xf_X(x)dx= \frac {1} {1+e^{-\frac{x-\mu}{s} }}, \text{ dengan } -\infty<x<\infty \]

  1. Sebaran Normal

PDF-nya sebagai berikut:

\[ f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{1}{2}(\frac{x-\mu}{\sigma})^2} \]

Kemudian, sebaran non-simetris yang akan digunakan adalah sebagai berikut:

  1. Sebaran Eksponensial

Sebaran eksponensial adalah sebaran probabilitas yang digunakan untuk menggambarkan waktu antara dua kejadian yang terjadi secara berurutan dalam suatu proses Poisson. Sebaran ini memiliki satu parameter, yaitu laju (\(\lambda\)), yang menunjukkan jumlah rata-rata kejadian dalam satu satuan waktu. Fungsi kepadatan probabilitas (PDF) dari sebaran eksponensial adalah:

\[ f(x) = \begin{cases} \lambda e^{-\lambda x} & \text{for } x \ge 0 \\ 0 & \text{otherwise} \end{cases} \]

  1. Sebaran Beta

Sebaran beta adalah sebaran probabilitas yang didefinisikan pada interval [0,1] dan memiliki dua parameter bentuk, yaitu \(\alpha\) dan \(\beta\). Sebaran ini sering digunakan untuk memodelkan proporsi atau persentase. Fungsi kepadatan probabilitas (PDF) dari sebaran beta adalah:

\[ f(x) = \frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)}x^{\alpha-1}(1-x)^{\beta-1} \]

Dilakukan pembangkitan untuk setiap sebaran sebanyak 10 juta observasi sebagai populasi yang nantinya akan diambil sampel untuk dijadikan sebaran contoh.

set.seed(15)
pop.logis = rlogis(10000000) #Logis(0,1)
pop.norm = rnorm(10000000) #Norm(0,1)
pop.exp = rexp(10000000) #Exp(1)
pop.beta = rbeta(10000000,5,1) #Beta(5,1)
par(mfrow=c(2,2))
hist(pop.logis); hist(pop.norm); hist(pop.exp); hist(pop.beta)

Dari visualisasi di atas, dapat terlihat bahwa sebaran setiap populasi berbeda-beda. Dengan nilai mean dan median setiap sebaran setiap populasi adalah sebagai berikut:

mean <- c(mean(pop.logis),mean(pop.norm),mean(pop.exp),mean(pop.beta))
median <- c(median(pop.logis),median(pop.norm),median(pop.exp),median(pop.beta))
sebaran <- c("Logistik", "Normal", "Eksponensial", "Beta")
data.frame(sebaran,mean,median)

Dapat terlihat bahwa nilai mean dan median cenderung sama ketika sebarannya simetris dan cenderung berbeda ketika sebarannya tidak simetris.

Ditentukan pula nilai n atau banyak sampel sebanyak 100 dan k atau banyak ulangan sebanyak 1000 untuk membuat sebaran contoh.

Sebaran Logistik

set.seed(15)
n=100;k=1000
logis = matrix(sample(pop.logis,n*k),k)
logis_mean = apply(logis,1,mean)
logis_median = apply(logis,1,median)
data.frame("\ "=c("Sampel", "Populasi"),mean=c(mean(logis_mean), mean(pop.logis)), median=c(mean(logis_median), median(pop.logis)))

Dapat terlihat dengan banyak sampel sebanyak 100 dengan ulangan sebanyak 1000 kali, nilai mean dan median sampel cukup mendekati nilai parameternya. Hal ini menunjukan bahwa mean dan median sampel tidak bias terhadap parameternya. Lebih jelasnya, dapat dilihat dari visualisasi sebaran contoh di bawah

par(mfrow=c(1,2))
hist(logis_mean); abline(v=mean(pop.logis), col="red"); legend("topleft", "Mean", lty=19,col="red")
hist(logis_median); abline(v=median(pop.logis), col="blue"); legend("topleft", "Median", lty=19,col="blue")

Gambar menunjukan mean dan median contoh menyebar di antara mean dan median populasi yang menunjukan ketakbiasan mean dan median bagi sampel.

Sebaran Normal

set.seed(15)
n=100;k=1000
norm = matrix(sample(pop.norm,n*k),k)
norm_mean = apply(norm,1,mean)
norm_median = apply(norm,1,median)
data.frame("\ "=c("Sampel", "Populasi"),mean=c(mean(norm_mean), mean(pop.norm)), median=c(mean(norm_median), median(pop.norm)))

Dapat terlihat dengan banyak sampel sebanyak 100 dengan ulangan sebanyak 1000 kali, nilai mean dan median sampel cukup mendekati nilai parameternya. Hal ini menunjukan bahwa mean dan median sampel tidak bias terhadap parameternya. Lebih jelasnya, dapat dilihat dari visualisasi sebaran contoh di bawah

par(mfrow=c(1,2))
hist(norm_mean); abline(v=mean(pop.norm), col="red"); legend("topleft", "Mean", lty=19,col="red")
hist(norm_median); abline(v=median(pop.norm), col="blue"); legend("topleft", "Median", lty=19,col="blue")

Gambar menunjukan mean dan median contoh menyebar di antara mean dan median populasi yang menunjukan ketakbiasan mean dan median bagi sampel.

Sebaran Eksponensial

set.seed(15)
n=100;k=1000
exp = matrix(sample(pop.exp,n*k),k)
exp_mean = apply(exp,1,mean)
exp_median = apply(exp,1,median)
data.frame("\ "=c("Sampel", "Populasi"),mean=c(mean(exp_mean), mean(pop.exp)), median=c(mean(exp_median), median(pop.exp)))

Dapat terlihat dengan banyak sampel sebanyak 100 dengan ulangan sebanyak 1000 kali, nilai mean dan median sampel cukup mendekati nilai parameternya. Hal ini menunjukan bahwa mean dan median sampel tidak bias terhadap parameternya. Lebih jelasnya, dapat dilihat dari visualisasi sebaran contoh di bawah

par(mfrow=c(1,2))
hist(exp_mean); abline(v=mean(pop.exp), col="red"); legend("topleft", "Mean", lty=19,col="red")
hist(exp_median); abline(v=median(pop.exp), col="blue"); legend("topleft", "Median", lty=19,col="blue")

Gambar menunjukan mean dan median contoh menyebar di antara mean dan median populasi yang menunjukan ketakbiasan mean dan median bagi sampel.

Sebaran Beta

set.seed(15)
n=100;k=1000
beta = matrix(sample(pop.beta,n*k),k)
beta_mean = apply(beta,1,mean)
beta_median = apply(beta,1,median)
data.frame("\ "=c("Sampel", "Populasi"),mean=c(mean(beta_mean), mean(pop.beta)), median=c(mean(beta_median), median(pop.beta)))

Dapat terlihat dengan banyak sampel sebanyak 100 dengan ulangan sebanyak 1000 kali, nilai mean dan median sampel cukup mendekati nilai parameternya. Hal ini menunjukan bahwa mean dan median sampel tidak bias terhadap parameternya. Lebih jelasnya, dapat dilihat dari visualisasi sebaran contoh di bawah

par(mfrow=c(1,2))
hist(beta_mean); abline(v=mean(pop.beta), col="red"); legend("topleft", "Mean", lty=19,col="red")
hist(beta_median); abline(v=median(pop.beta), col="blue"); legend("topleft", "Median", lty=19,col="blue")

Gambar menunjukan mean dan median contoh menyebar di antara mean dan median populasi yang menunjukan ketakbiasan mean dan median bagi sampel.

Kesimpulan Jawaban No. 1

Dari pengerjaan yang telah dilakukan, dapat disimpulkan bahwa rata-rata (mean) atau median contoh merupakan penduga tak bias bagi rata-rata atau median populasi pada sebaran apapun (baik simetris maupun tidak simetris).

Jawaban No. 2

Pada soal kedua, kita disuruh untuk melakukan simulasi perbandingan antara ragam dengan pembagi n (ragam populasi) dan pembagi n-1 (ragam contoh). Untuk memudahkan, didefinisikan fungsi sebagai berikut:

ragam <- function(x, sample = TRUE) {
  n <- length(x)
  mean_x <- mean(x)
  sse <- sum((x - mean_x)^2)
  if (sample) {
    return(sse / (n - 1))
  } else {
    return(sse / n)
  }
}

Jika sample = TRUE (default), maka yang digunakan adalah pembagi n-1, dan jika false pembaginya adalah n.

Dalam hal ini, kita akan menggunakan pop.norm yang telah digunakan pada soal sebelumnya sebagai populasinya. Akan dilakukan simulasi untuk membandingkan kedua pembagi ini.

k = 1000 # Ulangan
n = 30 # Jumlah sampel

ragam_contoh_n <- numeric(0) # Pembagi n
ragam_contoh_n_1 <- numeric(0) # Pembagi n-1

for (i in 1:k) {
  contoh <- sample(pop.norm, n)
  ragam_contoh_n[i] <- ragam(contoh, sample=F)
  ragam_contoh_n_1[i] <- ragam(contoh)
}

Didapat hasil sebagai berikut:

var.pop = ragam(pop.norm, F)
var.pop
## [1] 1.000289
data.frame(
  Pembagi = c("n", "n-1"),
  Rataan_Ragam = c(mean(ragam_contoh_n),mean(ragam_contoh_n_1)),
  Selisih_Dengan_Ragam_Populasi = c(abs(mean(ragam_contoh_n)-var.pop),abs(mean(ragam_contoh_n_1)-var.pop))
)

Dari hasil di atas, dapat terlihat bahwa pembagi n-1 memiliki hasil yang lebih tidak bias daripada pada pembagi n. Hal ini menunjukan bahwa pembagi n berbias untuk ragam contoh.