Genetic Algorithm

Pagi ini salah satu diskusi di kuliah Chemometric tentang Genetic Algorithm untuk pemilihan variabel dalam model, misal saja model regresi. Meskipun sudah sangat terkenal, ini termasuk barang baru buatku… belum sempat baca-baca tentang ini sebelumnya. Si Profesor menjelaskan dengan sangat baik, dan secara umum bisalah aku tangkap maksudnya gimana. Aku coba rekonstruksi di notes ini, tadi gak sempat nyatet. Mudah2an gak ada yang kelewat. Kalaupun ada yang gak jelas, mudah2an ada yang bisa nambah2in.

Konsep yang digunakan dalam memilih variabel X untuk masuk ke dalam model, dianalogikan dengan bagaimana penyeleksian individu secara genetik. Yang pernah belajar breeding atau pemuliaan mungkin jauh lebih bisa memahami. Setiap gen dari suatu individu pada dasarnya adalah kombinasi dari gen-gen dari tetuanya (Karena individunya gak selalu berupa orang, bisa hewan atau tumbuhan, jadi gak disebut orang tua. Kalau mau disebut orang tua ya gpp lah).

Nah karena kita mau dapat individu yang unggul, maka kira-kira prosesnya (1) pilih tetua yang unggul (2) lakukan reproduksi yang merupakan kombinasi (cross-over) antar tetua yang unggul, dapat deh tuh banyak anak, (3) anak-anak ini akan mengalami sedikit perubahan atau mutasi pada gen-nya, mungkin juga karena pengaruh lingkungan (4) balik lagi ke langkah 1 dengan menjadikan anak2 sebagai tetua untuk generasi berikutnya.

Implimentasi di pemodelan bagaimana?

Variabel-variabel yang banyak bisa dipandang sebagai kromosom (atau apalah, pokoknya yang bawa sifat2 genotip). Yang pertama dilakukan adalah buat dulu populasi tetua, ini adalah generasi pertama (paling tua). Caranya? Ya buat model dengan variabel X adalah subset dari variabel yang banyak itu. Jadi kita punya banyak model. Misalnya ada 200 variabel, kalau kita buat model masing-masing berisi 20 variabel saja, maka banyak sekali tuh kombinasinya.

Nah dari banyak model itu, pilih yang ‘unggul’. Misal yang errornya kecil. Ambil deh 200an model terunggul. Terus kita pasang2in dan kawin2in tuh model. Kita lihat focus sekarang ke dua model (lihat sebagai dua tetua). Variabel dari setiap model dibagi dua, satu bagian dari setiap model diambil kemudian digabung (secara cross-over). Bagian satu dari model 1 digabung dengan bagian 2 dari model 2. Jadilah model baru (anak) dengan variabel warisan dari tetuanya (sebagian warisan bapak, sebagian warisan ibu).

Perkawinan model ini dilakukan pada banyak pasang model lama (tetua) generasi pertama, sehingga kita bisa dapat banyak model baru (anak) yang merupakan generasi kedua. Pada saat model baru terbentuk, tentu beberapa mengalami mutasi, karena variabel yang sebelumnya gak ketemu sekarang jadi ketemu.

Oke. Generasi kedua sudah jadi. Dari generasi ini lakukan penyaringan. Jangan semua dikawinkan. Terlalu semangat itu namanya. Kawinkan saja yang unggul-unggul. Dapat deh generasi ketiga. Begitu seterusnya, sampai generasi yang dihasilkan hampir semuanya bersifat unggul.

Nah kalau udah gitu, tinggal urutkan saja berdasarkan kriteria unggul tadi, maka kita akan dapat model dengan sedikit variabel yang disaring dari banyak variabel, dan itu adalah model yang unggul.

Derajat Bebas

