Fikri Dwi Alpian - 120450022 - RB

Resampling Method

Resampling

  • Dalam statistika, dapat digunakan sampel untuk dapat memberikan kesimpulan mengenai kondisi.
  • Namun, karena sampel yang diambil tidaklah mencakup semua populasi, maka terdapat standar deviasi, standar galat, dan selang kepercayaan dari setiap ekspresi statistik.
  • Jika kita mengambil sampel yang berbeda, maka akan menghasilkan statistik deskriptif(mean, median, dll) yang berbeda.
  • Karena standar galat dihitung berdasarkan sampel, estimasi dapat menjadi bias terhadap sampel.
  • Teknik Resampling adalah melakukan pengambilan subsample (boleh data berulang) dari sampel kemudian dihitung setiap statistik deskriptifnya.
  • Lakukan hal ini berulang kali dan akan didapatkan distribusi dari nilai statistik deskriptif.
  • Distribusi ini yang dapat memberikan besaran empirik atau akurasi mengenai beberapa tes statistik.
  • Beberapa teknik resampling diantaranya: Teknik Bootstrap dan Teknik Jackknife.

Kenapa Resampling?

  • Lebih sedikit asumsi Contoh : Dimana metode resampling tidak mengharuskan distribusi normal dan ukuran sampel yang besar
  • Akurasi yang lebih besar. Metode bootstrap pada praktiknya menghasilkan hasil yang lebih akurat
  • Bersifat umum. Metode resampling sangat mirip untuk berbagai statistic dan tidak memerlukan formula baru untuk setiap statistik.

Gunakan Bootsraps dan Jackknife

  • Menurunkan model statistik.
  • Model statistik yang terlalu rumit
  • Model yang mungkin tidak cukup valid
  • Ukuran presisi yang akurat dalam model statistic hanya dimungkinkan dengan besar n

Bootstrap

  • Proses resampling dengan pengulangan penempatan.
  • Setiap nilai data memiliki peluang yang sama untuk dipilih kembali, sehingga pada subsampel dapat memiliki nilai duplikat.
  • Contoh: Data {15, 16, 17, 18, 19}
  • Salah satu resampling dengan pengulangan data: {15, 16, 15, 17, 16}
  • Ulangi langkah ini sampai dapat memberikan estimasi atas akurasi rerata dari distribusi data tersebut.
Generate Data
  • Apa saja fungsi dasar yang sudah anda pelajari untuk generate suatu data? (Secara random).
  • Fungsi dasar rnorm(n, mean, sd) melakukan generate barisan bilangan secara acak dengan rerata dan standar deviasi yang diberikan
  • Latihan: Generate data secara acak dari berat badan 2000 pria dewasa dengan rerata 60 dan standar deviasi 5.5
bb = rnorm(2000, 60, 5.5)
plot(bb)

length(bb)
## [1] 2000
mean(bb)
## [1] 60.09097
sd(bb)
## [1] 5.541639

Untuk melakukan pengecekan bahwa data bb yang telah dibuat sudah tepat, lakukan konfirmasi berikut:

  • Pengecekan rerata: mean(bb)
  • Standar Deviasi: sd(bb)
  • Banyaknya data: length(bb)

Juga dapat dicek dari plot yang sudah dibuat.

Sampling

  • Fungsi dasar untuk melakukan sampling adalah sample(x, size, replace).
  • Argumen x adalah data yang ingin diambil subsample, size adalah ukuran subsample, dan replace adalah boolean untuk melakukan replacement atau tidak.
  • Jika argumen ukuran tidak dimasukkan, maka defaultnya adalah panjang dari data x itu sendiri.
  • Jika argumen replace yang dimasukkan adalah FALSE, maka hasilnya adalah pengambilan subsample dengan tidak boleh ada nilai yang berulang.
  • Buatlah vektor data yang berisikan data aritmetik dari 1 sampai 10
  • Lakukan sampling dengan pengulangan penempatan dengan fungsi dasar sample(). Bagaimanakah hasilnya?
m = c(1:12)
s = sample(m, replace = TRUE)
s
##  [1] 11 11 11  1  6  1  5  4  9  7  6 10
mean(s)
## [1] 6.833333

Bootstrap

  • Kembali kepada data berat badan pria dewasa.
  • Pada data bb, akan dilakukan resampling dengan pengulangan penempatan.
  • Kemudian, untuk setiap resampling yang dilakukan, hitung reratanya.
  • Akan dilihat perbandingan distribusi rerata untuk setiap resampling dan distribusi data aslinya.
data.bb = 2000
sam.bb = 1000
bb = rnorm(data.bb,60,5.5)
mean.bb = c()
for(i in 1:sam.bb){
  s = sample(bb,replace=TRUE)
  mean.bb[i]= mean(s)
}
par(mfrow=c(2:1), pin=c(5,1))
hist(bb)
hist(mean.bb)

mean(mean.bb)
## [1] 59.80552
data.bb = 2000
sam.bb = 1000
bb = rnorm(data.bb,60,5.5)
mean.bb = c()
for(i in 1:sam.bb){
  s = sample(bb,1000,replace=TRUE)
  mean.bb[i]= mean(s)
}
par(mfrow=c(2:1), pin=c(5,1))
hist(bb)
hist(mean.bb)

mean(mean.bb)
## [1] 60.03441
data.bb = 2000
sam.bb = 1000
bb = rnorm(data.bb,60,5.5)
median.bb = c()
for(i in 1:sam.bb){
  s = sample(bb,replace=TRUE)
  median.bb[i]= median(s)
}
par(mfrow=c(2:1), pin=c(5,1))
hist(bb)
hist(median.bb)

