Ketakbiasan Penduga

Pada tugas ini, akan digunakan pengujian ketakbiasan penduga parameter dengan sebaran normal, seragam, dan eksponensial dengan ukuran populasi 20 dan contoh 10 yang diresampling sebanyak 1000 kali.

1. Sebaran Normal

# Banyak populasi dan sample
n = 10
N = 20

# Ulangan digunakan 1000
k = 1000 

# Pembangkitan bilangan acak populasi
populasi = rnorm(N,25,sqrt(5)) # populasi menyebar normal
miu = mean(populasi)

# Resampling dengan n = 10 
sampel   = matrix(NA,k,n)
for (i in 1:k) sampel[i,] = sample (populasi,n)

# Perhitungan statistik xbar untuk setiap resampling
xbar     = apply (sampel,1,mean)

# Perhitungan nilai harapan
E.xbar   = mean(xbar)
hasil = data.frame( "Ukuran"  = c("Miu","E(xbar)"), 
                    Mean   = c(miu, E.xbar))
hasil
##    Ukuran     Mean
## 1     Miu 26.22034
## 2 E(xbar) 26.22285

2. Sebaran Seragam

# Banyak populasi dan sample
n = 10
N = 20

# Ulangan digunakan 1000
k = 1000 

# Pembangkitan bilangan acak populasi
populasi = runif(N,min = 10, max = 20) 
miu = mean(populasi)
 

# Resampling dengan n = 10 dan dihitung nilai xbarnya
sampel   = matrix(NA,k,n)
for (i in 1:k) sampel[i,] = sample (populasi,n)

# Perhitungan xbar
xbar     = apply (sampel,1,mean)

# Perhitungan nilai harapan xbar
E.xbar   = mean(xbar)

hasil2 = data.frame( "Ukuran"  = c("Miu","E(xbar)"), 
                    Nilai   = c(miu, E.xbar))
hasil2
##    Ukuran    Nilai
## 1     Miu 14.95974
## 2 E(xbar) 14.99960

3. Sebaran Eksponensial

# Banyak populasi dan sample
n = 10
N = 20

# Ulangan digunakan 1000
k = 1000 

# Pembangkitan bilangan acak populasi exp(1)
populasi = rexp(N,1)
miu = mean(populasi)

# Resampling dengan n = 10 dan dihitung nilai xbarnya
sampel   = matrix(NA,k,n)
for (i in 1:k) sampel[i,] = sample (populasi,n)

# Perhitungan xbar
xbar     = apply (sampel,1,mean)

# Perhitungan nilai harapan xbar
E.xbar   = mean(xbar)

hasil3 = data.frame( "Ukuran"  = c("Parameter","E(xbar)"), 
                    Nilai   = c(miu, E.xbar))
hasil3
##      Ukuran     Nilai
## 1 Parameter 0.9307436
## 2   E(xbar) 0.9344699

Berdasarkan simulasi dengan 3 sebaran yang berbeda, didapatkan nilai harapan rataan contoh yang cenderung sama dengan rataan populasi. Oleh karena itu, terbukti bahwa rataan contoh dapat menjadi penduga yang tak bias bagi rataan populasi

Selang Kepercayaan

1. Sebaran Normal

A. n = 10

set.seed(1)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.1.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.1.3
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.1.3
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
# Banyak populasi dan sample
n = 10
N = 1000

# Ulangan digunakan 100
k = 100 

# Pembangkitan bilangan acak populasi
populasi = rnorm(N,25,5) 
miu = mean(populasi)
#miu
sigma2   = var(populasi)*(N-1)/N #fungsi var di R adalah varian contoh sehingga perlu disesuaikan 

# Ambil rataan n = 10
meanset = data.frame()
for(i in 1:k){
  samp = sample(populasi,n)
  meanset[i,1] = mean(samp)
}
# Perhitungan Margin error
z = qnorm((1-0.95)/2,0,1,lower.tail = FALSE)
Moe = z*sqrt(sigma2)/sqrt(n)
colnames(meanset) <- c("Mean")

# Perhitungan batas atas dan bawah
meanset10 <-meanset %>% mutate(upper=Mean+Moe) %>% mutate(lower=Mean-Moe)
Ulangan <-seq(1, k, 1)
Ulangan <-as.data.frame(Ulangan)
ci10<-cbind(Ulangan, meanset10)

# Pengecekan nilai statistik terhadap selang kepercayaan
cek <- function(upper,lower,miu){
  result <- rep(0, length(upper))
  result[upper > miu & lower < miu] <- 1
  return(result)
}

