P7 Teknik Resampling

Indri ramdani

2024-02-26

1. Monte Carlo

  • Simulasi yang memanfaatkan informasi mengenai sebaran data yang diketahui (dihipotesiskan, dianggap tahu) dengan pasti

  • Simulasi didasarkan pada pembangkitan bilangan acak dari sebaran hipotetik

  • Perilaku yang ingin dipelajari dapat diketahui jika proses diulang berkali-kali

  • Banyak digunakan untuk “mengetahui” sebaran dari statistik

Pada kasus contoh acak yang diambil berasal dari populasi yang menyebar normal, nilai statistik uji t akan menyebar \(t_{db=(n-1)}\), sementara untuk populasi dengan sebaran lainnya, perlu dikaji ulang sebaran dari nilai statistik uji t

\(t=\frac{\bar{x}-\mu_{0}}{s/\sqrt{n}}\)

Simulasi dilakukan untuk melihat hasil dari sebaran hipotetik populasi ketika menghitung nilai statistik uji t

Ilustrasi 1

Misalkan \(X\) ~ \(N(0,1)\), jika diketahui \(Y=2X\), berapa \(P(Y>2)\) ?

Algoritma

  1. Bangkitkan \(X\)~\(N(0,1)\)

  2. Hitung \(Y=2X\)

  3. Ulangi langkah 1 dan 2 sebanyak 100000 kali

  4. Hitung presentasi nilai \(𝑌>2\)

Aplikasi di R

n  = 100000
x  = rnorm(n)
y  = 2*x
y1 = ifelse (y > 2, 1, 0)
mean(y1) #P(Y>2) secara empirik
## [1] 0.16084
pnorm(2,0,2,lower.tail=F) #P(Y>2 dari sebaran hipotetik)
## [1] 0.1586553

Ilustrasi 2

Jawaban:

Aplikasi di R

lambda<-2
N<-100000
k<-1
x<-rexp(N,lambda)
y<-ifelse(x>k,1,0)
hasil<-mean(y) #alpha
hasil
## [1] 0.13596
lambda<-4
N<-100000
k<-1
x<-rexp(N,lambda)
y<-ifelse(x>k,1,0)
hasil<-mean(y) #kuasa uji
hasil
## [1] 0.01821

Ilustrasi 3

Berikut data dari sebaran eksponensial, \(H_0:λ=1\) , Apa kesimpulan yang bisa diambil ?

Algoritma

  1. Hitung \(t_{data}=|\frac{\bar{x}-\mu _{0}}{s/\sqrt{n}}|\) dari data

  2. Bangkitkan 10 contoh acak yang menyebar \(exp(\lambda =1)\)

  3. Hitung \(t_{dist}=|\frac{\bar{x}-\mu _{0}}{s/\sqrt{n}}|\) dari sebaran hipotetik

  4. Ulangi langkah 2 dan 3 sebanyak 10000 kali

  5. Hitung \(p-value=P(t_{dist}>t_{data})\)

lambda = 1
k  = 10000
data1  = c(1.6876, 0.03037, 0.91673, 1.34939, 0.08164, 0.0312, 0.61068, 0.63169, 2.99986, 2.70955)
n  = length(data1)
m  = mean(data1)
s  = sd(data1)
tdata  = abs((m-1/lambda)/(s/sqrt(n)))

data2  = matrix(rexp(n*k,lambda),k)
m1 = apply(data2,1,mean)
s1 = apply(data2,1,sd)
tdist  = abs((m1-1/lambda)/(s1/sqrt(n)))
 
y  = ifelse(tdist > tdata,1,0)
pvalue = mean(y)
kesimpulan = ifelse(pvalue<0.05, "Tolak H0", "Tak Tolak H0")
pvalue
## [1] 0.7792
kesimpulan
## [1] "Tak Tolak H0"

2. Jacknife

  • Misalkan terdapat sampel \(y=(y_1,y_2,...,y_n)\) untuk menduga \(θ\) dengan penduga \(\hat{\theta}=f(y)\)

  • Tujuannya adalah menduga \(SE(\hat{\theta})\)

  • Sampel observasi dari \(y_i=(y_i,...,y_{i−1},y_{i+1},..,y_n)\) untuk \(i=1,..,n\) disebut Jacknife Samples

  • Stastistik dari Jacknife adalah \(\hat{\theta}_{(i)}=f(y_{(i)})\)