Tampaknya suatu kebetulan, kalau minggu ini ada tiga orang yang ngajak diskusi tentang derajat bebas (degree of freedom).  Dan tiga-tiga-nya lewat jalur berbeda, dengan tiga profesi berbeda.  Satu orang mahasiswa yang tiba-tiba nongol lewat YM di pagi buta.  Satu orang calon pegawai negeri yang muncul di komentar salah satu notes (mantan mahasiswiku).  Satu lagi lewat email oleh mantan pembaca berita di salah satu televisi yang sekarang katanya udah jadi konsultan.

Saya salin dan edit dikit jawaban yang saya berikan kepada orang terakhir.

——————

Halo juga Pak *****… wah hari ini saya ngobrol sama dua konsultan ini.  Betapa beruntungnya saya.  Hehe.  Otak jadi ikut senam kalau ngobrol sama teman2 konsultan.
 
Kapan2 saya harus belajar ilmu-nya sampeyan Pak.
 
Saya ada di tingkat empat waktu itu, ketika makan siang bareng salah seorang konsultan juga, beliau bertanya persis dengan Pak *****.  Eh, tau gak sih gimana njelasin derajat bebas (I prefer this words, rather than ‘derajat kebebasan’).  Beliau nanya gitu gara-gara ada salah satu teman beliau yang sekarang jadi direktur salah satu perusahaan marketing research, baru balik dari Amerika, kemudian mengatakan bahwa “gak percuma saya jauh2 ke amerika, karena saya akhirnya tau apa itu derajat bebas”.
 
Saya bilang ke si konsultan teman makan siang tadi.  Give me one-or-two days, and I will answer your question.
 
Besok paginya saya kabur ke perpustakaan.  Untuk mencari jawaban apa itu derajat bebas sehingga saya bisa dengan mudah menjelaskan.  Setelah buka2 buku (waktu itu saya masih internet illiterate hahaha), saya coba sarikan penjelasannya seperti ini.
 
Andaikan Pak ***** punya tiga mangkok dan satu koin.  Mangkoknya taruh di meja dengan posisi telungkup.  Then, masukkan koin ke salah satu mangkok dan acak2 deh posisinya.  None knows which bowl containing the coin. 
 
Bagaimana saya tau di mangkok mana ada koinnya?  Gampang.  Buka aja mangkoknya.  Tapi tunggu dulu.  Apa perlu kita buka tiga-tiganya?
 
No.  Cukup dua saja, maka kita tahu dimana koinnya.
 
We can say that, informasi pada mangkok ketiga tidak bebas.  Kalau dua mangkok yang kita buka, gak ada koinnya.  Maka kita tahu PASTI kondisi mangkok ketiga.
 
Demikian juga kalau dari salah satu mangkok yang kita buka ada koinnya, kita juga tahu dengan PASTI bahwa di mangkok ketiga gak ada koin.
 
In this situation, derajat bebasnya adalah dua.
 
Bagaimana dengan di data?  Gampangnya gini.  Kalau Pak ***** punya tiga data, sebutlah X1, X2, dan X3.  Kemudian pak ***** tahu rata-ratanya, misal nilainya 100.  Maka nilai X1, X2, dan X3 yang bebas cuma dua.  Kalau X1 = 150, X2 = 50, maka X3 udah gak bebas lagi.
Itu kenapa pada beberapa analisis yang hanya bicara menduga satu parameter, derajat bebasnya adalah (n-1).
 
Kalau kita punya lebih dari satu statistik, misal di regresi kita punya b0 dan b1, maka derajat bebas error-nya jadi (n-2), karena akan ada sebanyak (n-2) data yang bebas, sedangkan 2 data lain bisa kita dapatkan kalau kita tau nilai dari (n-2) data.

Perbedaan Hasil Quick Count dan Perhitungan KPU Pilgub Jawa Timur: Perlukah masuk MURI?

Tulisan ini diilhami oleh berita yang saya baca di salah satu situs berita yang menyebutkan pendapat atau sindiran salah satu petinggi partai untuk memberikan penghargaan MURI atas melesetnya dugaan tiga buah hasil quick count lembaga survey terhadap hasil Pemilihan Gubernur Jawa Timur yang diumumkan kemarin (11 Nov 2008).  Hitung cepat atau quick count yang umumnya mampu dengan tepat menduga pemenang Pilkada, kali ini tidak terjadi.  Lebih-lebih, tiga lembaga survei yang menyatakan independen gagal memberikan urutan yang tepat.  Meskipun secara tegas mereka tidak menyebutkan siapa yang diduga menjadi pemenang karena selisih yang tipis, tapi tetap ada pertanyaan kenapa tiga-tiganya gagal.

 