ci10 = ci10 %>% mutate(Cek = cek(upper,lower, miu = miu))
ci10$Cek <- factor(ci10$Cek, levels=c(0,1))

# Tampilan grafik SK
# Define color set
colorset <- setNames(c("red", "black"), c("0", "1"))

# Create a function for confidence interval plots
ci_plot <- function(ci, title) {
  ci_plot <- ggplot(ci, aes(x = Ulangan, y = Mean)) +
    geom_point(aes(color = Cek)) +
    geom_errorbar(aes(ymin = lower, ymax = upper, color = Cek)) +
    scale_color_manual(values = colorset) +
    coord_flip() +
    geom_hline(yintercept = miu, linetype = "dashed", color = "blue") +
    labs(title = title) +
    theme(plot.title = element_text(hjust = 0.5)) #+
    #ylim(miu-10, miu+20)
  return(ci_plot)
}

# Create confidence interval data frames
# Assuming ci90, ci95, and ci99 are available

# Plot confidence intervals
ci_plotn_10 <- ci_plot(ci10, "95% Confidence Intervals for n = 10")

B. n = 30

set.seed(1)
# Banyak sample
n = 30

# Pembangkitan bilangan acak populasi
populasi = rnorm(N,25,5) 
miu = mean(populasi)
#miu
sigma2   = var(populasi)*(N-1)/N #fungsi var di R adalah varian contoh sehingga perlu disesuaikan 

# Ambil rataan n = 10
meanset = data.frame()
for(i in 1:k){
  samp = sample(populasi, n)
  meanset[i,1] = mean(samp)
}
# Perhitungan Margin error
z = qnorm((1-0.95)/2,0,1,lower.tail = FALSE)
Moe = z*sqrt(sigma2)/sqrt(n)
colnames(meanset) <- c("Mean")

# Perhitungan batas atas dan bawah
meanset10 <-meanset %>% mutate(upper=Mean+Moe) %>% mutate(lower=Mean-Moe)
Ulangan <-seq(1, k, 1)
Ulangan <-as.data.frame(Ulangan)
ci10<-cbind(Ulangan, meanset10)

# Pengecekan nilai statistik terhadap selang kepercayaan
ci10 = ci10 %>% mutate(Cek = cek(upper,lower, miu = miu))
ci10$Cek <- factor(ci10$Cek, levels=c(0,1))

# Tampilan grafik SK
# Define color set
colorset <- setNames(c("red", "black"), c("0", "1"))

# Plot confidence intervals
ci_plotn_30 <- ci_plot(ci10, "95% Confidence Intervals for n = 30 ")

C. n = 100

set.seed(1)
# Banyak sample
n = 100

# Pembangkitan bilangan acak populasi
populasi = rnorm(N,25,5) 
miu = mean(populasi)
#miu
sigma2   = var(populasi)*(N-1)/N #fungsi var di R adalah varian contoh sehingga perlu disesuaikan 

# Ambil rataan n = 10
meanset = data.frame()
for(i in 1:k){
  samp = sample(populasi, n)
  meanset[i,1] = mean(samp)
}
# Perhitungan Margin error
z = qnorm((1-0.95)/2,0,1,lower.tail = FALSE)
Moe = z*sqrt(sigma2)/sqrt(n)
colnames(meanset) <- c("Mean")

# Perhitungan batas atas dan bawah
meanset10 <-meanset %>% mutate(upper=Mean+Moe) %>% mutate(lower=Mean-Moe)
Ulangan <-seq(1, k, 1)
Ulangan <-as.data.frame(Ulangan)
ci10<-cbind(Ulangan, meanset10)

# Pengecekan nilai statistik terhadap selang kepercayaan
ci10 = ci10 %>% mutate(Cek = cek(upper,lower, miu = miu))
ci10$Cek <- factor(ci10$Cek, levels=c(0,1))

# Tampilan grafik SK
# Define color set
colorset <- setNames(c("red", "black"), c("0", "1"))

# Plot confidence intervals
ci_plotn_100 <- ci_plot(ci10, "95% Confidence Intervals for n = 100 ")
par(mfrow = c(1,3))
ci_plotn_10

ci_plotn_30

ci_plotn_100

2. Sebaran Seragam U(10,20)

A. n = 10

set.seed(1)
# Banyak sample
n = 10

# Pembangkitan bilangan acak populasi
populasi = runif(N,10,20) 
miu = mean(populasi)
#miu
sigma2   = var(populasi)*(N-1)/N #fungsi var di R adalah varian contoh sehingga perlu disesuaikan 

