Resampling
BOOTSTRAP
Bootstrap adalah metode resampling atau pengambilan n sampel dengan pengembalian terhadap n data sampel asli yang dilakukan secara bekali-kali untuk mendapatkan distribusi sampling dari suatu penduga parameter.
• Bootstrap Parametrik dan Nonparametrik
Bootstrap parametrik adalah metode bootstrap yang memiliki asumsi bahwa suatu penduga parameter atau suatu nilai lainnya berasal dari distribusi tertentu, sehingga asumsi distribusi harus dipenuhi. Metode ini memberikan hasil yang baik untuk ukuran sampel yang kecil.
Bootstrap nonparametrik adalah metode bootstrap yang tidak memerlukan asumsi distribusi. Metode ini memberikan hasil yang baik untuk ukuran data yang besar. Akan tetapi, metode ini tidak dapat digunakan untuk data dengan outlier yang banyak dan data yang memiliki keterkaitan struktur (time series).
Langkah-langkah dalam resampling bootstrap parametrik dan nonparametrik:
(a) Lakukan pendugaan parameter titik terhadap θ menggunakan metode yang sudah ada seperti metode momen, maksimum likelihood, Bayesian, atau yang lainnya, dan beri notasi sebagai misalnya = ∑ = ̅
(b) x=(x1, x2, … , xn) adalah sampel asli dari populasi distribusi diketahui (parametrik) atau tidak diketahui (nonparametrik) dengan parameter θ, misalnya x berdistribusi normal (c) Tentukan banyaknya bootstrap resampel B dengan b=1, …, B, misalnya B=1000 (d) Ambil b=1 dan lakukan iterasi (i)-(ii) sampai b=B
(i) Bangkitkan sampel acak ∗ sebanyak n dari x, dan beri notasi sebagai x1*,x2*,…,xn* (ii) Lakukan pendugaan parameter titik menggunakan θ dan beri notasi sebagai
statistik b*, misalnya 1*=x1*1+x2*1+…+xn*1 untuk b=1
(d) Sehingga diperoleh statistik bootstrap ∗= ∑ i* dari nilai bootstrap 1*, 2*, … , B*
yang akan membentuk distribusi sampling bagi ∗ atau disebut sebagai distribusi bootstrap
x<-c(1:5) n<-length(x) B<-10
xbintang<-NULL for(i in 1:B)
{ xbintang<-cbind(xbintang,sample(x,n,replace=T)) } xbintang
xboot<-matrix(0,1,n) for(i in 1:n)
{ xboot[,i]<-mean(xbintang[,i]) } Xboot
#parametrik set.seed(1) x<-rnorm(n=10) x n<-length(x) xbar<-mean(x) varx<-var(x) sx<-sqrt(varx) varxbar<-varx/n sxbar<-sqrt(varxbar) B<-1000
xbarboot<-vector() for (i in 1:B)
{ xboot=sample(x,n,replace=T) xbarboot[i]=mean(xboot) } hist(xbarboot)
qqnorm(xbarboot)
qqline(xbarboot,col="red")
#nonparametrik
x<-sample(seq(1,3,by=0.01),20,replace=T) x n<-length(x)
xbar<-mean(x) varx<-var(x) sx<-sqrt(varx) varxbar<-varx/n sxbar<-sqrt(varxbar) B<-1000
xbarboot<-vector() for (i in 1:B)
{ xboot=sample(x,n,replace=T) xbarboot[i]=mean(xboot) } hist(xbarboot)
qqnorm(xbarboot)
qqline(xbarboot,col="red")
Bias dan Varians Statistik θ
Bias θ ≈ ∗− Var θ ≈ 1
B−1 ( b*− ∗)
b
θ≈ Var
xbarbootbar<-mean(xbarboot) xbarbootbar
bias<-(xbarbootbar-xbar) bias
varxbarboot<-var(xbarboot) varxbarboot
sxbarboot<-sqrt(varxbarboot) sxbarboot
• Bootstrap-t Interval
Bootstrap-t interval dapat digunakan untuk distribusi sampling atau distribusi bootstrap baik dari bootstrap parametrik maupun bootstrap nonparametrik yang menyebar normal atau mendekati normal. Pendugaan selang kepercayaan bagi θ dilakukan berdasarkan statistik t∗ sebagai pengganti nilai tabel-t. Maka, nilai-nilai t(α/2, db) dan t(1-α/2, db) yang diperoleh dari tabel-t akan diganti dengant(α/2)∗ dan t(1-α/2)∗ yang diperoleh dari bootstrap.
Langkah-langkah untuk mendapatkan selang kepercayaan (1-α) ×100% bagi θ:
Langkah (a)-(c) sama seperti bootstrap parametrik atau bootstrap nonparametrik;
(d) Ambil b=1 dan lakukan iterasi (i)-(ii) sampai b=B
(i) Bangkitkan sampel acak ∗ sebanyak n dari x, dan beri notasi sebagai x1*,x2*,…,xn* (ii) Lakukan pendugaan parameter titik menggunakan θ, dan beri notasi sebagai
statistik b* dan hitung simpangan baku
b*, misalnya 1* =x1*1+x2*1+…+xn*1 dan
1* =
!∗"
*
√ untuk b=1 (iii)Hitung tb* =( b*$ ∗)
%*b* dengan b=1, 2, …, B
(iv) Urutkan t1*, t2*, … , tB* dari yang terkecil hingga terbesar (v) Tentukan t(α/2)∗ dan t(1-α/2)∗
Jika α/2×B adalah bilangan bulat, maka t(α/2)∗ =tb* urutan ke (α/2)×B dan t(1-α/2)∗ =tb* urutan ke (1-α/2)×B
Jika α/2×B bukan bilangan bulat, misalkan k=(α/2)×(B+1) dimana &α' adalah bilangan yang dibulatkan ke bawah, maka t(1-α/2)∗ =tb* urutan ke k dan nilai t(α/2)∗ =tb* urutan ke (B+1-k)
(e) Sehingga diperoleh BB= ∗−t(α/2)∗ × ∗dan BA= ∗−t(1-α/2)∗ × ∗
xbarboot<-varxboot<-varxbarboot<-sexbarboot<-tboot<-vector() for (i in 1:B)
{ xboot=sample(x,n,replace=T) xbarboot[i]=mean(xboot) varxboot[i]=var(xboot)
varxbarboot[i]=varxboot[i]/n sxbarboot[i]=sqrt(varxbarboot[i])
tboot[i]=(xbarboot[i]-xbar)/sxbarboot[i]
} tbooturut<-sort(tboot) alpha<-0.05
urutbb<-(B*(alpha/2)) urutba<-(B*(1-alpha/2)) tbb<-tbooturut[urutbb]
tba<-tbooturut[urutba]
BB<-xbar-tbb*sxbar BA<-xbar-tba*sxbar SK<-cbind(BB,BA);SK
• Bootstrap Persentil
Bootstrap persentil dapat digunakan jika salah satu asumsi pada bootstrap-t interval tidak terpenuhi.
Langkah-langkah untuk mendapatkan selang kepercayaan (1-α) ×100% bagi θ:
Langkah (a)-(c) sama seperti bootstrap parametrik atau bootstrap nonparametrik;
(d) Ambil b=1 dan lakukan iterasi (i)-(ii) sampai b=B
(i) Bangkitkan sampel acak ∗ sebanyak n dari x, dan beri notasi sebagai x1*,x2*,…,xn* (ii) Lakukan pendugaan parameter titik menggunakan θ, dan beri notasi sebagai
statistik b*, misalnya 1*=x1*1+x2*1+…+xn*1 untuk b=1
(e) Sehingga diperoleh statistik bootstrap ∗= ∑ i* dari nilai bootstrap 1*, 2*, … , B*
yang akan membentuk distribusi sampling bagi ∗ atau disebut sebagai distribusi bootstrap
(f) Urutkan ∗ dari yang terkecil hingga terbesar menjadi (*1) < (*2)< … < (*B)
(g) Misalkan k1=(α/2)×B dan k2=(1-α/2)×B, maka BB= (*k1) dan BA= (*k2)
xbarbooturut<-sort(xbarboot) BB<-xbarbooturut[urutbb]
BA<-xbarbooturut[urutba]
SK<-cbind(BB,BA);SK
JACKKNIFE
Jackknife adalah metode resampling dengan menghilangkan satu nilai amatan dari data sampel asli yang selanjutnya disebut dengan istilah subsampel. Subsampel tersebut memiliki ukuran n-1. Kemudian, penghapusan satu nilai amatan pada data sampel asli diulang sebanyak n kali hingga semua nilai amatan sudah pernah dikeluarkan. Metode Jackknife merupakan sebuah metode khusus dari Cross Validation ketika jumlah partisinya sebanyak n.
Langkah-langkah dalam resampling Jackknife:
(a) Membangkitkan data y=(y1, y2, … , yn) untuk menduga dengan penduga parameter θ= +(,( )), misalnya θ= ,-
(b) Menghilangkan satu data pengamatan ke-i (i=1, 2, … , n) sehingga diperoleh sampel dalam subsampel dengan ukuran (n-1), misalnya y(1)= (y2, y3, … , yn)
(c) Lakukan resampling dengan mengulangi penghapusan sampai semua data pengamatan ke- i (i=1, 2, … , n) pernah terhapus, sehingga diperoleh ada n sampel baru (subsampel) y(i)
yang ukurannya masing-masing adalah (n-1). Misalnya y(1)=(y2, y3, … , yn), y(2)=( y1, y3,
… , yn), … , y(n)=(y1, y2, … , yn-1) yang disebut dengan sampel Jackknife (d) Menghitung statistik jackknife yaitu θ( )= +(,( )) pada tahapan (c) (e) Menghitung penduga Jaccknife
θ./01 = 2θ− (2 − 1)θ(.), misalnya θ./01= 2,- − (2 − 1) ∑ ,-
4./01 θ = $ θ( )−θ(.) , misalnya 4./01 θ = $ 5,-( )− ∑ ,-( )6 dimana
(.)=1
2 θ( )
(f) Menghitung bias dari dugaan rataan sampel Jackknife y<-BOD$demand
n<-length(y)
yi<-matrix(0,n-1,n) for(i in 1:n)
{ yi[,i]<-data[-i]
} Yi
ybari<-matrix(0,1,n) for(i in 1:n)
{ ybari[,i]<-mean(yi[,i]) } Ybari
jack<-function(data,fun) { n<-length(data)
f<-fun(data) ybari<-numeric(n) for(i in 1:n) { yi<-data[-i]
stat.jack<-fun(yi) ybari[i]<-stat.jack
} mjack<-n*f-(n-1)*mean(ybari)
vjack<-((n-1)/n)*sum((ybari-mean(ybari))^2) list(mean.jack=mjack, var.jack=vjack)
} y<-BOD$demand jack(y,mean)
bias<-abs(jack(y,mean)$mean.jack-mean(y)) bias