Ilustrasi

Dugalah rasio item1 dengan total item menggunakan Jacknife !

Algoritma

  1. Hitung \(\hat{\theta }=\) \(r=\frac{\bar{y}}{\bar{x}+\bar{y}}\)

  2. Tentukan sampel janknife \(x_{(i)}\) dan \(y_{(i)}\); \(i=1,…., n\)

  3. Hitung penduga jacknife

Aplikasi di R

store    = LETTERS [1:6]
item1    = c(1363, 670, 761, 746, 991, 798)
item2    = c(1087, 571, 518, 612, 770, 655)
data1    = data.frame(store, item1, item2)
n        = nrow(data1)
teta_hat = mean(data1$item1)/(mean(data1$item1)+mean(data1$item2))
y        = matrix (NA,n,n-1)
x        = matrix (NA,n,n-1)
for(i in 1:n){
  y[i,]  = data1$item1[-i]
  x[i,]  = data1$item2[-i]
}

ybar     = apply(y,1,mean)
xbar     = apply(x,1,mean)
teta_i   = ybar/(xbar+ybar)
teta_jk  = n*teta_hat-(n-1)*mean(teta_i)
var_jk   = (n-1)/n*(sum(teta_i^2)-(n*mean(teta_i)^2))
se_jk    = sqrt(var_jk)
teta_jk
## [1] 0.5584068
se_jk
## [1] 0.006207102

3. Bootstrap

Ukuran n kecil mengakibatkan beberapa teori peluang dan statistika inferensia tidak terpenuhi. Selain itu, ukuran n kecil juga menjadi masalah dalam suatu pendugaan parameter yang berkaitan dengan tingkat keakuratan dan ketelitian.

  • Ketika n kecil dan tidak ada informasi sebaran populasi dapat diatasi dengan Metode Resampling Bootstrap

  • Ide dasar dari bootstrap adalah membangun data semu dengan menggunakan informasi data asli

  • Efisien untuk mendapatkan hasil yang robust

Misalkan sebuah sampel \(y=(y_1,..., y_n)\) untuk mengestimasi \(𝜃\) dengan estimator \(\hat{\theta}=f(y)\), dilakukan langkah-langkah sebagai berikut:

  1. Mensimulasikan sampel berulang dengan ukuran n dari \(y\to y_{(i)}^{b}\) secara berulang.

  2. Menghitung stastistik \(\hat{\theta}_{(i)}^{b}=f(y_{(i)}^{b})\)

  3. Mempelajari perilaku statistik selama 𝑁 pengulangan.

Estimator Bootstrap

\(\hat{\theta }_{b}=\frac{1}{N}\sum_{i=1}^{N}\hat{\theta }_{(i)}^{b}\)

\(V_{b}(\hat{\theta})=\frac{1}{N-1}\sum_{i=1}^{N}(\hat{\theta }_{(i)}^{b}-\hat{\theta}_{b})^{2}\)

Ilustrasi

Dugalah rasio item1 dengan total item menggunakan bootstrap !

Algoritma

Aplikasi di R

store  = LETTERS [1:6]
item1  = c(1363, 670, 761, 746, 991, 798)
item2  = c(1087, 571, 518, 612, 770, 655)
data1  = data.frame(store, item1, item2)
n      = nrow(data1)
b      = 1000 #jumlah iterasi atau pengulangan dalam proses bootstrap
y      = matrix(sample(data1$item1, n*b, replace = T),b)
x      = matrix(sample(data1$item2, n*b, replace = T),b)
ybar   = apply(y,1,mean)
xbar   = apply(x,1,mean)
teta_i = ybar/(xbar+ybar)
teta_b = mean(teta_i)
var_b  = (sum(teta_i^2)-(b*teta_b^2))/(b-1)
se_b   = sqrt(var_b)
teta_b
## [1] 0.5579762
se_b
## [1] 0.03675839

Jadi penduga rasio item1 dengan total item menggunakan bootstrap adalah 0.5564 dengan standar error 0.0375