Upload
farisca-susiani
View
41
Download
0
Embed Size (px)
DESCRIPTION
It's all about statistics
Citation preview
5
Komputasi Statistika
Bootstrap
dan JacknifeDisusun oleh:
Fahrul Rozi Perdana 1309100016
Dimas Agung Dermawan 1309100080
Muinah Khusnul Khotimah 1309100091
BOOTSTRAP DAN JACKNIFE
5. Bootstrap dan Jacknife
5.1 Konsep Dasar Bootstrap dan Jacknife
Bootstrap dan jackknife adalah teknik nonparametrik dan resampling yang bertujuan
untuk menaksir standart eror dan confidence interval parameter populasi, seperti : mean,
median, proporsi, koefisien korelasi dan regresi, dengan tidak selalu memperhatikan
asumsi distribusi.
Berikut ini adalah tahapan untuk melakukan proses resampling bootstrap:
1.) Misal dilakukan proses penyampelan dari data, eksperimen atau simulasi
berukuran N
2.) Resample dengan pengembalian, didapat-kan Resampel ke i (i = 1, 2, . . . , REP),
REP biasanya 1000 atau lebih, makin banyak makin baik.
3.) Perhitungan penaksir setiap hasil resample didapatkan θ̂b , 1 , θ̂b , 2 , . . . , θ̂b , REP ,
bentuk umumnya θ̂b , i .
4.) Perhitungan penaksir bootstrap, θ̂bootstrap=θ̂b=
1REP
∑i=1
REP
θ̂b ,i
θ̂b , i atau θ̂ j ,i suatu penaksir parameter, pada penerapannya dapat berupa : mean, varian,
standart deviasi, korelasi, dan koefisien regresi.
Berikut ini adalah tahapan untuk melakukan proses resampling jacknife:
1.) Misal dilakukan proses penyampelan dari data, eksperimen atau simulasi
berukuran N
2.) Resample dengan mengeluarkan elemen sampel ke i, i = 1, 2, ... , N. Didapatkan
Resample ke i (i = 1, 2, . . . , N).
3.) Perhitungan penaksir setiap hasil resample didapatkan : θ̂ j ,1 , θ̂ j ,2 , . . . , θ̂ j , n ;
bentuk umumnya θ̂ j ,i .
4.) Perhitungan penaksir jackknife, θ̂ jackknife = θ̂ j=
1n∑i=1
n
θ̂ j , i
θ̂b , i atau θ̂ j ,i suatu penaksir parameter, pada penerapannya dapat berupa : mean, varian,
standart deviasi, korelasi, dan koefisien regresi.
2FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
5.2 Function with R
Dari konsep dasar bootstrap dan jacknife yang telah dibahas pada subbab diatas,
berikut adalah function di R yang digunakan untuk menaksir paramaeter bootstrap.
Gambar 5.1 R function untuk bootstrap
Dan berikut ini adalah function di R untuk menaksir parameter jacknife.
Gambar 5.2 R function untuk jacknife
5.3 Algoritma
Pada subbab ini akan dijelaskan algoritma dari function yang telah dibahas pada
subbab sebelumnya.
a. Algoritma Bootstrap
Algoritma dari proses resampling bootstrap secara umum sebagai berikut3
FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
1.) Mula-mula membuat matrik yang pertama dengan baris sebanyak m dan kolom
sebanyak n
2.) Membuat matrik baris dengan kolom sebanyak n
3.) Melakukan sampel dari data sebanyak m dan menempatkan pada baris ke-i pada
matrik yang pertama
4.) Mengulang langkah 3.) sebanyak n
5.) Menghitung mean dari masing-masing kolom pada matrik pertama dan
menempatkanya pada matrik baris
6.) Menghitung mean dari matrik baris
Dari algoritma secara umum diatas akan dijelaskan algoritma yang lebih rinci
sebagai berikut.
Tabel 5.1 Algoritma untuk bootstrap
Function Penjelasan
bootstrap=function(data,m,n) Membuat fungsi yang dinamai "bootstrap" dengan output data, m,
dan n
resam=matrix(nrow=m,ncol=n) Membuat matrik berukuran m baris dan n kolom yang dinamai
"resam"
rata=matrix(nrow=1,ncol=n) Membuat matrik berukran 1 baris dan n kolom yang dinamai "rata"
for (i in 1:n) Membuat pengulangan dari 1 sampai n
resam[ ,i]=sample(data,m) Mengisikan masing-masing kolom pada matrik "resam" dengan
sampel dari data sebanyak m
rata[ ,i]=mean(resam[ ,i]) Mengisikan kolom ke-i pada matrik "rata" dengan mean dari kolom
ke-i pada matrik "resam"
bootstrap=mean(rata) Mencari nilai mean dari matrik "rata" yang dinamai dengan
"bootstrap"
list(....) Menampilkan hasil
b. Algoritma Jacknife
Algoritma dari proses resampling jacknife secara umum sebagai berikut
1.) Mula-mula membuat matrik yang pertama dengan baris sebanyak n-1 dan kolom
sebanyak n
2.) Membuat matrik baris dengan kolom sebanyak n
3.) Membuat urutan dari data
4FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
4.) Mengisikan kolom ke-i pada matrik yang pertama dengan data yang telah urut
dengan tanpa menyertakan urutan ke-i
5.) Mengulang langkah 4.) sebanyak n
6.) Menghitung mean dari masing masing kolom pada matrik yang pertama dan
menempatkanya pada matrik baris
7.) Menghitung mean dari matrik baris
Dari algoritma secara umum diatas akan dijelaskan algoritma yang lebih rinci
sebagai berikut.
Tabel 5.2 Algoritma untuk jacknife
Function Penjelasan
jacknife=function(data) Membuat fungsi yang dinamai "jacknife" dengan output data
n=length(data) Menamai panjang data dengan n
resam=matrix(nrow=(n-
1),ncol=n)
Membuat matrik dengan jumlah baris sebanyak n-1 dan kolom
sebanyak n yang dinamai "resam"
rata=matrix(nrow=1,ncol=n) Membuat matrik baris dengan kolom sebanyak n yang dinamai
"rata"
for (i in 1:n) Membuat pengulangan dari 1 sampai n
urut=c(1:n) Membuat data 1 sampai n dengan nama "urut"
dd=which(urut!=i) Membuat data dimana data urut disajikan tanpa data ke-i yang
dinamai "dd"
resam[ ,i]=data[dd] Mengisikan masing-masing kolom pada matrik "resam" dengan data
yang memenuhi syarat "dd"
rata[ ,i]=mean(resam[ ,i]) Mengisikan kolom ke-i pada matrik "rata" dengan mean dari kolom
ke-i pada matrik "resam"
jacknife=mean(rata) Mencari nilai mean dari matrik "rata" yang dinamai dengan
"jacknife"
list(....) Menampilkan hasil
5.4 R Package
Program R juga menyediakan paket-paket yang telah jadi untuk menjalankan
beberapa fungsi seperti bootstrap dan jacknife. Untuk menampilkan fungsi bootstrap ketik
bootstrap. Jika tidak berhasil klik menu packages pada toolbar kemudian pilih load
package...
5FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
Gambar 5.3 Langkah menjalankan R Package
Kemudian pilih boot dan tekan OK.
Gambar 5.4 Memilih paket boot untuk fungsi bootstrap
Maka akan ditampilkan fungsi untuk mencari bootstrap sebagai berikut.
6FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
> bootstrap
function (x, nboot, theta, ..., func = NULL)
{
call <- match.call()
n <- length(x)
bootsam <- matrix(sample(x, size = n * nboot, replace = TRUE),
nrow = nboot)
thetastar <- apply(bootsam, 1, theta, ...)
func.thetastar <- NULL
jack.boot.val <- NULL
jack.boot.se <- NULL
if (!is.null(func)) {
match1 <- function(bootx, x) {
duplicated(c(bootx, x))[(length(x) + 1):(2 * length(x))]
}
matchs <- t(apply(bootsam, 1, match1, x))
func.thetastar <- func(thetastar)
jack.boot <- function(inout, thetastar, func) {
func(thetastar[!inout])
}
jack.boot.val <- apply(matchs, 2, jack.boot, thetastar,
func)
if (sum(is.na(jack.boot.val) > 0)) {
cat("At least one jackknife influence value for func(theta) is undefined",
fill = TRUE)
cat(" Increase nboot and try again", fill = TRUE)
return()
}
if (sum(is.na(jack.boot.val)) == 0) {
jack.boot.se <- sqrt(((n - 1)/n) * sum((jack.boot.val -
mean(jack.boot.val))^2))
}
}
7FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
return(list(thetastar = thetastar, func.thetastar = func.thetastar,
jack.boot.val = jack.boot.val, jack.boot.se = jack.boot.se,
call = call))
}
5.5 Studi Kasus
Untuk lebih memahami penggunaan bootstrap dan jacknife, dilakukan studi kasus
sebagai berikut.
Akan dicari parameter bootstrap dan jacknife untuk data pembelian daging dan ikan
di 150 supermarket sebagai berikut.
Tabel 5.3 Data penjualan di supermarket
id
superma
r meat fish id
superma
r meat fish id
superma
r meat fish
1 Asda 10,322653
2,386123
1 51 Asda 1,7157256 4,3758162
10
1
Kwiksav
e
1,302784
6 0,0125994
2 Asda 1,4643201 3,004063 52
Kwiksav
e 2,4994077 1,0452275
10
2
Waitros
e
7,137085
1 4,655144
3 Tesco 8,0185099
2,594804
4 53
Kwiksav
e 0,4370254 0,0948342
10
3 Asda
15,20694
9 4,567109
4 Tesco 4,0296163 4,517541 54 Asda 19,380455 2,5996484
10
4 Asda
10,44023
7 5,403403
5 Asda 2,0955085
5,761566
5 55
Kwiksav
e 2,1710175 0,6352293
10
5 Asda
8,206468
2 6,5558877
6
Kwiksav
e 0,4303825
0,528786
8 56
Kwiksav
e 1,5538654 0,4365477
10
6 Tesco
15,29202
3 3,7915592
7 Asda 4,4599574
0,363381
3 57 Safeway 5,5151255 2,1715356
10
7 Safeway
5,283562
4 3,653286
8 Tesco 14,857673
3,065868
1 58
Waitros
e 6,4629234 13,060157
10
8 Safeway 3,325809 2,0736744
9 Asda 2,7347935
2,399126
5 59 Tesco 7,3345978 0,6319632
10
9 Safeway
3,302504
3 1,1152319
1
0
Kwiksav
e 4,6476714
1,058550
6 60 Tesco 12,530441 1,281835
11
0 Tesco
9,969709
6 0,4101632
1
1
Kwiksav
e 1,5326935
0,526003
2 61 Asda 16,611546 2,9776814
11
1 Asda
5,277015
3 1,2909824
1
2
Waitros
e 9,7226414
5,777987
5 62 Asda 9,0297608 6,0514262
11
2
Kwiksav
e
2,060808
7 0,7906768
1
3 Asda 0,0784094
0,294900
5 63 Tesco 0,764474 1,2844074
11
3
Kwiksav
e
4,328113
8 0,2856731
1 Asda 8,5275716 1,620300 64 Tesco 17,366112 5,410634 11 Asda 8,793571 2,8613383
8FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
4 6 4 9
1
5 Asda 9,2553499
2,047447
7 65 Asda 3,6480306 1,5389808
11
5
Kwiksav
e
1,155003
7 0,2234738
1
6 Tesco 0,4870781
4,860781
9 66
Kwiksav
e 3,0664937 0,006846
11
6
Kwiksav
e
3,239920
7 0,8439524
1
7 Safeway 12,661773
0,329507
2 67 Asda 5,1963218 4,0797687
11
7 Safeway
3,727160
3 3,8553719
1
8 Safeway 13,775829
0,336230
6 68 Tesco 8,1048925 5,5037817
11
8
Waitros
e
1,408003
1 11,436994
1
9 Safeway 13,325666
2,591686
3 69 Asda 2,8003585 2,7953703
11
9 Tesco
12,22515
2 0,4096869
2
0 Tesco 18,137614
3,757564
5 70
Kwiksav
e 2,3041155 0,6226478
12
0 Tesco
6,207596
9 2,495203
2
1 Asda 9,7876365
0,429417
1 71
Kwiksav
e 0,2540089 0,7631104
12
1 Asda
10,99978
1 1,0738673
2
2
Kwiksav
e 0,8753505
1,075680
9 72
Waitros
e 7,927984 3,7554579
12
2 Asda
11,69925
1 0,2279559
2
3
Kwiksav
e 2,488933
0,213730
3 73 Asda 8,6088623 4,5461244
12
3 Tesco
2,971005
3 0,294369
2
4 Asda 11,320505
1,457244
4 74 Asda 8,6721423 2,379338
12
4 Tesco
1,669468
8 0,6651582
2
5
Kwiksav
e 2,7819085
0,937746
4 75 Asda 5,0926088 1,4259416
12
5 Asda
3,276002
3 4,2658948
2
6
Kwiksav
e 1,4720683 0,298355 76 Tesco 13,72459 4,9287212
12
6
Kwiksav
e
0,696939
3 0,7073966
2
7 Safeway 1,9634489 4,594448 77 Safeway 17,402173 2,2440724
12
7 Asda
14,78058
8 0,520728
2
8
Waitros
e 0,8995939
11,78328
5 78 Safeway 12,706044 0,4455474
12
8 Tesco
11,62089
5 0,7547793
2
9 Tesco 16,475975
0,910433
9 79 Safeway 10,250837 2,2048052
12
9 Asda
6,961677
5 2,2703294
3
0 Tesco 1,6782493
1,985220
8 80 Tesco 9,9406217 6,9216456
13
0
Kwiksav
e
2,778079
8 0,5242639
3
1 Asda 16,467436
3,388267
5 81 Asda 14,748912 3,6329385
13
1
Kwiksav
e
2,781421
7 0,0966719
3
2 Asda 1,4849857 0,601632 82
Kwiksav
e 2,4834293 0,38972
13
2
Waitros
e
9,036623
6 14,479333
3
3 Tesco 12,40132
1,028280
9 83
Kwiksav
e 0,6221616 0,6079264
13
3 Asda
4,860605
9 3,0257983
3
4 Tesco 0,1289459
5,588381
5 84 Asda 13,928966 2,7649615
13
4 Asda
6,718558
2 4,3008814
3
5 Asda 14,150936
0,061581
5 85
Kwiksav
e 3,8941422 0,9302048
13
5 Asda
11,79546
1 1,5435084
9FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
3
6
Kwiksav
e 4,3348919
0,373355
3 86
Kwiksav
e 1,4050079 0,1376247
13
6 Tesco
18,92105
9 0,1616451
3
7 Asda 8,2222849
0,349002
8 87 Safeway 1,2944036 1,1178463
13
7 Safeway
14,81399
9 0,9354289
3
8 Tesco 13,838784
2,633147
1 88
Waitros
e 0,9010421 5,2298848
13
8 Safeway
2,046338
1 0,1402601
3
9 Asda 8,0989954
2,630588
1 89 Tesco 15,800813 2,5154729
13
9 Safeway
5,965744
9 2,8828583
4
0
Kwiksav
e 0,5780798
0,418526
1 90 Tesco 3,4893648 2,1090343
14
0 Tesco
3,151097
4 3,2320971
4
1
Kwiksav
e 1,750743
0,364596
5 91 Asda 1,493058 2,1172192
14
1 Asda
0,083769
2 0,5686055
4
2
Waitros
e 2,430366
13,50267
4 92 Asda 3,7915418 2,260102
14
2
Kwiksav
e
3,348327
5 0,5891881
4
3 Asda 9,0374358
4,682625
2 93 Tesco 13,322723 0,0315969
14
3
Kwiksav
e
4,023235
9 0,5951672
4
4 Asda 0,2223212
4,502175
1 94 Tesco 16,203732 1,5478631
14
4 Asda
4,461735
9 1,5064437
4
5 Asda 1,0549084
1,432809
4 95 Asda 14,15626 0,3543761
14
5
Kwiksav
e
4,523626
8 0,6984191
4
6 Tesco 16,134673
4,974820
6 96
Kwiksav
e 4,237961 0,6247754
14
6
Kwiksav
e
3,535109
5 0,0191963
4
7 Safeway 13,939698
0,087849
9 97 Asda 4,1038451 3,7764157
14
7 Safeway 3,359899 1,2045437
4
8 Safeway 12,890374
3,483064
1 98 Tesco 17,003936 3,5176455
14
8
Waitros
e
1,326975
9 10,969406
4
9 Safeway 18,535007
3,184045
5 99 Asda 15,937569 3,3615459
14
9 Tesco
5,219338
5 5,4446304
5
0 Tesco 13,969315
2,182867
4
10
0
Kwiksav
e 0,8117748 0,6807314
15
0 Tesco
0,248401
6 4,7082002
Penyelesaian :
1) Mula-mula lakukan pemanggilan data di R yang berlokasi di C: dengan syntax
sebagai berikut
> data=read.table("C://data.txt",header=TRUE)
2) Masukan function yang akan digunakan dengan mengkopinya ke R scrip
> bootstrap=function(data,m,n)
+ {
+ resam=matrix(nrow=m,ncol=n)
+ rata=matrix(nrow=1,ncol=n)
10FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
+ for (i in 1:n)
+ {
+ resam[ ,i]=sample(data,m)
+ rata[ ,i]=mean(resam[ ,i])
+ }
+ bootstrap=mean(rata)
+ list("Hasil sampling dari data adalah sebagai berikut",resam,
+ "Rata-rata dari masing-masing kolom adalah sebagai berikut",rata,
+ "Parameter Bootstrap",bootstrap)
+ }
dan
> jacknife=function(data)
+ {
+ n=length(data)
+ resam=matrix(nrow=(n-1),ncol=n)
+ rata=matrix(nrow=1,ncol=n)
+ for(i in 1:n)
+ {
+ urut=c(1:n)
+ dd=which(urut!=i)
+ resam[ ,i]=data[dd]
+ rata[ ,i]=mean(resam[ ,i])
+ }
+ jacknife=mean(rata)
+ list("Hasil sampling dari data adalah sebagai berikut",resam,
+ "Rata-rata dari masing-masing kolom adalah sebagai berikut",rata,
+ "Parameter Jacknife",jacknife)
+ }
3) Menjalankan program, mula-mula akan dicari parameter bootstrap untuk variabel
penjualan daging dengan sampel sebanyak sepuluh yang diulang sepuluh kali,
maka untuk menjalankan program synyax yang harus dimasukan adalah sebagai
berikut
> bootstrap(data$meat,10,10)
11FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
4) Setelah program dijalankan akan ditampilkan output sebagai beikut
Gambar 5.5 Output untuk bootstrap data penjualan daging
5) Dengan data yang sama, akan dicari parameter jacknife-nya dengan syntax sebagai
berikut
> jacknife(data$meat)
6) Setelah program dijalankan akan ditampilkan output sebagai beikut
(output terlalu besar untuk ditampilkan)
7) Dengan cara yang sama, akan dicari parameter bootstrap untuk variabel penjualan
ikan dengan syntax sebagai berikut
> bootstrap(data$fish,10,10)
8) Setelah program dijalankan akan ditampilkan output sebagai beikut
12FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
Gambar 5.6 Output untuk bootstrap data penjualan ikan
9) Dengan data yang sama, akan dicari parameter jacknife-nya dengan syntax sebagai
berikut
> jacknife(data$fish)
10) Setelah program dijalankan akan ditampilkan output sebagai beikut
(output terlalu besar untuk ditampilkan)
5.6 Intepretasi
a.) Bootstrap
Dari studi kasus diatas parameter bootstrap untuk rata-rata pembelian daging di
supermarket dengan sampel sebanyak sepuluh dan diulang sebanyak sepuluh kali
diperoleh sebesar 74,2. Sedangkan untuk parameter bootstrap dari penjualan ikan di
supermarket yang disampel sebanyak sepuluh kali dan diulang sebanyak sepuluh kali
diperoleh parameter bootstrap sebesar 71,63.
13FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091
BOOTSTRAP DAN JACKNIFE
b.) Jacknife
Dari studi kasus diatas parameter jacknife untuk rata-rata pembelian daging di
supermarket diperoleh sebesar 75,5. Sedangkan untuk parameter jacknife dari
penjualan ikan di supermarket diperoleh sebesar 75,5.
5.7 Referensi
elesys.fst.unair.ac.id/admin/materi/modul%207%20Regresi%20Bootstrap.pdf
elesys.fst.unair.ac.id/admin/materi/modul%206%20Regresi%20Jackknife.pdf
http://cran.r-project.org/web/packages/bootstrap/bootstrap.pdf
14FAHRUL ROZI PERDANA 1309100016DIMAS AGUNG DERMAWAN 1309100080MUINAH KHUSNUL KHOTIMAH 1309100091