Anda di halaman 1dari 13

5

Komputasi Statistika
Bootstrap dan
Jacknife
Disusun oleh:
Fahrul Rozi Perdana 1309100016
Dimas Agung Dermawan 1309100080
Muinah Khusnul Khotimah 1309100091

BOOTSTRAP DAN JACKNIFE
2
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091
5. Bootstrap dan J acknife
5.1 Konsep Dasar Bootstrap dan J acknife
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
REP , b 2 , b 1 , b

, . . . ,

,
bentuk umumnya
i , b

.
4.) Perhitungan penaksir bootstrap,
bootstrap


REP
1 i
i , b b

REP
1


i , j i , b

atau

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 : ;

, . . . ,

n , j 2 , j 1 , j

bentuk umumnya
i , j

.
4.) Perhitungan penaksir jackknife,
j ackknife


n
1 i
i , j j

n
1


i , j i , b

atau

suatu penaksir parameter, pada penerapannya dapat berupa : mean, varian,


standart deviasi, korelasi, dan koefisien regresi.

5.2 Function with R
BOOTSTRAP DAN JACKNIFE
3
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091
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 berikut
BOOTSTRAP DAN JACKNIFE
4
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091
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
BOOTSTRAP DAN JACKNIFE
5
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091
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...
BOOTSTRAP DAN JACKNIFE
6
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091

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.
BOOTSTRAP DAN JACKNIFE
7
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091
> 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))
}
}
BOOTSTRAP DAN JACKNIFE
8
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091
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 supermar meat fish id supermar meat fish id supermar meat fish
1 Asda 10,322653 2,3861231 51 Asda 1,7157256 4,3758162 101 Kwiksave 1,3027846 0,0125994
2 Asda 1,4643201 3,004063 52 Kwiksave 2,4994077 1,0452275 102 Waitrose 7,1370851 4,655144
3 Tesco 8,0185099 2,5948044 53 Kwiksave 0,4370254 0,0948342 103 Asda 15,206949 4,567109
4 Tesco 4,0296163 4,517541 54 Asda 19,380455 2,5996484 104 Asda 10,440237 5,403403
5 Asda 2,0955085 5,7615665 55 Kwiksave 2,1710175 0,6352293 105 Asda 8,2064682 6,5558877
6 Kwiksave 0,4303825 0,5287868 56 Kwiksave 1,5538654 0,4365477 106 Tesco 15,292023 3,7915592
7 Asda 4,4599574 0,3633813 57 Safeway 5,5151255 2,1715356 107 Safeway 5,2835624 3,653286
8 Tesco 14,857673 3,0658681 58 Waitrose 6,4629234 13,060157 108 Safeway 3,325809 2,0736744
9 Asda 2,7347935 2,3991265 59 Tesco 7,3345978 0,6319632 109 Safeway 3,3025043 1,1152319
10 Kwiksave 4,6476714 1,0585506 60 Tesco 12,530441 1,281835 110 Tesco 9,9697096 0,4101632
11 Kwiksave 1,5326935 0,5260032 61 Asda 16,611546 2,9776814 111 Asda 5,2770153 1,2909824
12 Waitrose 9,7226414 5,7779875 62 Asda 9,0297608 6,0514262 112 Kwiksave 2,0608087 0,7906768
13 Asda 0,0784094 0,2949005 63 Tesco 0,764474 1,2844074 113 Kwiksave 4,3281138 0,2856731
14 Asda 8,5275716 1,6203006 64 Tesco 17,366112 5,410634 114 Asda 8,7935719 2,8613383
15 Asda 9,2553499 2,0474477 65 Asda 3,6480306 1,5389808 115 Kwiksave 1,1550037 0,2234738
16 Tesco 0,4870781 4,8607819 66 Kwiksave 3,0664937 0,006846 116 Kwiksave 3,2399207 0,8439524
17 Safeway 12,661773 0,3295072 67 Asda 5,1963218 4,0797687 117 Safeway 3,7271603 3,8553719
18 Safeway 13,775829 0,3362306 68 Tesco 8,1048925 5,5037817 118 Waitrose 1,4080031 11,436994
19 Safeway 13,325666 2,5916863 69 Asda 2,8003585 2,7953703 119 Tesco 12,225152 0,4096869
20 Tesco 18,137614 3,7575645 70 Kwiksave 2,3041155 0,6226478 120 Tesco 6,2075969 2,495203
21 Asda 9,7876365 0,4294171 71 Kwiksave 0,2540089 0,7631104 121 Asda 10,999781 1,0738673
22 Kwiksave 0,8753505 1,0756809 72 Waitrose 7,927984 3,7554579 122 Asda 11,699251 0,2279559
23 Kwiksave 2,488933 0,2137303 73 Asda 8,6088623 4,5461244 123 Tesco 2,9710053 0,294369
24 Asda 11,320505 1,4572444 74 Asda 8,6721423 2,379338 124 Tesco 1,6694688 0,6651582
25 Kwiksave 2,7819085 0,9377464 75 Asda 5,0926088 1,4259416 125 Asda 3,2760023 4,2658948
26 Kwiksave 1,4720683 0,298355 76 Tesco 13,72459 4,9287212 126 Kwiksave 0,6969393 0,7073966
27 Safeway 1,9634489 4,594448 77 Safeway 17,402173 2,2440724 127 Asda 14,780588 0,520728
28 Waitrose 0,8995939 11,783285 78 Safeway 12,706044 0,4455474 128 Tesco 11,620895 0,7547793
BOOTSTRAP DAN JACKNIFE
9
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091
29 Tesco 16,475975 0,9104339 79 Safeway 10,250837 2,2048052 129 Asda 6,9616775 2,2703294
30 Tesco 1,6782493 1,9852208 80 Tesco 9,9406217 6,9216456 130 Kwiksave 2,7780798 0,5242639
31 Asda 16,467436 3,3882675 81 Asda 14,748912 3,6329385 131 Kwiksave 2,7814217 0,0966719
32 Asda 1,4849857 0,601632 82 Kwiksave 2,4834293 0,38972 132 Waitrose 9,0366236 14,479333
33 Tesco 12,40132 1,0282809 83 Kwiksave 0,6221616 0,6079264 133 Asda 4,8606059 3,0257983
34 Tesco 0,1289459 5,5883815 84 Asda 13,928966 2,7649615 134 Asda 6,7185582 4,3008814
35 Asda 14,150936 0,0615815 85 Kwiksave 3,8941422 0,9302048 135 Asda 11,795461 1,5435084
36 Kwiksave 4,3348919 0,3733553 86 Kwiksave 1,4050079 0,1376247 136 Tesco 18,921059 0,1616451
37 Asda 8,2222849 0,3490028 87 Safeway 1,2944036 1,1178463 137 Safeway 14,813999 0,9354289
38 Tesco 13,838784 2,6331471 88 Waitrose 0,9010421 5,2298848 138 Safeway 2,0463381 0,1402601
39 Asda 8,0989954 2,6305881 89 Tesco 15,800813 2,5154729 139 Safeway 5,9657449 2,8828583
40 Kwiksave 0,5780798 0,4185261 90 Tesco 3,4893648 2,1090343 140 Tesco 3,1510974 3,2320971
41 Kwiksave 1,750743 0,3645965 91 Asda 1,493058 2,1172192 141 Asda 0,0837692 0,5686055
42 Waitrose 2,430366 13,502674 92 Asda 3,7915418 2,260102 142 Kwiksave 3,3483275 0,5891881
43 Asda 9,0374358 4,6826252 93 Tesco 13,322723 0,0315969 143 Kwiksave 4,0232359 0,5951672
44 Asda 0,2223212 4,5021751 94 Tesco 16,203732 1,5478631 144 Asda 4,4617359 1,5064437
45 Asda 1,0549084 1,4328094 95 Asda 14,15626 0,3543761 145 Kwiksave 4,5236268 0,6984191
46 Tesco 16,134673 4,9748206 96 Kwiksave 4,237961 0,6247754 146 Kwiksave 3,5351095 0,0191963
47 Safeway 13,939698 0,0878499 97 Asda 4,1038451 3,7764157 147 Safeway 3,359899 1,2045437
48 Safeway 12,890374 3,4830641 98 Tesco 17,003936 3,5176455 148 Waitrose 1,3269759 10,969406
49 Safeway 18,535007 3,1840455 99 Asda 15,937569 3,3615459 149 Tesco 5,2193385 5,4446304
50 Tesco 13,969315 2,1828674 100 Kwiksave 0,8117748 0,6807314 150 Tesco 0,2484016 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)
+ for (i in 1:n)
+ {
+ resam[ ,i]=sample(data,m)
+ rata[ ,i]=mean(resam[ ,i])
+ }
+ bootstrap=mean(rata)
BOOTSTRAP DAN JACKNIFE
10
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091
+ 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)
4) Setelah program dijalankan akan ditampilkan output sebagai beikut
BOOTSTRAP DAN JACKNIFE
11
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091

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
BOOTSTRAP DAN JACKNIFE
12
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091

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.



BOOTSTRAP DAN JACKNIFE
13
FAHRUL ROZI PERDANA 1309100016
DIMAS AGUNG DERMAWAN 1309100080
MUINAH KHUSNUL KHOTIMAH 1309100091
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

Anda mungkin juga menyukai