Tugas Kelompok Komstat Jan2011- Simulasi Bootstrap-Deni Irvani
-
Upload
deni-irvani -
Category
Documents
-
view
518 -
download
9
Transcript of Tugas Kelompok Komstat Jan2011- Simulasi Bootstrap-Deni Irvani
TUGAS KELOMPOK KOMPUTASI STATISTIKA
PENDUGAAN SELANG KEPERCAYAAN DENGAN
METODE BOOTSTRAP
Kajian atas suatu makalah berjudul “A Practical Introduction to the Bootstrap Using the SAS System”
OLEH:
DENI IRVANI (G152100111) ZULFIKAR ()
LIMARTEN SIMATUPANG ()
diserahkan pada: 18 Januari 2011
DEPARTEMEN STATISTIKA SEKOLAH PASCASARJANA
INSTITUT PERTANIAN BOGOR
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 1
PENDAHULUAN
Nancy Barker, melalui makalahnya “A Practical Introduction to the Bootstrap Using the SAS System”, memberi penjelasan yang sangat praktis bagaimana menerapkan metode bootstrap untuk melakukan inferensi statistik dengan bantuan program SAS. Dimisalkan ada suatu data sampel berupa respons perubahan yang dialami oleh 10 subjek setelah mendapat perlakuan pengobatan: 196, ‐12, 280, 212, 52, 100, ‐206, 188, ‐100, 202. Dari sampel yang kecil tersebut kemudian ditentukan nilai dugaan galat baku (standard error) berdasarkan simulasi bootstrap sebagai alat untuk menginferensi rataan.
Lebih jauh Barker juga menjelaskan bagaimana menerapkan metode bootstrap untuk menganalisis perbadingan rataan dua kelompok: kelompok yang diberikan pengobatan aktif (ACTIVE) dan kelompok yang diberikan pengobatan placebo (PLACEBO). Data untuk kelompok ACTIVE seperti dideskripsikan di atas, sedangkan data untuk kelompok PLACEBO: 120, ‐80, ‐63, 200, 23, 54, ‐198, 165, ‐8, 19.
Tulisan ini bermaksud mengkaji dan menelusuri penjelasan Barker, khususnya mengenai cara menentukan selang kepercayaan melalui metode selang t‐bootstrap dan selang persentil dengan menggunakan program SAS.
BOOTSTRAP: METODE ALTERNATIF UNTUK MELAKUKAN INFERENSI STATISTIK
Sebaran t‐student biasa dimanfaatkan oleh statistikawan untuk menduga selang kepercayaan. Semuanya mafhum bahwa asumsi kenormalan merupakan syarat dasar yang harus terpenuhi; karena itu, sebelum menyodorkan dugaan selang kepercayaan statistikawan umumnya menyibukkan diri dengan berbagai penjelasan, sedemikian rupa sehinggga penggunaan t‐student memperoleh pembenaran.
Jika yang dievaluasi adalah statistik rataan para statistikawan dapat tertolong oleh dalil limit pusat yang menyatakan bahwa sebaran rataan mendekati normal apabila sampel yang diambil berukuran besar, tak peduli apa sebaran asalnya. Namun, kenyataan yang dialami kadang tidak sesempurna itu. Pada suatu kesempatan, mungkin saja sampel yang diambil berukuran kecil sehingga dalil limit pusat tidak bisa menjadi sandaran, dan pada saat yang sama sebaran populasi sama sekali tidak diketahui.
Kalau sampelnya cukup besar, meskipun sebaran populasi tidak diketahui kenormalan data masih bisa diidentifikasi dengan uji kebaikan suai, tapi kalau sampelnya kecil uji kebaikan suai umumnya gagal memberi garansi kenormalan.
Sampel kecil bukanlah satu‐satunya masalah yang dapat menghambat pekerjaan statistikawan. Masalah lain yang dapat muncul adalah ketika yang mau dievaluasi bukan statistik rataan, misalnya median. Kita tahu t‐student tidak di”ciptakan” sebagai alat untuk menganalisis median; lalu bagaimana kalau kita tetap ingin tahu standar errornya? Apakah hal itu bisa dilakukan?
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 2
Kadangkala ada oknum statistikawan yang memaksakan penggunaan statistik t‐student agar dapat memenuhi keinginannya melakukan inferensi dengan cara menyatakan bahwa data yang dianalisis diasumsikan menyebar normal, meskipun sebenarnya asumsi tersebut bukan berasal dari fakta atau hasil pengujian yang ketat, melainkan harapan belaka. Tindakan ini menanggung konsekuensi: kalau pada kenyataaan asumsi kenormalan tidak terpenuhi maka hasil inferensinya akan salah.
Kesalahan yang dilakukan oleh seorang statistikawan bisa saja berakibat fatal. Pengujian pengaruh obat, misalnya, menuntut ketelitian dan keabsahan dari metode yang digunakan. Jika metodenya salah maka hasil pengujiannya bisa salah, dan pada akhirnya kesalahan tersebut bisa mengancam jiwa manusia. Gambaran ini akan membuat statistikawan merasa terpojok. Lantas apa yang bisa dilakukan saat kita berada dalam kondisi yang penuh keterbatasan? Metode apa yang bisa dijadikan sebagai jalan keluar? Tidak ada solusi tunggal dan pasti, namun metode Bootstrap memungkinkan kita menemukan jalan keluar.
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 3
TINJAUAN METODE BOOTSTRAP
Metode pem‐bootstrap‐an pertama kali diperkenalkan oleh Efron sebagai sebuah metode untuk menurunkan nilai dugaan galat baku (standard error) dari suatu penduga tak tentu. Mencari galat baku suatu nilai dugaan adalah sebuah kegiatan yang penting bagi setiap statistikawan karena umumnya tidak merasa cukup hanya dengan nilai dugaan titik; kita selalu ingin tahu sebarapa layakkah si penduga — bagaimana keragaman dari penduga? Dalam kenyataannya, kadang para statistikawan begitu ”serakah” dan tidak hanya ingin tahu dugaan titik dan galat bakunya saja tapi juga hal‐hal lain seperti bias atau bahkan sebaran lengkap dari penduga (Nancy Barker).
Bootstrap ialah sebuah jalan keluar yang patut dicoba ketika statistikawan yang ”serakah” terperangkap sejumlah persoalan, seperti tidak terpenuhinya asumsi kenormalan akibat dari sampel kecil, adanya hubungan tak linear antar peubah (misalnya rasio), atau ketika statistik yang ingin dievaluasi bukanlah rataan. Dengan Bootstrap, kita dapat membuat inferensi seperti selang kepercayaan tanpa mengetahui sebaran populasi. Penjelasan detail tentang metode ini dapat dibaca di dalam buku yang ditulis Efron dan Tibshirani: ”An Introduction to the Bootstrap” (1993).
Menurut Efron dan Tibshirani, teori statistika berusaha menjawab tiga pertanyaan mendasar:
1) Bagaimana cara mengumpulkada data?
2) Bagaimana cara menganalisis dan meringkas data yang telah terkumpul?
3) Seberapa akurat ringkasan data yang telah dibuat?
Pertanyaan ketiga, menaksir AKURASI, berhubungan dengan proses inferensi statistik. Bootstrap merupakan suatu teknik baru dan terus berkembang sebagai upaya untuk menjawabnya
Menaksir akurasi dari suatu penduga merupakan salah satu tujuan yang umumnya ingin dicapai oleh statistikawan, tapi sayangnya hal ini tidak selamanya mudah dilakukan. Jika yang sedang dievaluasi adalah rataan, formula tingkat akurasi
bisa diperoleh dengan mudah, yakni n
s 2
, yang dikenal sebagai dugaan standard error.
Tapi kalau yang dievaluasi adalah statistik selain rataan, itu berarti statistikawan sedang menjumpai masalah.
MENDUGA STANDARD ERROR
Standard error dari suatu penduga didefinisikan sebagai akar kuadrat dari ragamnya. Ini merupakan ukuran yang paling umum untuk akurasi suatu penduga.
Menduga standard error adalah langkah awal yang sangat baik untuk berpikir kritis terhadap nilai dugaan. Sayangnya standar error mempunyai kelemahan besar: untuk kebanyakan penduga selain rataan tidak tersedia formula untuk dugaan standard error. Dengan kata lain, sulit menerka akurasi suatu nilai dugaan selain
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 4
rataan. Lalu bagaimana caranya mengetahui tingkat keakuratan statistik selain rataan, misalnya median? Bootstrap hadir untuk menjawab pertanyaan seperti ini .
Untuk memahami bagaimana proses metode bootstrap dalam mengestimasi standard errror suatu statistik, Efron dan Tibshirani memberikan gambaran dengan skema di bawah ini:
Skema di atas menjelaskan bahwa standar error dari suatu statistik s(X) dapat diduga oleh standar deviasi dari nilai‐nilai replikasi bootstrap s(X*1), s(X*2), ..., s(X*B), di mana B adalah banyaknya sampel bootstrap yang dibangkitkan dari data melalui penarikan sampel dengan pengembalian, dan masing‐masing sampel bootstrap berukuran n (banyaknya observasi pada data asal).
MENETUKAN SELANG KEPERCAYAAN BOOTSTRAP
Lebih jauh, Efron dan Tibshirani menjelaskan dengan sangat detail bagaimana teknik menduga selang kepercayaan dari suatu parameter: melalui ”tabel” bootstrap (t‐boostrap) dan persentil bootstrap, serta berbagai metode yang bisa digunakan untuk mengoreksi hasilnya. Merujuk ke Efron dan Tibshirani, Nancy Barker menjelaskannya dengan cara yang lebih ringkas.
Misalkan ada suatu nilai dugaan dan dugaan standard error es , maka selang kepercayaan 95% yang umum ialah:
RATAAN ± 1.96*SE = es*96.1ˆ
Ini didasarkan pada asumsi bahwa:
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 5
)1,0(~ˆ
ˆN
esZ
(yakni mendekati sebaran normal baku)
Ini sah jika n , tapi hanya sebuah pendekatan untuk sampel terbatas. Pendekatan yang mungkin lebih baik ialah dengan menggunakan sebaran t dengan mengasumsikan
)1(~ˆ
ˆ
nt
esZ
(yakni mendekati sebaran t dengan derajat bebas n‐1).
Untuk sampel kecil ini merupakan pendekatan yang lebih baik, namun penggunaan sebaran‐t tidak meng‐adjust selang kepercayaan untuk menjelaskan kemenjuluran
yang asli dari populasi – atau galat lain yang muncul ketika bukan rataan.
Dengan menggunakan metode bootstrap bisa diperoleh selang yang akurat tanpa harus membuat asumsi teori normal.
SELANG T‐BOOTSTRAP
Metode ini menyediakan jalan bagi kita untuk menduga sebaran statistik es
Zˆ
ˆ
secara langsung dari data. Misalkan kita buat sekumpulan sampel bootstrap. Pada setiap sampel bootstrap kita duga nilai‐nilai Z dengan cara berikut:
)(*ˆ
ˆ)(*ˆ)(*
bes
bbZ
di mana )(*ˆ b adalah nilai dugaan untuk sampel bootstrap ke‐b dan )(*ˆ bes adalah
dugaan standar error untuk * dari sampel bootstrap ke‐b.
Persentil ke‐α dari )(* bZ diduga sebagai nilai )(ˆ t , sedemikian:
B
tbZ )(ˆ)(*#
dimana {x} merupakan banyaknya observasi yang memenuhi kondisi x.
Selang kepercayaan kemudian ditentukan sebagai berikut:
estest ˆ.ˆˆ,ˆˆˆ )()1(
Namun demikian, apa yang terjadi jika kita ingin melihat suatu statistik yang di mana tidak ada pendekatan parametrik untuk standar errornya (misalnya statistik median)? Untuk mendekati standar errornya kita harus menghitung dugaan bootstrap untuk setiap sampel bootstrap. Dengan kata lain, dibuat dua level yang tersarang dari pembootrstrapan. Tapi membatasi kajian, dalam tulisan ini kita hanya akan membahas metode bootstrap dalam mengevaluasi statistik rataan saja.
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 6
SELANG PERSENTIL
Ini adalah metode yang paling sederhana untuk menghitung suatu selang kepercayaan bootstrap. Jika kita ingin menghitung selang kepercayaan 95% kita pilih nilai‐nilai dugaan bootstrap yang terentang antara persentil ke 2.5 dan persentil ke 97.5. Misalnya saja kita telah menghitung 10000 nilai‐nilai dugaan bootstrap. Kita urutkan nilai‐nilai tersebut dari yang terendah sampai tertinggi dan ambil nilai ke‐250 sebagai batas bawah dan nilai ke‐9750 sebagai batas atas (Barker).
ALGORITME BOOTSTRAP
Untuk mempermudah pemahaman, Barker meringkas teknik bootstrap ke dalam 3 langkah berikut:
1. Buat replikasi Bootstrap melalui re‐sampling dengan pemulihan
2. Hitung statistik yang mau dievaluasi untuk setiap sampel
3. Gunakan sebaran statistik hasil replikasi untuk membuat inferensi
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 7
SIMULASI BOOTSTRAP UNTUK SATU DATA SAMPEL
CONTOH KASUS: INFERENSI RATAAN PADA KELOMPOK ”ACTIVE”
Kembali ke kasus kita untuk mengkaji penjelasan Nancy Barker dalam menerapkan metode bootstrap pada data kelompok ACTIVE dengan cara menelusuri program SAS yang dibuatnya.
RATAAN DATA ORIGINAL
Yang pertama akan kita lakukan adalah mengetahui statistik rataan kelompok ACTIVE. Untuk memulai pekerjaan, kita buat terlebih dahulu gugus data kelompok ACTIVE dengan memasukkan pernyataan berikut:
Ouput dari PROC PRINT atas data ORIGINAL ditampilkan di bawah ini.
Selanjutnya kita lihat statistik rataan dari data ORIGINAL tersebut dengan pernyataan berikut:
data ORIGINAL; input active@@; cards; 196 -12 280 212 52 100 -206 188 -100 202 ; run; proc print data=ORIGINAL; run;
Obs active 1 196 2 -12 3 280 4 212 5 52 6 100 7 -206 8 188 9 -100 10 202
proc means data=ORIGINAL noprint nway; var active; output out=MEAN_ORIGINAL mean=mean_original; run;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 8
Hasil PROC MEANS di atas tidak dicetak, tapi disimpan di suati gugus data bernama “MEAN_ORIGINAL”. Jika dicetak, isi dari gugus data MEAN_ORIGINAL tersebut adalah sebagai berikut:
Sekarang kita tahu bahwa nilai rataan kelompok ACTIVE adalah 91.2.
RESAMPLING DATA ORIGINAL: MEMBUAT SEBUAH SAMPEL BOOTSTRAP
Selanjutnya kita masukkan pernyataan program untuk membuat 1 buah sampel bootstrap (resampling dengan pemulihan) dari data ORIGINAL, dan menelusuri maksud dari setiap pernyataannya. Pernyataan tersebut adalah sebagai berikut:
Jika dicetak, isi gugus data BOOTSAMP bisa digambarkan sebagai berikut:
Gugus data BOOTSAMP di atas terdiri dari 10 observasi dan 2 kolom (kolom i dan active). Nilai‐nilai pada kolom active merupakan hasil penarikan sampel berukuran 10 dari data ORIGINAL dengan pemulihan. Adanya unsur pemulihan dapat terlihat dari munculnya sejumlah nilai yang sama pada kolom active, yaitu: 188 (muncul 3 kali) dan 196 (muncul 3 kali).
data BOOTSAMP; do i = 1 to nobs; x = round(ranuni(0) * nobs); set original nobs = nobs point = x; output; end; stop; run;
Obs i active 1 1 188 2 2 196 3 3 212 4 4 202 5 5 188 6 6 196 7 7 196 8 8 188 9 9 280 10 10 52
mean_ Obs _TYPE_ _FREQ_ original 1 0 10 91.2
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 9
Berikut ini adalah penjelasan maksud dari setiap baris pernyataan dalam tahapan data BOOTSAMP.
NO PERNYATAAN MAKSUD DAN KEGUNAAN
1 data BOOTSAMP; Membuat gugus data bernama “BOOTSAMP”
2 do i = 1 to nobs;
Membuat DO‐iterasi dengan ulangan sebanyak nobs, dimulai dari i=1 sampai i=nobs. nobs merupakan nilai dari suatu peubah yang pendefinisiannya terletak pada baris pernyataan ke‐4 di bawah.
Pada baris pernyataan ke‐4, pernyataan SET ditambahkan dengan OPTION nobs=nobs. nobs disebelah kiri ”=” berarti jumlah observasi pada data original, sedangkan nobs di sebelah kanan “=” adalah nama peubah yang didefinisikan.
Dalam kasus kita ini, jumlah observasi pada data original adalah 10, sehingga pernyataan do i = 1 to nobs setara dengan pernyataan do i = 1 to 10.
3 x = round(ranuni(0) * nobs);
Membangkitkan sebuah bilangan acak dari sebaran seragam(0,1), lalu bilangan acak tersebut dikalikan dengan nobs (nilai dari peubah yang didefinisikan pada baris ke‐4). Selanjutnya hasil perkalian tersebut dibulatkan dan nilainya dimasukkan ke dalam suatu peubah yang bernama x.
Jelasnya bisa dicermati ilustrasi berikut:
1. misalkan ranuni(0) = 0.7992
2. (ranuni(0) * nobs) 0.7992*10= 7.992
3. x = round(ranuni(0) * nobs) = 8
Perlu diketahui bahwa fungsi RANUNI mengandung argumen (seed). Argumen seed merupakan sebuah bilangan bulat tak negatif yang harus diisi secara sembarang dengan batasan seed<231‐1. Jika kita menggunakan seed positif, kita bisa mereplikasi aliran angka acak dengan menggunakan tahapan data yang sama. Jika kita menggunakan nol sebagai seed (seperti dalam program ini), maka jam komputer yang menginisialisasi alirannya, sehingga aliran angka acak tidak berulang.
4 set ORIGINAL nobs = nobs point = x;
Menggunakan gugus data ORIGINAL, dengan menambahkan OPTIONS nobs=nobs dan point=x.
OPTIONS nobs=nobs sudah dijelaskan pada No.2 di
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 10
atas.
OPTIONS point = x maksudnya adalah menunjuk baris ke‐x pada data original.
Melanjutkan ilustrasi pada penjelasan No.3 di atas, jika misalkan x=8, maka Point = x maksudnya menunjuk baris ke‐8 ada data original, yiatu baris yang berisi nilai active= 188.
5 output; Menyimpan satu baris data ORIGINAL yang telah ditunjuk ke dalam gugus data BOOTSAMP.
6 end; Mengakhiri DO‐iterasi
7 stop; Menghentikan kegiatan menunjuk baris pada data ORIGINAL
8 run; Menjalankan prosedur tahapan data BOOTSAMP
RESAMPLING DATA ORIGINAL: MEMBUAT 1000 BUAH SAMPEL BOOTSTRAP
Sekarang kita buat program SAS untuk menarik 1000 sample bootstrap (resampling 1000 kali) terhadap data original, dengan memasukkan pernyataan berikut:
Perhatikan, untuk membuat 1000 sampel bootstrap kita hanya menambahkan pernyataan DO‐iterasi do sampnum = 1 to 1000; dan mengahirinya dengan
end; pada pernyataan tahapan data BOOTSAMP yang dideskripsikan sebelumnya.
Jika gugus data BOOTSAMP dicetak, hasilnya bisa digambarkan sebagai berikut:
data BOOTSAMP; do sampnum = 1 to 1000; do i = 1 to nobs; x = round(ranuni(0) * nobs); set original nobs = nobs point = x; output; end; end; stop; run;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 11
REPLIKASI BOOTSTRAP: RATAAN DAN STANDAR ERROR MASING‐MASING SAMPLE BOOTSTRAP
Sekarang kita hitung rataan dan standar error dari masing‐masing (1000) sampel bootstrap. Untuk tujuan tersebut, pertama kita buat pernyataan berikut:
Pernyataan di atas dimaksudkan untuk memperoleh rataan‐rataan serta standar error dari 1000 sampel bootstrap, hasilnya tidak dicetak, tapi dimasukkan ke dalam sebuah gugus data baru bernama ”MEAN_BOOTSTRAP”; nama kolom untuk rataan adalah mean_bootstrap sedangkan nama kolom untuk standar error adalah se_bootstrap. Sementara itu OPTIONS nway ditambahkan dengan maksud agar statistik‐statistik (mean dan standar error) yang dihasilkan PROC MEANS ditampilkan pada kolom‐kolom tersendiri yang terpisah.
Jika gugus data MEAN_BOOTSTRAP dicetak, maka outputnya bisa digambarkan sebagai berikut:
proc means data=BOOTSAMP noprint nway noprint; var active; class sampnum; output out=MEAN_BOOTSTRAP n=n mean=mean_bootstrap stderr=se_bootstrap; run;
Obs sampnum i active 1 1 1 196 2 1 2 212 3 1 3 212 4 1 4 52 5 1 5 52 6 1 6 196 7 1 7 52 8 1 8 -206 9 1 9 188 10 1 10 188 ... ... ... ..... ... ... ... ..... ... ... ... ..... 9991 1000 1 100 9992 1000 2 -100 9993 1000 3 -100 9994 1000 4 280 9995 1000 5 -206 9996 1000 6 -206 9997 1000 7 -206 9998 1000 8 188 9999 1000 9 -100 10000 1000 10 -100
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 12
STANDAR ERROR DUGAAN
Dari Gugus data MEAN_BOOTSTRAP selanjutnya kita hitung standard error dugaan untuk rataan data ORIGINAL. Untuk tujuan tersebut kita buat pernyataan berikut:
Output pernyataan tersebut adalah sebagai berikut:
Dari output di atas dapat dilihat bahwa standar deviasi dari rataan‐rataan replikasi bootstrap adalah 49.70; ini adalah dugaan standar error untuk rataan pada data ORIGINAL. Standar error dugaan tersebut rencananya akan kita gunakan dalam proses inferensi rataan.
Sementara itu, nilai rataan dari rataan‐rataan replikasi bootstrap (83.09) seharusnya tidak perlu menjadi perhatian kita. Namun untuk kali ini kita harus mencermatinya dengan serius.
mean_ Obs sampnum _TYPE_ _FREQ_ n bootstrap se_bootstrap 1 1 1 10 10 124.2 47.9393 2 2 1 10 10 88.0 49.9982 3 3 1 10 10 29.8 46.3517 .... .... .. .. .. ..... ....... .... .... .. .. .. ..... ....... .... .... .. .. .. ..... ....... 1000 1000 1 10 10 129.2 34.2218
The MEANS Procedure
Analysis Variable : MEAN_BOOTSTRAP
Mean Std Dev ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 83.0918740 49.701981
ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
proc means data=MEAN_BOOTSTRAP mean stddev nway ; var mean_bootstrap; run;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 13
PROGRAM SAS YANG DIBUAT NANCY BARKER HARUS DIREVISI!
Jika diperhatikan, ada yang janggal dari output nilai rataan dari rataan‐rataan replikasi bootstrap (83.09). Nilai rataan tersebut tampak cukup jauh melenceng dari rataan data ORIGINAL (91.20). Ada kecenderungan bahwa rataan bootstrap berbias, dengan bias ≈ 83.09‐91.20 = ‐ 8.11. Ini hal yang aneh, sebab secara teori rataan sampel merupakan penduga tak bias bagi rataan populasi (data ORIGINAL bisa diandaikan sebagai populasi dari sampel bootstrap). Apakah karena sampel bootstrap yang kita buat tidak cukup banyak, hanya 1000, maka hasilnya tidak cukup baik digunakan untuk mengidentifikasi bias dari penduga?
Baiklah, untuk menghapus keraguan, kita tes bagaimana hasilnya seandainya sampel bootstrap dibuat lebih banyak, yaitu 1000.000, bukan hanya 1.000. Kita harapkan dengan replikasi yang 1000 kali lebih banyak dari sebelumnya maka kita tak lagi menjumpai perbedaan yang besar antara rataan sampel ORIGINAL dan rataan dari rataan‐rataan bootstrap. Untuk tujuan tersebut, maka kita buat program SAS berikut:
Ouput dari serangkaian pernyataan di atas ditampilkan di bawah ini:
Output PROC MEANS di atas memperlihatkan bahwa rataan dari rataan‐rataan bootstrap tetap berbias, padahal telah kita telah membuat replikasi bootstrap yang sangat banyak (1000.000). Biasnya tetap besar ≈ 85.42‐91.20 = ‐ 5.78. Apa yang
data BOOTSAMP; do sampnum = 1 to 1000000; do i = 1 to nobs; x = round(ranuni(0) * nobs); set original nobs = nobs point = x; output; end; end; stop; proc means data=BOOTSAMP noprint nway noprint; var active; class sampnum; output out=MEAN_BOOTSTRAP n=n mean=mean_bootstrap stderr=se_bootstrap; proc means data=MEAN_BOOTSTRAP mean stddev nway ; var mean_bootstrap; run;
The MEANS Procedure Analysis Variable : MEAN_BOOTSTRAP Mean Std Dev ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 85.4246530 49.5637555 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 14
sebenarnya terjadi? Untuk menjawab pertanyaan ini, mari kita cermati kembali pernyataan program SAS yang dibuat Barker khususnya pada bagian resampling:
Penyataan SAS tersebut dibuat oleh Barker dalam rangka menarik sampel dari data original. Teknisnya: memilih secara acak salah satu dari 10 baris data ORIGINAL, dan mengulangnya sampai 10 kali dengan pengembalian.
Penggunaan fungsi RANUNI pada pernyataan tersebut menjelaskan bahwa Barker bermaksud membuat setiap baris pada data original mempunyai peluang yang sama untuk terambil (seragam): peluang baris ke‐1 terambil adalah 10%, peluang baris ke‐2 terambil 10%, ... dan peluang baris ke‐10 terambil juga 10%. Maksud Barker tersebut jelasnya dituangkan dalam pernyataan baris ketiga dan keempat:
x = round(ranuni(0) * nobs); set original nobs = nobs point = x;
Tapi, tampaknya Barker telah membuat kesalahan.
Bila kita cermati, pernyataan x = round(ranuni(0) * nobs); adalah sumber masalah yang menyebabkan rataan bootstrap menjadi penduga yang bias untuk rataan data ORIGINAL, karena dengan pernyataan seperti itu maka baris ke‐10 pada data original (active=202) mempunyai peluang terambil yang lebih kecil.
Tepatnya, peluang masing‐masing baris terambil sebagai sampel bootstrap adalah sebagai berikut:
Baris active Peluang terambil
1 196 10.52632%
2 ‐12 10.52632% 3 280 10.52632% 4 212 10.52632% 5 52 10.52632% 6 100 10.52632% 7 ‐206 10.52632% 8 188 10.52632% 9 ‐100 10.52632% 10 202 5.26316%
Kenapa demikian, ikuti penjelasan berikut ini.
data BOOTSAMP; do i = 1 to nobs; x = round(ranuni(0) * nobs); set original nobs = nobs point = x; output; end; stop; run; proc print data=BOOTSAMP; run;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 15
OPTION POINT =
Proses yang dijalankan oleh SAS ketika option POINT = digunakan dijelaskan sebagai berikut:
POINT = x pada SAS didesain untuk menunjuk baris ke x dengan terlebih dahulu membulatkan nilai x, dengan ketentuan:
jika x ≥ 1, bulatkan nilai x ke bawah dan tunjuk nilai x yang sudah dibulatkan ke bawah tersebut.
misal: x=2.7 dibulatkan menjadi x=2, lalu ditunjuk baris ke‐2.
Jika 0<x<1, bulatkan nilai x menjadi 1 dan tunjuk nilai 1 tersebut.
misal: x=0.2 dibulatkan menjadi x=1, lalu ditunjuk baris ke‐1.
Jika x ≤ 0, tunjuk nilai yang sama dengan yang ditunjuk sebelumnya.
misal: jika yang ditunjuk sebelumnya adalah baris ke‐10, maka sekarang baris ke‐10 tersebut ditunjuk kembali. Kalau sebelumnya tidak ada yang ditunjuk, maka sekarang tidak menunjuk apapun; dalam kasus menunjuk baris ini maka hasilnya adalah nilai‐nilai ”missing”.
DEMONSTRASI PROSES SAS ATAS PROGRAM RESAMPLING YANG DIBUAT NANCY BARKER
Penjelasan option POINT di atas mungkin terlalu telalu abstrak dan menguras pikiran. Untuk mempermudah, ikuti demonstrasi berikut.
Pernyataan RANUNI(0) adalah untuk membangkitkan bilangan acak yang menyebar seragam(0,1). Dengan demikian, maka sebaran peluangnya bisa digambarkan dengan tabel di bawah ini.
Selang Angka Acak0.00
- 0.05
0.05 -
0.10
0.10 -
0.15
0.15 -
0.20
0.20 -
0.25
0.25 -
0.30
0.30 -
0.35
0.35 -
0.40
0.40 -
0.45
0.45 -
0.50
0.50 -
0.55
0.55 -
0.60
0.60 -
0.65
0.65 -
0.70
0.70 -
0.75
0.75 -
0.80
0.80 -
0.85
0.85 -
0.90
0.90 -
0.95
0.95 -
1.00
Peluang 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5%
Pernyataan ranuni(0) * nobs; membuat tabel sebaran peluang di atas berubah menjadi:
Selang Angka Acak0.0-0.5
0.5-1.0
1.0-1.5
1.5-2.0
2.0-2.5
2.5-3.0
3.0-3.5
3.5-4.0
4.0-4.5
4.5-5.0
5.0-5.5
5.5-6.0
6.0-6.5
6.5-7.0
7.0-7.5
7.5-8.0
8.0-8.5
8.5-9.0
9.0-9.5
9.5-10
Peluang 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5%
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 16
Peryataan x = round(ranuni(0) * nobs) membuat tabel sebaran peluang di atas berubah menjadi:
x 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
Peluang 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5%
Selanjutnya, peryataan set original point = x dimaksudkan untuk menunjuk baris ke‐x pada data original. Ilustrasinya sebagai berikut:
x 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
Peluang 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5%
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
196 196 -12 -12 280 280 212 212 52 52 100 100 -206 -206 188 188 -100 -100 202
5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5% 5%
0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263% 0.263%
5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263% 5.263%Total Peluang
observasi
active
P(X=observasi)
P(X=0, X=observasi) =5%/19
Tabel sebaran peluang terambilnya observasi pada data ORIGINAL di atas dapat disederhanakan sebagai berikut:
observasi 1 2 3 4 5 6 7 8 9 10
active 196 -12 280 212 52 100 -206 188 -100 202
Peluang 10.52632% 10.52632% 10.52632% 10.52632% 10.52632% 10.52632% 10.52632% 10.52632% 10.52632% 5.26316%
Dari tabel di atas dapat kita lihat bahwa peluang P(ACTIVE=active) tidak seragam, di mana P(ACTIVE=202) = 5.26316% lebih kecil dari P(ACTIVE=lainnya) = 10.52632%. Dengan kata lain unsur‐unsur pada data OBSERVASI tidak mempunyai peluang yang sama untuk terambil sebagai sampel bootstrap. Kondisi ini menyebabkan nilai harapan
dari sampel bootstrap berbias dari rataan ORIGINAL, E( *X ) ≠ X , dan otomatis
membuat E( *X ) ≠ X .
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 17
Dengan tabel sebaran peluang seperti di atas kita bisa hitung nilai harapan dari sampel
bootstrap: E( *X ) = )(10
1i
ii activepactive
= 196*10.53% + (‐12)*10.53% +
280*10.53% + ... + 202*5.26% = 85.4. Hasilnya sama dengan output simulasi 1000.000 replikasi rataan bootstrap yang berbias dari data original. REVISI PROGRAM SAS NANCY BARKER
Supaya setiap observasi pada data ORIGINAL berpeluang terambil yang sama sebagai sampel, maka pernyataan resampling yang dibuat Nancy Barker harus direvisi. Cara merevisinya sangat sederhana, yakni hanya dengan mengubah pernyataan
x = round(ranuni(0) * nobs);
menjadi
x = round(ranuni(0) * nobs + 0.5);
Berikut revisi program resampling secara lengkap:
Setelah menggunakan program resampling yang baru (revisi) tersebut dan melanjutkannya ke tahapan mencari dugaan standar error, maka didapatkan output PROC MEANS sebagaimana ditampilkan berikut:
Terlihat nilai rataan dari replikasi‐replikasi rataan (rataan bootstrap) (91.7) sangat dekat dengan rataan data original (91.2). Artinya kita telah berhasil menghilangkan
data BOOTSAMP; do sampnum = 1 to 1000; do i = 1 to nobs; x = round(ranuni(0) * nobs + 0.5); set original nobs = nobs point = x; output; end; end; stop; run;
The MEANS Procedure
Analysis Variable : MEAN_BOOTSTRAP
Mean Std Dev ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 91.7020000 46.6932494 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 18
masalah bias rataan bootstrap, dan juga berarti telah berhasil merevisi kesalahan program SAS buatan Nancy Barker.
Revisi ini sangat penting, sebab kesalahan kecil atas program resampling mempunyai dampak yang besar dan sistemik: membuat proses‐proses selanjutnya menghasilkan output yang salah.
MEMBUAT TABEL BOOTSTRAP
Sejauh ini kita telah membuat replikasi bootstrap berupa rataan‐rataan beserta standar errornya, dan semuanya telah dikumpulkan dalam sebuah gugus data bernama MEAN_BOOTSTRAP.
Dalam rangka rangka melakukan inferensi terhadap rataan kita lanjutkan pekerjaan ini
dengan membuat tabel boostrap yang berisi nilai‐nilai )(*ˆ
ˆ)(*ˆ)(*
bes
bbZ
. Untuk itu
kita buat program berikut ini:
Jika gugus data TABEL_BOOTSTRAP tersebut dicetak, maka outputnya bisa digambarkan sebagai berikut:
data TABEL_BOOTSTRAP (keep=sampnum n mean_bootstrap mean_original se_bootstrap t_bootstrap); do i=1 to 1000; x=1; set MEAN_BOOTSTRAP point =i; set MEAN_ORIGINAL point=x; t_bootstrap=(mean_bootstrap-mean_original)/se_bootstrap; output; end; stop; ; run;
mean_ mean_ Obs sampnum n bootstrap se_bootstrap original t_bootstrap 1 1 10 124.2 47.9393 91.2 0.68837 2 2 10 88.0 49.9982 91.2 -0.06400 3 3 10 29.8 46.3517 91.2 -1.32465 .... .... .. ..... ....... .... ........ .... .... .. ..... ....... .... ........ .... .... .. ..... ....... .... ........ 1000 1000 10 129.2 34.2218 91.2 1.11040
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 19
SELANG KEPERCAYAAN 90% DENGAN METODE SELANG T‐BOOTSTRAP
Selanjutnya kita duga selang kepercayaan 90% untuk rataan melalui metode selang t‐bootstrap. Pertama kita urutkan data TABEL_BOOTSTRAP berdasarkan kolom t_bootstrap dari nilai terkecil sampai yang terbesar dengan membuat pernyataan berikut:
Kemudian kita cari berapa nilai t‐bootstrap pada posisi urutan ke‐50 %)5(t dan posisi
urutan ke‐950 %)95(t . Untuk tujuan tersebut kita buat pernyataan berikut:
Output dari PROC PRINT atas data T_BOOTSTRAP di atas di ditampilkan di bawah ini.
Lalu kita duga selang kepercayaan rataan dengan mengikuti formula selang
kepercayaan t‐bootstrap: estest ˆ.ˆˆ,ˆˆˆ )()1( .
x 91.2
SK 90% α=5%
%)5()( ˆˆ tt = ‐1.58
%)95()1( ˆˆ tt = 2.25
es = 46.69
Dengan demikian, selang kepercayaan 90% untuk rataan adalah:
( 91.2 − 2.25 ×46.69 , 91.2 +1.58 × 46.69 ) = (‐13.85 , 164.97 )
proc sort data=TABEL_BOOTSTRAP out=TABEL_BOOTSTRAP; BY t_bootstrap; run;
data T_BOOTSTRAP; set TABEL_BOOTSTRAP end=eof; retain t_5 t_95; if _n_= 50 then t_5=t_bootstrap; if _n_=950 then t_95=t_bootstrap; if eof then output; keep t_5 t_95; proc print DATA=T_BOOTSTRAP NOOBS; run;
t_5 t_95 -1.57935 2.25493
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 20
SELANG KEPERCAYAAN 90% BOOTSTRAP DENGAN METODE PERSENTIL
Sebagai alternatif, sebagaimana diterangkan oleh Efron kita bisa menggunakan pendekatan persentil untuk mengukur selang kepercayaan.
Untuk tujuan tersebut, pertama kita urutkan terlebih dahulu data gugus data TABEL_BOOTSTRAP berdasakan kolom mean_bootstrap, dengan membuat pernyataan berikut:
Setelah data diurutkan, kemudian kita buat pernyataan berikut:
Ouput dari pernyataan di atas adalah:
Jadi, dugaan selang kepercayaan untuk rata‐rata dengan metode persentil adalah: antara 14.8 sampai 164.2.
Jika dibandingkan dengan hasil dugaan selang t‐bootstrap, selang persentil di atas lebih rapat. Dengan demikian, metode selang persentil memberikan nilai dugaan akurasi yang lebih optimistis dibandingkan metode selang t‐bootstrap.
proc sort data=TABEL_BOOTSTRAP out=TABEL_BOOTSTRAP; by mean_bootstrap; run;
data PERC_BOOTSTRAP; set TABEL_BOOTSTRAP end=eof; retain Percentil5 Percentil95; if _n_= 50 then Percentil5=mean_bootstrap; if _n_=950 then Percentil95=mean_bootstrap; if eof then output; keep Percentil5 Percentil95; proc print data=PERC_BOOTSTRAP NOOBS; run;
Percentil5 Percentil95 14.8 164.2
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 21
SIMULASI BOOTSTRAP UNTUK DUA DATA SAMPEL:
CONTOH KASUS: MEMBANDINGKAN NILAI RATAAN PADA KELOMPOK ACTIVE DAN KELOMPOK PLACEBO
Sebagaimana dijelaskan pada bagian pendahuluan, dalam makalahnya Nancy
Barker juga menjelaskan bagaimana menerapkan teknik Bootstrap untuk menganalisis perbadingan rataan dua kelompok: kelompok yang diberikan pengobatan aktif (AKTIVE) dan kelompok yang diberikan pengobatan placebo (PLACEBO).
Data sampel untuk masing‐masing kelompok adalah sebagai berikut:
KELOMPOK ACTIVE KELOMPOK PLACEBO
Obs CHANGE Obs CHANGE
1 196 1 120
2 ‐12 2 ‐80
3 280 3 ‐63
4 212 4 200
5 52 5 23
6 100 6 54
7 ‐206 7 ‐198
8 188 8 165
9 ‐100 9 ‐8
10 202 10 19
Untuk memulai simulasi, kita buat pernyataan tahapan data sebagai berikut:
Gugus data original di atas terdiri dari 20 baris dan 2 kolom; kolom pertama bernama CHANGE (respons perubahan setelah pemberian obat) dan kelom kedua bernama TRT (Treatmen: 1=ACTIVE, 2=PLACEBO).
Jika gugus data original ini dicetak, hasil sebagaimana ditampilkan di bawah ini.
data original; input CHANGE TRT@@; cards; 196 1 -12 1 280 1 212 1 52 1 100 1 -206 1 188 1 -100 1 202 1 120 2 -80 2 -63 2 200 2 23 2 54 2 -198 2 165 2 -8 2 19 2 ; run;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 22
Sekarang mari kita cermati dan telusuri maksud dari setiap baris pernyataan di dalam macro SAS yang dibuat oleh Nancy Barker di bawah ini.
%macro bootse(b); data orig1 (where=(trt=1)) orig2 (where=(trt=2)); set original; run; data boot; %do t=1 %to 2; do sample=1 to &b; do i = 1 to nobs; pt = round(ranuni(&t)*nobs+0.5) ; set orig&t nobs = nobs point=pt; output; end; end; %end; stop; run; proc means data=boot noprint nway; class sample trt; var change; output out=x mean=mean; run; data diffmean; merge x (where=(trt=1) rename=(mean=mean1)) x (where=(trt=2) rename=(mean=mean2)); by sample; diffmean=mean1-mean2; run; proc means data=diffmean std noprint; var diffmean; output out=bootse std=bootse; run; %mend;
Pernyataan +0.5 ini ditambahkan sebagai revisi dari pernyataan resampling yang dibuat Barker
Obs CHANGE TRT 1 196 1 2 -12 1 3 280 1 4 212 1 5 52 1 6 100 1 7 -206 1 8 188 1 9 -100 1 10 202 1 11 120 2 12 -80 2 13 -63 2 14 200 2 15 23 2 16 54 2 17 -198 2 18 165 2 19 -8 2 20 19 2
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 23
Berikut ini penjelasan dari setiap pernyataan macro SAS di atas:
NO PERNYATAAN MAKSUD DAN KEGUNAAN
1 %macro bootse(b); Memulai progam macro yang diberi nama “bootse” dengan argumen (b)
2
data orig1 (where=(trt=1)) orig2 (where=(trt=2)); set original; run;
Membuat dua buah gugus data bernama “orig1” dan “orig2”.
Gugus data orig1 berisi seluruh observasi pada data original yang memenuhi trt=1, yaitu data untuk kelompok ACTIVE.
Gugus data orig2 berisi seluruh observasi pada data original yang memenuhi trt=2, yaitu data untuk kelompok PLACEBO.
Bila dicetak, isi gugus data orig1 dan orig2 adalah sebagai berikut:
Gugus Data Orig1 Gugus Data Orig1 Obs CHANGE TRT 1 196 1 2 -12 1 3 280 1 4 212 1 5 52 1 6 100 1 7 -206 1 8 188 1 9 -100 1 10 202 1
Obs CHANGE TRT 1 120 2 2 -80 2 3 -63 2 4 200 2 5 23 2 6 54 2 7 -198 2 8 165 2 9 -8 2 10 19 2
3
1) data boot; 2) %do t=1 %to 2; 3) do sample=1 to &b; 4) do i = 1 to nobs; 5) pt =
round(ranuni(&t) *nobs+0.5);
6) set orig&t nobs = nobs point=pt;
7) output; 8) end; 9) end; 10) %end; 11) stop; 12) run;
1) Membuat sebuah gugus data bernama “boot”.
2) Membuat DO‐iterasi sebanyak 2 ulangan, dimulai dari t=1 sampai t=2
3) Membuat DO‐iterasi dengan ulangan sebanyak b, dimulai dari sample=1 sampai sampel=b
4) Membuat DO‐iterasi dengan ulangan sebanyak nobs, dimulai dari i=1 sampai i=nobs
5) Membangkitkan sebuah bilangan acak dari sebaran seragam(0,1), lalu bilangan acak tersebut dikalikan dengan nobs (nilai dari peubah yang didefinisikan pada baris ke‐ 6) ). Selanjutnya hasil perkalian tersebut dibulatkan dan nilainya dimasukkan ke dalam suatu peubah yang bernama pt.
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 24
6) Menggunakan gugus data orig&t, dengan menambahkan OPTIONS nobs=nobs dan point=pt.
Ketika iterasi DO t=1 maka yang digunakan adalah gugus data orig1, dan ketika DO t=2 yang digunakan adalah gugus data orig2.
OPTION nobs=nobs: nobs disebelah kiri ”=” berarti jumlah observasi pada data orig&t, sedangkan nobs di sebelah kanan “=” adalah nama peubah yang didefinisikan.
OPTIONS point = pt maksudnya adalah menunjuk baris ke‐pt pada data orig&t.
7) Menyimpan baris data yang ditunjuk di dalam gugus data boot.
8) Mengakhiri DO‐iterasi do i = 1 to nobs;
9) Mengakhiri DO‐iterasi do sample=1 to &b;
10) Mengakhiri DO‐iterasi %do t=1 %to 2;
11) Menghentikan kegiatan menunjuk baris pada data orig1 dan orig2
12) Menjalankan prosedur tahapan data boot
Bila dicetak, isi gugus data boot bisa digambarkan seperti yang ditampilkan pada kolom sebelah kiri.
4
proc means data=boot noprint nway; class sample trt; var change; output out=x mean=mean; run;
Pernyataan PROC MEANS yang dimaksudkan untuk memperoleh output rataan‐rataan dari b replikasi sampel bootstrap atas data kelompok ACTIVE dan PLACEBO, hasilnya tidak dicetak, tapi dimasukkan ke dalam sebuah gugus data baru bernama ”X”. Jika dicetak, isi gugus data X bisa digambarkan sebagai berikut (misal:b=10000):
sample i CHANGE TRT 1 1 -12 1 1 2 202 1 1 3 212 1 1 4 280 1 1 5 202 1 1 6 202 1 1 7 100 1 1 8 100 1 1 9 196 1 1 10 196 1 2 1 -100 1 2 2 100 1 2 3 -100 1 ... ... .... ... ... ... .... ... 10000 1 280 1 10000 2 212 1 10000 3 280 1 10000 4 52 1 10000 5 280 1 10000 6 202 1 10000 7 188 1 10000 8 -100 1 10000 9 -100 1 10000 10 196 1 1 1 23 2 1 2 23 2 1 3 23 2 1 4 165 2 1 5 23 2 1 6 120 2 1 7 19 2 1 8 19 2 1 9 -63 2 1 10 -8 2 2 1 23 2 2 2 165 2 2 3 200 2 ... ... ... ... ... ... ... ... 10000 1 23 2 10000 2 -80 2 10000 3 -198 2 10000 4 54 2 10000 5 23 2 10000 6 -198 2 10000 7 -63 2 10000 8 120 2 10000 9 200 2 10000 10 -80 2
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 25
5
data diffmean; merge x (where=(trt=1) rename=(mean=mean1)) x (where=(trt=2) rename=(mean=mean2)); by sample; diffmean=mean1-mean2; run;
Membuat suatu gugus data bernama ”diffmean” yang merupakan modifikasi dari gugus data ”X”, sedemikian rupa sehingga rataan‐rataan bootstrap pada kelompok ACTIVE ditampilkan di masing‐masing kolom yang terpisah, yaitu kolom mean1 untuk trt=1 dan kolom mean2 untuk trt=2. Selanjutnya dihitung beda rataan antara mean1 dan mean2 (mean1‐mean2) dan nilai‐nilai beda rataan tersebut dimasukkan ke kolom yang baru bernama diffmean. Jika gugus data diffmean dicetak, hasilnya dapat digambarkan seperti di bawah ini.
6
proc means data=diffmean std noprint; var diffmean; output out=bootse std=bootse; run;
Pernyataan PROC MEANS yang dimaksudkan untuk memperoleh standar deviasi dari beda rataan, yang merupakan dugaan untuk standar error rataan. Hasilnya tidak diprint tapi dimasukkan ke suatu gugus data baru bernama ”bootse”. Jika gugus data bootse dicetak hasil bisa digambarkan seperti di bawah ini.
7 %mend; Mengakhiri macro bootse.
Jadi, kegunaan utama dari pernyataan‐pernyataan dalam macro SAS di atas (macro bootse(b)) ialah membuat replikasi‐replikasi bootstrap dan standar error dugaan untuk beda rataan ACTIVE dan PLACEBO. Untuk menjalankan macro bootse(b) kita buat pernyataan seperti berikut: %bootse(10000); disini angka 10000 adalah permisalan nilai untuk b, yang menerangkan jumlah replikasi bootstrap yang hendak dibuat.
sample TRT _TYPE_ _FREQ_ mean 1 1 3 10 167.8 1 2 3 10 34.4 .... .. .. .. ..... .... .. .. .. ..... 10000 1 3 10 149.0 10000 2 3 10 -19.9
sample TRT _TYPE_ _FREQ_ mean1 mean2 diffmean 1 2 3 10 167.8 34.4 133.4 ..... .. .. .. ..... .... ..... 10000 2 3 10 149.0 -19.9 168.9
Obs _TYPE_ _FREQ_ bootse 1 0 10000 58.8932
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 26
Pekerjaan kita belum selesai. Macro bootse(b) di atas belum memenuhi tujuan utama kita: menduga selang kepercayaan beda rataan kelompok ACTIVE dan PLACEBO. Sekarang mari lanjutkan pekerjaan kita untuk membuat selang kepercayaan dengan metode selang t‐bootstrap serta metode selang persentil. SELANG KEPERCAYAAN 90% DENGAN METODE SELANG T‐BOOTSTRAP: INFERENSI BEDA RATAAN DUA KELOMPOK Kita ikuti program SAS yang dibuat oleh Nancy Barker berikut ini. . Pernyataan diatas dimaksudkan untuk membuat gugus data baru bernama ”bootorig”, yang merupakan modifikasi atas data boot; teknisnya: menyisipkan data original di atas data boot. Jika dicetak, isi gugus data bootorig adalah sebagai berikut:
data bootorig; set original (in=a) boot; if a then sample=0; run;
Obs CHANGE TRT sample i 1 196 1 0 . 2 -12 1 0 . 3 280 1 0 . 4 212 1 0 . 5 52 1 0 . 6 100 1 0 . 7 -206 1 0 . 8 188 1 0 . 9 -100 1 0 . 10 202 1 0 . 11 120 2 0 . 12 -80 2 0 . 13 -63 2 0 . 14 200 2 0 . 15 23 2 0 . 16 54 2 0 . 17 -198 2 0 . 18 165 2 0 . 19 -8 2 0 . 20 19 2 0 . 21 -12 1 1 1 22 202 1 1 2 23 212 1 1 3 24 280 1 1 4 25 202 1 1 5 26 202 1 1 6 27 100 1 1 7 28 100 1 1 8 29 196 1 1 9 30 196 1 1 10 .... .... .. .. .. .... .... .. .. .. .... .... .. .. .. 200011 23 2 10000 1 200012 -80 2 10000 2 200013 -198 2 10000 3 200014 54 2 10000 4 200015 23 2 10000 5 200016 -198 2 10000 6 200017 -63 2 10000 7 200018 120 2 10000 8 200019 200 2 10000 9 200020 -80 2 10000 10
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 27
Selanjutnya, kita hitung rataan serta ragam replikasi dari setiap sampel bootstrap, dengan memasukkan pernyataan berikut:
Jika dicetak, isi gugus data X dapat digambarkan sebagai berikut:
Perhatikan, baris ke‐1 dan ke‐2 pada gugus data X adalah informasi mengenai rataan dari data original yang akan kita manfaatkan untuk membuat tabel bootstrap. Dan di bawah ini adalah pernyataan program untuk membuat tabel bootstrap.
Jika dicetak, isi gugus data diff_z digambarkan sebagai berikut:
proc means data=bootorig noprint nway; class sample trt; var change; output out=x mean=mean var=var n=n; run;
Obs sample TRT _TYPE_ _FREQ_ mean var n 1 0 1 3 10 91.2 24446.40 10 2 0 2 3 10 23.2 14409.51 10 3 1 1 3 10 167.8 6795.96 10 4 1 2 3 10 34.4 4073.60 10 5 2 1 3 10 113.4 33229.38 10 6 2 2 3 10 70.3 16821.57 10 ..... ..... .. .. .. ..... ........ .. ..... ..... .. .. .. ..... ........ .. 20001 10000 1 3 10 149.0 21711.33 10 20002 10000 2 3 10 -19.9 16621.21 10
data diff_z; merge x (where=(trt=1) rename=(mean=mean1 var=var1 n=n1)) x (where=(trt=2) rename=(mean=mean2 var=var2 n=n2)); by sample; diffmean=mean1-mean2; /* calculate the difference between the means */ diffse = sqrt((var1+var2)/(n1+n2)); /* estimate SE of difference */ retain origdiff; /* add value of original estimate */ if sample=0 then origdiff=diffmean; /* of difference to each record */ diff_z = (diffmean - origdiff)/diffse; run;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 28
Kolom paling kanan pada gugus data diff_z di atas adalah tabel bootstrap yang sejak awal ingin kita bangun.
Sekarang, dari tabel bootstrap tersebut (kolom diff_z) kita cari nilai untuk %)5()( ˆˆ tt dan %)95()1( ˆˆ tt dalam rangka membuat selang kepercayaan 90% atas nilai
beda rataan antara kelompok ACTIVE dan PLACEBO. Untuk tujuan tersebut, kita urutkan terlebih dahulu nilai‐nilai pada kolom diff_z . BERHENTI SEJENAK UNTUK MEREVISI KEMBALI PROGRAM SAS NANCY BARKER
Namun demikian, sebelum kita mengurutkan nilai‐nilai t‐bootstrap, coba perhatikan data pada tabel bootstrap. Lihat baris pertama: itu adalah statistik‐statistik dari sampel original, bukan dari sampel bootstrap. Kita tidak memerlukan baris pertama tersebut, bahkan harus dibuang. Untuk membuang baris pertama kita buat pernyataan berikut:
Pernyataan membuang baris di atas dapat kita anggap sebagai revisi (tambahan) untuk pernyataan program SAS yang dibuat Nancy Barker.
MELANJUTKAN PEKERJAAN: MENENTUKAN SELANG KEPERCAYAAN 90% DENGAN METODE SELANG T‐BOOTSTRAP
Sekarang, kita urutkan nilai‐nilai t‐bootstrap yang sudah kita hitung, dari yang terkecil sampai terbesar, dengan memasukkan pernyataan berikut:
proc sort data=diff_z; by diff_z; run;
d o i r s _ _ f d i d a T F m m f i g i m Y R e v e v m f d f O p T P E a a a a e f i f b l R E Q n r n n r n a s f _ s e T _ _ 1 1 1 2 2 2 n e f z 1 0 2 3 10 91.2 24446.40 10 23.2 14409.51 10 68.0 44.0772 68 0.00000 2 1 2 3 10 167.8 6795.96 10 34.4 4073.60 10 133.4 23.3126 68 2.80535 3 2 2 3 10 113.4 33229.38 10 70.3 16821.57 10 43.1 50.0255 68 -0.49775 4 3 2 3 10 38.4 26542.04 10 26.5 12280.28 10 11.9 44.0581 68 -1.27332 ..... ..... .. .. .. ..... ........ .. .... ........ .. ..... ....... .. ........ 10000 9999 2 3 10 121.8 42698.18 10 60.2 16317.51 10 61.6 54.3211 68 -0.11782 10001 10000 2 3 10 149.0 21711.33 10 -19.9 16621.21 10 168.9 43.7793 68 2.30474
data diff_z; set diff_z; where sample>0; run;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 29
Setelah diurutkan, isi gugus data diff_z dapat digambarkan sebagai berikut:
Selanjutnya kita buat pernyataan berikut untuk menentukan nilai t‐bootstrap(5%) dan t‐bootstrap(95%). Jika dicetak, isi gugus data t_vals dapat digambarkan sebagai berikut: Dari output di atas diketahui bahwa nilai t‐bootstrap(5%) adalah t_hi=‐2.29662, dan nilai t‐bootstrap(95%) adalah t_lo=2.59207. Langkah terakhir, kita buat pernyataan berikut untuk menghitung batas selang kepercayaan.
data t_vals; set diff_z end=eof; retain t_lo t_hi; if _n_=9500 then t_lo=diff_z; if _n_= 500 then t_hi=diff_z; if eof then output; run;
data ci_t; merge t_vals (keep=origdiff) bootse (keep=bootse) t_vals (keep=t_:); conf_lo = origdiff - (t_lo * bootse); conf_hi = origdiff - (t_hi * bootse); keep origdiff bootse t_lo t_hi conf_lo conf_hi; run; proc print data=ci_t; run;
d o i r s _ _ f d i d a T F m m f i g i m Y R e v e v m f d f t t O p T P E a a a a e f i f _ _ b l R E Q n r n n r n a s f _ l h s e T _ _ 1 1 1 2 2 2 n e f z o i 1 4398 2 3 10 228 3164.44 10 -52 5034 10 280 20.2465 68 10.4709 2.59207 -2.29662
Obs sample TRT _TYPE_ _FREQ_ mean1 var1 n1 mean2 var2 n2 diffmean diffse origdiff diff_z 1 745 2 3 10 -45.2 15921.07 10 100.6 7421.38 10 -145.8 34.1632 68 -6.25820 2 7853 2 3 10 -38.2 17119.51 10 116.3 8332.46 10 -154.5 35.6735 68 -6.23712 3 1932 2 3 10 -77.0 26326.44 10 82.3 7599.12 10 -159.3 41.1859 68 -5.51888 4 9517 2 3 10 -30.0 20291.56 10 98.9 5430.77 10 -128.9 35.8625 68 -5.49042 .. .... .. .. .. ..... ........ .. ..... ....... .. ...... ....... .. ........ .. .... .. .. .. ..... ........ .. ..... ....... .. ...... ....... .. ........ 9998 1119 2 3 10 193.0 6426.89 10 -81.3 5695.57 10 274.3 24.6196 68 8.37950 9999 3491 2 3 10 227.0 1388.67 10 -50.8 8196.62 10 277.8 21.8921 68 9.58340 10000 4398 2 3 10 228.0 3164.44 10 -52.0 5034.00 10 280.0 20.2465 68 10.47090
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 30
Setelah dicetak, isi gugus data ci_t adalah sebagai berikut:
Dengan demikian, berdasarkan metode selang t‐bootstrap, beda rataan antara kelompok AKTIVE dan PLACEBO pada selang kepercayaan 90% adalah antara ‐84.6550 sampai 203.255. SELANG KEPERCAYAAN 90% DENGAN METODE SELANG PERSENTIL: INFERENSI BEDA RATAAN DUA KELOMPOK
Sekarang kita tentukan selang kepercayaan 90% melalui metode selang persentil. Untuk itu pertama kita urutkan nilai‐nilai rataan replikasi bootstrap dengan memasukkan pernyataan berikut:
Setelah diurutkan, isi dari gugus data diffmean dapat digambarkan sebagai berikut.
Kemudian kita buat pernyataan berikut untuk menghitung batas selang kepercayaan.
Obs origdiff bootse t_lo t_hi conf_lo conf_hi 1 68 58.8932 2.59207 -2.29662 -84.6550 203.255
Obs sample TRT _TYPE_ _FREQ_ mean1 mean2 diffmean 1 1932 2 3 10 -77.0 82.3 -159.3 2 7853 2 3 10 -38.2 116.3 -154.5 3 745 2 3 10 -45.2 100.6 -145.8 4 9131 2 3 10 -47.8 85.1 -132.9 .... .... .. .. .. ..... ..... ...... .... .... .. .. .. ..... ..... ...... 9999 4398 2 3 10 228.0 -52 280.0 10000 2536 2 3 10 178.2 -104 282.2
data ci_perc; set diffmean end=eof; retain conf_lo conf_hi; if _n_= 500 then conf_lo=diffmean; if _n_=9500 then conf_hi=diffmean; if eof then output; keep conf_lo conf_hi; run; proc print data=ci_perc; run;
proc sort data=diffmean; by diffmean; run;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 31
Setelah dicetak, isi gugus data ci_t adalah sebagai berikut:
Dengan demikian, berdasarkan metode selang persentil, beda rataan antara kelompok AKTIVE dan PLACEBO pada selang kepercayaan 90% adalah antara ‐49.9 sampai 181.3.
Obs conf_lo conf_hi 1 -49.9 181.3
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 32
RINGKASAN HASIL
Dari hasil simulasi bootstrap dengan jumlah replikasi sebanyak 1000, selang kepercayaan untuk rataan pada kelompok ACTIVE adalah sebagai berikut:
o Metode t‐bootstrap: (‐13.85 , 164.97)
o Metode persentil: (14.8 , 164.2)
Dari hasil simulasi bootstrap dengan jumlah replikasi sebanyak 10.000, selang kepercayaan untuk beda rataan antara kelompok ACTIVE dan PLACEBO adalah sebagai berikut:
o Metode t‐bootstrap: (‐84.66 , 203.26)
o Metode persentil: (‐49.9 , 181.3)
Terlihat bahwa selang kepercayaan rataan berdasarkan metode persentil lebih rapat dibandingkan selang dengan metode t‐bootstrap. Dengan demikian, dapat disimpulkan bahwa metode persentil memberikan dugaan akurasi yang lebih optimis jika dibandingkan dengan metode t‐bootstrap.
Saran: Program SAS Nancy Barker perlu direvisi
Program SAS yang dibuat oleh Nancy Barker sangat membantu kita memahami proses dalam metode bootstrap dengan baik. Namun demikian, tampaknya program tersebut masih mengandung kesalahan. Kesalahan yang pertama yaitu pada bagian proses resampling, dan kesalahan kedua pada bagian pembuatan tabel bootstrap.
Di antara dua kesalahan program tersebut, yang paling krusial adalah kesalahan program untuk kegiatan resampling. Metode bootstrap sangat bergantung kepada proses sampling yang benar. Karena itu kalau resamplingnya sudah salah, maka semua hasil dari metode ini juga akan salah. Untuk menghindari kesalahpahaman, sebelum digunakan, disarankan untuk memperbaiki program tersebut terlebih dahulu.
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 33
Lampiran 1: Pernyataan Program SAS simulasi metode bootstrap untuk mengiferensi rataan dari satu data sampel options nodate; data ORIGINAL; input active@@; cards; 196 -12 280 212 52 100 -206 188 -100 202 ; run; proc means data=ORIGINAL noprint nway; var active; output out=MEAN_ORIGINAL mean=mean_original; run; data BOOTSAMP; do sampnum = 1 to 1000; do i = 1 to nobs; x = round(ranuni(0) * nobs +0.5); set original nobs = nobs point = x; output; end; end; stop; proc means data=BOOTSAMP noprint nway noprint; var active; class sampnum; output out=MEAN_BOOTSTRAP n=n mean=mean_bootstrap stderr=se_bootstrap; title 'RATAAN DAN STANDAR ERROR DUGAAN BOOTSTRAP'; proc means data=MEAN_BOOTSTRAP mean stddev nway ; var mean_bootstrap; data TABEL_BOOTSTRAP (keep=sampnum n mean_bootstrap mean_original se_bootstrap t_bootstrap); do i=1 to 1000; x=1; set MEAN_BOOTSTRAP point =i; set MEAN_ORIGINAL point=x; t_bootstrap=(mean_bootstrap-mean_original)/se_bootstrap; output; end; stop; ; proc sort data=TABEL_BOOTSTRAP out=TABEL_BOOTSTRAP; BY t_bootstrap; data T_BOOTSTRAP; set TABEL_BOOTSTRAP end=eof; retain t_5 t_95; if _n_= 50 then t_5=t_bootstrap; if _n_=950 then t_95=t_bootstrap; if eof then output; keep t_5 t_95; title 'NILAI T-BOOTSTRAP'; proc print DATA=T_BOOTSTRAP NOOBS; proc sort data=TABEL_BOOTSTRAP out=TABEL_BOOTSTRAP; by mean_bootstrap; data PERC_BOOTSTRAP;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 34
Lampiran 1: Pernyataan Program SAS simulasi metode bootstrap untuk mengiferensi rataan dari satu data sampel (lanjutan) set TABEL_BOOTSTRAP end=eof; retain Percentil5 Percentil95; if _n_= 50 then Percentil5=mean_bootstrap; if _n_=950 then Percentil95=mean_bootstrap; if eof then output; keep Percentil5 Percentil95; title 'PERSENTIL 5% DAN 95% DARI DATA RATAAN BOOTSTRAP'; proc print data=PERC_BOOTSTRAP NOOBS; run;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 35
Lampiran 2: Pernyataan Program SAS simulasi metode bootstrap untuk membandingkan rataan dari dua data sampel data original; input CHANGE TRT@@; cards; 196 1 -12 1 280 1 212 1 52 1 100 1 -206 1 188 1 -100 1 202 1 120 2 -80 2 -63 2 200 2 23 2 54 2 -198 2 165 2 -8 2 19 2 ; run; %macro bootse(b); data orig1 (where=(trt=1)) orig2 (where=(trt=2)); set original; run; data boot; %do t=1 %to 2; do sample=1 to &b; do i = 1 to nobs; pt = round(ranuni(&t)*nobs+0.5) ; set orig&t nobs = nobs point=pt; output; end; end; %end; stop; run; proc means data=boot noprint nway; class sample trt; var change; output out=x mean=mean; run; data diffmean; merge x (where=(trt=1) rename=(mean=mean1)) x (where=(trt=2) rename=(mean=mean2)); by sample; diffmean=mean1-mean2; run; proc means data=diffmean std noprint; var diffmean; output out=bootse std=bootse; run; %mend bootse; %bootse(10000); data bootorig; /* set original and sample data together so can */ set original (in=a) /* calculate mean values in one procedure */ boot; if a then sample=0; run; proc means data=bootorig noprint
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 36
nway; class sample trt; var change; output out=x /* mean and standard error for each sample */ mean=mean var=var n=n; run; data diff_z; merge x (where=(trt=1) rename=(mean=mean1 var=var1 n=n1)) x (where=(trt=2) rename=(mean=mean2 var=var2 n=n2)); by sample; diffmean=mean1-mean2; /* calculate the difference between the means */ diffse = sqrt((var1+var2)/(n1+n2)); /* estimate SE of difference */ retain origdiff; /* add value of original estimate */ if sample=0 then origdiff=diffmean; /* of difference to each record */ diff_z = (diffmean - origdiff)/diffse; run; data diff_z; set diff_z; where sample>0; run; proc sort data=diff_z; /* order diff_z from low to high */ by diff_z; run; data t_vals; /* data set containing values for t(0.975) and t(0.025) */ set diff_z end=eof; retain t_lo t_hi; if _n_=9500 then t_lo=diff_z; if _n_= 500 then t_hi=diff_z; if eof then output; run; data ci_t; merge t_vals (keep=origdiff) bootse (keep=bootse) t_vals (keep=t_:); conf_lo = origdiff - (t_lo * bootse); conf_hi = origdiff - (t_hi * bootse); keep origdiff bootse t_lo t_hi conf_lo conf_hi; run; proc print data=ci_t; run; proc sort data=diffmean; /* sort estimates for difference from low to high */ by diffmean; run; data ci_perc; set diffmean end=eof; /* pull out 250th and 9750th values as confidence limits */ retain conf_lo conf_hi;
●●●●●●●●●●●●●●●●●●●●●●●●●● Deni Irvani (G152100111)
TUGAS KELOMPOK KOMPUTASI STATISTIKA – Simulasi Bootstrap 37
if _n_= 500 then conf_lo=diffmean; if _n_=9500 then conf_hi=diffmean; if eof then output; keep conf_lo conf_hi; run; proc print data=ci_perc; run;