Bagi saya pribadi, MURI sebaiknya diberikan kepada individu, kelompok atau organisasi tertentu yang yang memiliki prestasi luar biasa.  Pengertian luar biasa adalah sesuatu yang tidak mudah dilakukan atau sesuatu yang tidak mudah terjadi.  Dalam bahasa matematika dan statistika, luar biasa adalah sesuatu yang peluang terjadinya kecil.

 

Dengan demikian, untuk melihat apakah kejadian melesetnya hasil dari tiga lembaga survei seyogyanya mendapatkan MURI, bisa kita cermati dari peluang kejadiannya.  Jika peluang meleset besar, MURI belum pantas mengeluarkan penghargaan untuk hal ini.

 

Komisi Pemilihan Umum (KPU) Jawa Timur sudah mengumumkan bahwa pada hasil akhir Pemilihan Gubernur Jawa Timur adalah KAJI (Khofifah-Mudjiono)  49.80% dan KARSA (Soekarwo-Saifullah Yusuf)  50.20%.

 

Sementara dari penghitungan cepat yang dilakukan Lembaga Survei Indonesia (LSI), pasangan
KAJI memperoleh suara sebanyak 50.44% persen, dan KARSA mendapat 49.56%.  Lingkaran Survei Indonesia  melaporkan bahwa dari 400 TPS di seluruh Jatim, KAJI meraup 50.% dan KARSA meraih 49.24% persen.  Sedangkan Lembaga Survei Nasional (LSN) menyatakan pasangan KAJI memperoleh 50.71% persen, dan KARSA memperoleh 49.29%.  Ketiganya menempatkan pasangan KAJI sedikit lebih unggul dibandingkan pasangan KARSA.

 

Menganggap bahwa hitungan KPU sebagai suatu kebenaran, kita dapat menghitung berapa peluang suatu proses hitung cepat memberikan hasil yang berbeda.  Beberapa asumsi yang saya gunakan untuk menghitung adalah yang pertama bahwa setiap TPS melayani 350 pemilih.  Dengan dugaan partisipasi sebesar 53.5% (www.lsi.co.id) maka jumlah suara per TPS adalah 187 suara.  Juga diasumsikan jumlah TPS tersurvei dalam hitung cepat sebanyak 400 unit, sehingga jumlah suara total dalam hitung cepat adalah 74800 suara.  Tentu saja ada tambahan asumsi statistik yaitu bahwa pilihan antar pemilih saling bebas.

 

Berdasarkan asumsi di atas maka peluang suatu hasil hitung cepat memenangkan KAJI dapat dihitung menggunakan konsep distribusi binomial dengan parameter n=74800  p=50.20% (proporsi suara KARSA hasil perhitungan KPU).  Secara matematis dapat dikatakan bahwa peluang pasangan KAJI menang, sama dengan peluang suara pasangan KARSA kurang dari 50% suara atau 37400 suara dalam hitung cepat.

 

Hitungan di atas menghasilkan angka 0.138 atau 13.8%.   Artinya, dengan sampel sebanyak 400 TPS, besarnya kemungkinan suatu hitung cepat memenangkan KAJI adalah 13.8%.  Angka itu merupakan besarnya kemungkinan hitung cepat salah dalam menduga pemenang Pilgub Jatim.  Sehingga saya berpendapat bahwa dalam kasus ini, kemungkinan terjadinya melesetnya hasil dugaan oleh suatu lembaga survei dalam kasus di Jatim memang besar.

 