Estimasi

  • Telah diperoleh distribusi rerata berdasarkan metode bootstrap
  • Estimasi rerata dari data asli menggunakan rerata dari distribusi rerata: mean(mean.bb)
  • Teknik bootstrap juga dapat digunakan untuk memberikan estimasi median dari data asli.
  • Apa yang harus diganti dalam kode sebelumnya?

Latihan

  • Data tinggi badan 1000 wanita dewasa dengan rerata 160 dan standar deviasi 4.
bb = rnorm(1000,160,4)
mean.bb = c()
for(i in 1:1000){
  s = sample(bb,replace=TRUE)
  mean.bb[i]= mean(s)
}

par(mfrow=c(2:1), pin=c(5,1))
hist(bb)
hist(mean.bb)

  • Data kependudukan 500 desa dengan rerata 1000 dan standar deviasi 20.
bb = rnorm(500,1000,20)
mean.bb = c()
for(i in 1:1000){
  s = sample(bb,replace=TRUE)
  mean.bb[i]= mean(s)
}

par(mfrow=c(2:1), pin=c(5,1))
hist(bb)
hist(mean.bb)

Jackknife

  • Metode Jackknife adalah metode resampling dengan menghapus satu data dari sampel.

  • Kemudian dari sampel yang sudah dihapus satu data, dihitung mean dan median.

  • Jika sampel memiliki n data, artinya akan terdapat distribusi mean atau median sebanyak n, hasil dari melakukan penghitungan mean atau median dari sampel yang sudah dihapus satu data sebanyak n kali.

    \(\sum_{i=1}^{n}x_i=S\)

    \(\frac{\frac{S-x_1}{n-1}+\frac{S-x_2}{n-1}+\cdots+\frac{S-x_n}{n-1}}{n}\)

    \(\frac{\frac{nS-(x_1+x_2+x_n)}{n-1}}{n}\)

    \(\frac{\frac{nS-S}{n-1}}{n}\)

    \(\frac{S}{n}\)

Menghapus Satu Data

  • Tinjau data \(\theta : {X_1,X_2,X_2,\cdots,X_n}\).
  • Misalkan \(\theta_i\) adalah data yang diperoleh dengan menghapus \(X_i\).
  • Dalam R, kita dapat memperoleh sebuah data hasil dari penghapusan pada indeks tertentu.
contoh = c(4,3,2,5,3)
contoh[-3]
## [1] 4 3 5 3
contoh[-2]
## [1] 4 2 5 3

Jackknife

  • Kembali ke dalam data berat badan sebelumnya.
  • Artinya, yang perlu diganti dalam kode adalah sam.bb yang diganti dengan data.bb, karena kita akan melakukan resampling sebanyak 2000 kali, sesuai dengan banyaknya data.
  • Kemudian, fungsi sample cukup diganti dengan bb[-i]
data.bb = 2000
bb = rnorm(data.bb,60,5.5)
mean.bb = c()
for(i in 1:data.bb){
  s = bb[-i]
  mean.bb[i] = mean(s)
}
par(mfrow=c(2:1), pin=c(5,1)) 
hist(bb)
hist(mean.bb)

mean(bb)
## [1] 59.88818
mean(mean.bb)
## [1] 59.88818

Latihan

  • Lakukan estimasi untuk median dengan teknik Jackknife
data.bb = 2000
bb = rnorm(data.bb,60,5.5)
median.bb = c()
for(i in 1:data.bb){
  s = bb[-i]
  median.bb[i] = median(s)
}
par(mfrow=c(2:1), pin=c(5,1)) 
hist(bb)
hist(median.bb)

median(median.bb)
## [1] 59.9712
  • Lakukan estimasi rerata dan median untuk data yang terdapat pada latihan sebelumnya dengan menggunakan metode Jackknife.

Mean

  • Data tinggi badan 1000 wanita dewasa dengan rerata 160 dan standar deviasi 4.
bb = rnorm(1000,160,4)
mean.bb = c()
for(i in 1:1000){
  s = bb[-i]
  mean.bb[i] = mean(s)
}
par(mfrow=c(2:1), pin=c(5,1)) 
hist(bb)
hist(mean.bb)

mean(bb)
## [1] 159.8621
mean(mean.bb)
## [1] 159.8621
  • Data kependudukan 500 desa dengan rerata 1000 dan standar deviasi 20.
bb = rnorm(500,1000,20)
mean.bb = c()
for(i in 1:500){
  s = bb[-i]
  mean.bb[i] = mean(s)
}
par(mfrow=c(2:1), pin=c(5,1)) 
hist(bb)
hist(mean.bb)

mean(bb)
## [1] 1000.188
mean(mean.bb)
## [1] 1000.188

median

  • Data tinggi badan 1000 wanita dewasa dengan rerata 160 dan standar deviasi 4.
bb = rnorm(1000,160,4)
median.bb = c()
for(i in 1:1000){
  s = bb[-i]
  median.bb[i] = median(s)
}
par(mfrow=c(2:1), pin=c(5,1)) 
hist(bb)
hist(median.bb)

median(bb)
## [1] 159.8945
median(median.bb)
## [1] 159.8945
  • Data kependudukan 500 desa dengan rerata 1000 dan standar deviasi
bb = rnorm(500,1000,20)
median.bb = c()
for(i in 1:500){
  s = bb[-i]
  median.bb[i] = median(s)
}
par(mfrow=c(2:1), pin=c(5,1)) 
hist(bb)
hist(median.bb)

median(bb)
## [1] 1001.25
median(median.bb)
## [1] 1001.25