# Ambil rataan n = 10
meanset = data.frame()
for(i in 1:k){
  samp = sample(populasi, n)
  meanset[i,1] = mean(samp)
}
# Perhitungan Margin error
z = qnorm((1-0.95)/2,0,1,lower.tail = FALSE)
Moe = z*sqrt(sigma2)/sqrt(n)
colnames(meanset) <- c("Mean")

# Perhitungan batas atas dan bawah
meanset10 <-meanset %>% mutate(upper=Mean+Moe) %>% mutate(lower=Mean-Moe)
Ulangan <-seq(1, k, 1)
Ulangan <-as.data.frame(Ulangan)
ci10<-cbind(Ulangan, meanset10)

# Pengecekan nilai statistik terhadap selang kepercayaan
ci10 = ci10 %>% mutate(Cek = cek(upper,lower, miu = miu))
ci10$Cek <- factor(ci10$Cek, levels=c(0,1))

# Tampilan grafik SK
# Define color set
colorset <- setNames(c("red", "black"), c("0", "1"))

# Plot confidence intervals
ci_plotu_10 <- ci_plot(ci10, "95% Confidence Intervals for U(10,20) with n = 10 ")

B. n = 30

set.seed(1)
# Banyak sample
n = 30

# Pembangkitan bilangan acak populasi
populasi = runif(N,10,20) 
miu = mean(populasi)
#miu
sigma2   = var(populasi)*(N-1)/N #fungsi var di R adalah varian contoh sehingga perlu disesuaikan 

# Ambil rataan n = 10
meanset = data.frame()
for(i in 1:k){
  samp = sample(populasi, n)
  meanset[i,1] = mean(samp)
}
# Perhitungan Margin error
z = qnorm((1-0.95)/2,0,1,lower.tail = FALSE)
Moe = z*sqrt(sigma2)/sqrt(n)
colnames(meanset) <- c("Mean")

# Perhitungan batas atas dan bawah
meanset10 <-meanset %>% mutate(upper=Mean+Moe) %>% mutate(lower=Mean-Moe)
Ulangan <-seq(1, k, 1)
Ulangan <-as.data.frame(Ulangan)
ci10<-cbind(Ulangan, meanset10)

# Pengecekan nilai statistik terhadap selang kepercayaan
ci10 = ci10 %>% mutate(Cek = cek(upper,lower, miu = miu))
ci10$Cek <- factor(ci10$Cek, levels=c(0,1))

# Tampilan grafik SK
# Define color set
colorset <- setNames(c("red", "black"), c("0", "1"))

# Plot confidence intervals
ci_plotu_30 <- ci_plot(ci10, "95% Confidence Intervals for n = 30 ")

C. n = 100

set.seed(1)
# Banyak sample
n = 100

# Pembangkitan bilangan acak populasi
populasi = runif(N,10,20) 
miu = mean(populasi)
#miu
sigma2   = var(populasi)*(N-1)/N #fungsi var di R adalah varian contoh sehingga perlu disesuaikan 

# Ambil rataan n = 10
meanset = data.frame()
for(i in 1:k){
  samp = sample(populasi, n)
  meanset[i,1] = mean(samp)
}
# Perhitungan Margin error
z = qnorm((1-0.95)/2,0,1,lower.tail = FALSE)
Moe = z*sqrt(sigma2)/sqrt(n)
colnames(meanset) <- c("Mean")

# Perhitungan batas atas dan bawah
meanset10 <-meanset %>% mutate(upper=Mean+Moe) %>% mutate(lower=Mean-Moe)
Ulangan <-seq(1, k, 1)
Ulangan <-as.data.frame(Ulangan)
ci10<-cbind(Ulangan, meanset10)

# Pengecekan nilai statistik terhadap selang kepercayaan
ci10 = ci10 %>% mutate(Cek = cek(upper,lower, miu = miu))
ci10$Cek <- factor(ci10$Cek, levels=c(0,1))

# Tampilan grafik SK
# Define color set
colorset <- setNames(c("red", "black"), c("0", "1"))

# Plot confidence intervals
ci_plotu_100 <- ci_plot(ci10, "95% Confidence Intervals for n = 100 ")
par(mfrow = c(1,3))
ci_plotu_10

ci_plotu_30

ci_plotu_100

3. Sebaran Eksponensial(1)

A. n = 10

set.seed(1)
# Banyak sample
n = 10

# Pembangkitan bilangan acak populasi
populasi = rexp(N,1) 
miu = mean(populasi)
#miu
sigma2   = var(populasi)*(N-1)/N #fungsi var di R adalah varian contoh sehingga perlu disesuaikan 