Tetapi bagaimana jika ada tiga lembaga meleset semua?  Dengan mengasumsikan bahwa ketiganya melakukan secara independen, peluang meleset secara bersamaan adalah 0.138 pangkat 3, atau sebesar 0.26%.  Kejadian tiga lembaga meleset secara bersamaan terjadi 2-3 kali dalam 1000 pilkada.  Kalau saya yang punya MURI, belum waktunya penghargaan itu keluar.  Ini masih belum terlalu luar biasa. (bagus sartono — departemen statistika IPB)

pengiriman kode

 

Nyoba-nyoba nulis tentang pengiriman kode, selengkapnya di http://www.geocities.com/bagusco4/coding.pdf

Sadel (lanjutan)

 

 

data sadel;

do x = –1 to 1 by 0.1;

 do y = –1 to 1 by 0.1;

  z = sin(x)**2 + cos(y)**2;

  output;

 end;

end;

 

proc g3D data=sadel;

plot x*y=z/rotate=10 to 90 by 10;

run;

Gambar Kerucut dan Sadel

Silakan dicoba

data cone;

do x = –1 to 1 by 0.01;

 do y = –1 to 1 by 0.01;

  z = sqrt(x**2 + y**2);

  if z le 1 then output;

  end;

end;

 

proc g3D data=cone;  plot x*y=z; run;

 

data sadel;

do x = –1 to 1 by 0.1;

 do y = –1 to 1 by 0.1;

  z = sin(x)**2 + cos(y)**2;

  output;

 end;

end;

 

proc g3D data=sadel; plot x*y=z; run;

 

Enaknya berapa kamar?

Ini tentang kamar tidur, bukan kamar lain seperti kamar mandi, kamar belajar, kamar bermain, atau yang lainnnya.  Dengan budget tertentu seseorang bisa dengan leluasa memilih rumah dengan jumlah kamar yang dia sukai.  Sementara dengan budget yang terbatas, tipe 21 hingga 36 dengan hanya 1 atau 2 kamar tidur barangkali hanya satu-satunya pilihan.  Tapi, tampaknya tidak hanya budget yang perlu kita pertimbangkan untuk memilih kamar.  Pertimbangan lain adalah berapa banyak yang anak yang ingin kita miliki.

Grafik berikut saya olah dari data yang saya copy dari www.nationmaster.com.  Grafik yang memperlihatkan hubungan antara rata-rata banyaknya orang di setiap kamar tidur dengan prediksi tingkat pertumbuhan penduduk dari berbagai negara.  Korelasinya cukup besar, yaitu 0.59 untuk Pearson Corr dan 0.56 untuk Spearman Corr Coef.  Negara dengan kamar tidur yang banyak penghuninya, cenderung tinggi tingkat pertumbuhan penduduknya.

Tentu ini tidak selalu bicara sebab akibat.  Bisa didebat, apakah gara-gara satu kamar banyak orang jadi banyak yang hamil terus pertumbuhan penduduk tinggi.  Ataukah karena pertumbuhannya tinggi, makanya satu kamar terpaksa diisi banyak orang.  Namun karena data jumlah orang per kamar adalah data tahun kemarin, sedangkan pertumbuhan itu proyeksi ke tahun 2050, pendapat pertama mungkin masuk akal.

Yang menarik lain dari gambar ini adalah:

  • di beberapa negara, meskipun satu kamar rata-rata penghuninya gak sampai 1 orang, tapi pertumbuhan penduduknya ada yang tinggi.  Negara itu adalah AMERIKA, BRAZIL, CANADA, NEW ZEALAND.  Kenapa nih…
  • yang paling tinggi pertumbuhannya, adalah yang satu kamar berisi 1.5 sampai 2 orang, ya.. 2 orang lah.  Mungkin karena gak ada yang ganggu, jadi gampang buat anak.
  • meskipun tidak terlihat jelas, untuk kamar dengan lebih dari 2 orang, ada tren pertumbuhan penduduknya turun.  Gangguan mulai ada.

Tambahnya program pemerintah membangun RSS dengan tipe kecil, bisa dijadikan sarana tak langsung untuk menekan pertumbuhan jumlah penduduk.  Siapa tahu…