# Ambil rataan n = 10
meanset = data.frame()
for(i in 1:k){
  samp = sample(populasi, n)
  meanset[i,1] = mean(samp)
}
# Perhitungan Margin error
z = qnorm((1-0.95)/2,0,1,lower.tail = FALSE)
Moe = z*sqrt(sigma2)/sqrt(n)
colnames(meanset) <- c("Mean")

# Perhitungan batas atas dan bawah
meanset10 <-meanset %>% mutate(upper=Mean+Moe) %>% mutate(lower=Mean-Moe)
Ulangan <-seq(1, k, 1)
Ulangan <-as.data.frame(Ulangan)
ci10<-cbind(Ulangan, meanset10)

# Pengecekan nilai statistik terhadap selang kepercayaan
ci10 = ci10 %>% mutate(Cek = cek(upper,lower, miu = miu))
ci10$Cek <- factor(ci10$Cek, levels=c(0,1))

# Tampilan grafik SK
# Define color set
colorset <- setNames(c("red", "black"), c("0", "1"))

# Plot confidence intervals
ci_plote_10 <- ci_plot(ci10, "95% Confidence Intervals for n = 10 ")

B. n = 30

set.seed(1)
# Banyak sample
n = 30

# Pembangkitan bilangan acak populasi
populasi = rexp(N,1) 
miu = mean(populasi)
#miu
sigma2   = var(populasi)*(N-1)/N #fungsi var di R adalah varian contoh sehingga perlu disesuaikan 

# Ambil rataan n = 10
meanset = data.frame()
for(i in 1:k){
  samp = sample(populasi, n)
  meanset[i,1] = mean(samp)
}
# Perhitungan Margin error
z = qnorm((1-0.95)/2,0,1,lower.tail = FALSE)
Moe = z*sqrt(sigma2)/sqrt(n)
colnames(meanset) <- c("Mean")

# Perhitungan batas atas dan bawah
meanset10 <-meanset %>% mutate(upper=Mean+Moe) %>% mutate(lower=Mean-Moe)
Ulangan <-seq(1, k, 1)
Ulangan <-as.data.frame(Ulangan)
ci10<-cbind(Ulangan, meanset10)

# Pengecekan nilai statistik terhadap selang kepercayaan
ci10 = ci10 %>% mutate(Cek = cek(upper,lower, miu = miu))
ci10$Cek <- factor(ci10$Cek, levels=c(0,1))

# Tampilan grafik SK
# Define color set
colorset <- setNames(c("red", "black"), c("0", "1"))

# Plot confidence intervals
ci_plote_30 <- ci_plot(ci10, "95% Confidence Intervals for n = 30 ")

C. n = 100

set.seed(1)
# Banyak sample
n = 100

# Pembangkitan bilangan acak populasi
populasi = rexp(N,1) 
miu = mean(populasi)
#miu
sigma2   = var(populasi)*(N-1)/N #fungsi var di R adalah varian contoh sehingga perlu disesuaikan 

# Ambil rataan n = 10
meanset = data.frame()
for(i in 1:k){
  samp = sample(populasi, n)
  meanset[i,1] = mean(samp)
}
# Perhitungan Margin error
z = qnorm((1-0.95)/2,0,1,lower.tail = FALSE)
Moe = z*sqrt(sigma2)/sqrt(n)
colnames(meanset) <- c("Mean")

# Perhitungan batas atas dan bawah
meanset10 <-meanset %>% mutate(upper=Mean+Moe) %>% mutate(lower=Mean-Moe)
Ulangan <-seq(1, k, 1)
Ulangan <-as.data.frame(Ulangan)
ci10<-cbind(Ulangan, meanset10)

# Pengecekan nilai statistik terhadap selang kepercayaan
ci10 = ci10 %>% mutate(Cek = cek(upper,lower, miu = miu))
ci10$Cek <- factor(ci10$Cek, levels=c(0,1))

# Tampilan grafik SK
# Define color set
colorset <- setNames(c("red", "black"), c("0", "1"))

# Plot confidence intervals
ci_plote_100 <- ci_plot(ci10, "95% Confidence Intervals for n = 100")
par(mfrow = c(1,3))
ci_plote_10

ci_plote_30

ci_plote_100

Berdasarkan simulasi selang kepercayaan dari berbagai sebaran, diketahui bahwa sebagian besar selang kepercayaan mencangkup nilai parameter miu-nya. Selain itu, semakin besar ukuran contoh, semakin kecil selang kepercayaan