Q: Rumus menaksir nilai faktorial dengan pendekatan Stirling

Tadi ada yang bertanya di blog ini tentang formula Stirling. Jadi formula Stirling itu bisa dikatakan sebagai rumus untuk menaksir nilai faktorial secara asimtotik. Artinya nilai kesalahan estimasi semakin kecil (mendekati nol) untuk faktorial di bilangan yang semakin besar (mendekati tak hingga).

Hal menarik di formula ini adalah bertemunya dua tetapan matematika, yaitu e (konstanta Euler) dan \pi.

Berdasarkan Stirling ini, pendekatan estimasi terhadap nilai faktorial n! dapat dinyatakan secara asimtotik dengan formula berikut :

n!\approx \displaystyle \sqrt{2\pi n}\left(\frac{n}{e}\right)^n

dengan n bilangan bulat positif (n > 0) dan e adalah konstanta Euler.

Semakin besar n, error estimasi proporsional terhadap n! atau :

\displaystyle\frac{n!- \sqrt{2\pi n}\left(\frac{n}{e}\right)^n}{n!}

semakin mendekati nol.

Jadi metode penaksiran asimtotik ini berlaku lebih baik untuk bilangan-bilangan besar.

Analisis survival dalam estimasi CFR parametrik

Pada posting sebelum ini saya menulis tentang survival function dan hazard function, keduanya dinyatakan ke dalam persamaan probabilitas pasien berstatus i dalam titik waktu s pada saat wabah :

p_i(s) = \displaystyle \int_{0}^{t_{\textup{max}}(s)} S(t)h_i(t)dt

dimana t adalah waktu pasien berada di rumah sakit penampungan korona, mulai dari t_0 (masuk) hingga mencapai status outcome t_{\textup{max}}, yaitu hingga dinyatakan apakah pasien tersebut mati, i=0, atau sembuh, i=1. Sedangkan s adalah titik waktu pada saat wabah berlangsung.

Persamaan di atas (berdasarkan Ghani et al, 2005) diperoleh dari perluasan metode Kaplan-Meier untuk probabilitas pasien dengan dua status outcome i di terminal pada titik waktu s, yaitu probabilitas pasien korona meninggal p_0(s) dan probabilitas pasien korona sembuh p_1(s).

S(t) di sini adalah fungsi survival terhadap waktu t pasien sebagai waktu kontinyu dan telah lengkap bekerja (di sini dua endpoint dari mulai awal pasien masuk t_0 hingga t_{\textup{max}} di terminal diperlakukan sebagai satu waktu komposit tunggal yang kontinyu).

Dalam keadaan perawatan, untuk suatu titik waktu t pasien, fungsi survival di atas belum lengkap bekerja dan merupakan fungsi survivor dalam waktu t pasien :

s_i(t) = \displaystyle \textup{exp}\left \{ -\int_{0}^{t} h_i(x)dx \right \}

Di sini saya menggunakan simbol s lowercase untuk membedakan dengan fungsi survival akhir setelah pasien mencapai status outcome i. Sedangkan h_i adalah hazard function untuk dua outcome i, yang dalam distribusi gamma masing-masing kerapatan probabilitasnya :

f_i(t)=s_i(t)h_i(t)

Ketika wabah telah berakhir, s = s_{\textup{max}}, maka :

p_0 (s) + p_1(s) = 1

dan

P = p_0 (s_{\textup{max}})

adalah estimasi terhadap CFR. Di sini saya juga menggunakan P uppercase untuk maksud yang sama dengan sebelumnya.

Tetapi jika wabah belum berakhir maka hasil penjumlahan ini tidak 1 melainkan lebih kecil dari 1 :

p_0 (s) + p_1(s) < 1.

Berdasarkan hal terakhir ini kita dapat menduga bahwa selama wabah berlangsung pada suatu titik waktu s, ada fungsi survivor tertentu, s_i(t), yang belum bekerja dengan lengkap yang menyebabkan jumlah probabilitas kedua outcome tadi menjadi lebih kacil dari 1.

Oleh karena itu estimasi terhadap CFR pada suatu titik waktu s, seharusnya terletak antara p_0(s) dan 1 - p_1(s) karena ada sejumlah proporsi dari fungsi survivor yang sedang bekerja pada pasien-pasien yang sedang dirawat.

Berdasarkan analisis survival, fungsi parameter di atas punya andil terhadap probabilitas pasien COVID-19 yang terkonfirmasi untuk dua kondisi outcome di terminal korona, yaitu kematian pasien (i=0) atau pasien sembuh (i=1). Adapun pasien terkonfirmasi yang sedang dirawat pada dasarnya adalah proporsi individual yang negligible dalam estimasi CFR keseluruhan. Karena jika seluruh waktu periode wabah direntangkan dari awal s_0 hingga akhir s_{\textup{max}} proporsi ini tidak pernah memiliki andil terhadap probabilitas final, tetapi pada suatu titik waktu s pada saat wabah berlangsung ada proporsi dari fungsi survivornya yang sedang bekerja yang menyebabkan hasil penjumlahan tadi tidak percis 1, tapi lebih kecil.

Atas dasar hal ini maka dapat dibedakan antara estimasi naif yang biasa :

\textup{CFR}(s) =\displaystyle \frac{M(s)}{K(s)}

yang diperoleh dari laporan agregat pada titik waktu s, dengan M(s) jumlah pasien yang meninggal dunia pada waktu s, dan K(s) adalah jumlah kasus yang terkonfirmasi pada waktu s, dan estimasi CFR dengan parametrik :

P(s) = \displaystyle \frac{P_0(s)}{P_0(s)+P_1(s)}

yang telah dikoreksi dengan faktor survivor.

Estimasi CFR naif mengabaikan faktor survivor untuk proporsi pasien yang masih dalam perawatan di rumah sakit atau fasilitas penampungan pasien korona. CFR sederhana dapat menimbulkan estimasi yang keliru khususnya ketika banyak kasus yang belum diketahui.

Estimasi CFR dengan parametrik mengasumsikan bahwa CFR pada sejumlah proporsi pasien yang negligible akan sama dengan CFR pada outcome yang diketahui. Asumsi ini berlaku dengan baik jika didukung dengan sistem kesehatan yang baik di fasilitas penampungan, dimana hazard function pada waktu t pasien diukur oleh tim medis mulai dari pasien masuk, juga kejadian kondisional yang terjadi pada t dicatat secara proporsional.

Di sini kita melihat kenapa estimasi CFR parametrik itu menjadi penting karena naif bila pada suatu titik waktu s dalam periode wabah, outcome tidak diketahui untuk sejumlah proporsi yang nonnegligible tadi, khususnya pada kasus-kasus yang belum terkonfirmasi.

Estimasi CFR dengan parameter kemudian dapat memberi gambaran terhadap kemungkinan adanya sebaran kasus yang tidak terungkap atau kemungkinan terjadinya underreporting yang sangat potensial terjadi di negara-negara dengan sistem kesehatan yang buruk.

Melalui analisis survival ada beberapa parameter di CFR ini, juga ada data-data medis yang perlu dikumpulkan dari lapangan, bukan hanya sekadar laporan kasus kumulatif. Sehingga selanjutnya dapat ditentukan metode yang paling tepat yang bisa diterapkan dalam estimasi. Apakah itu dengan metode maximum likelihood (seperti di Ghani et al, 2005), atau menggunakan metode campuran (misalnya dengan memanfaatkan deep learning atau artificial neural networks). Kita punya banyak metode di sini. Di posting ini saya hanya membahas dasar-dasar matematikanya saja sebagai satu tahapan penting dalam menentukan metode analisis.

Jadi, atas dasar analisa ini, untuk negara-negara dengan kasus-kasus terkonfirmasi yang cenderung lambat diketahui, maka perhitungan CFR sebaiknya menggunakan estimasi CFR parametrik, dan bukan lagi menggunakan CFR naif yang sederhana (yang tentu hasilnya akan melampaui jauh di atas rata-rata CFR dunia).

Indonesia perlu tingkatkan daya survival untuk hadapi infeksi COVID-19

Dalam beberapa hari terakhir ini — dari sejak kasus pertama infeksi virus corona resmi dilaporkan pemerintah Indonesia, ada kesan yang cukup mengkhawatirkan dan menyedihkan bahwa daya survival kasus-kasus kita terhadap infeksi ini cukup rendah.

Dari data laporan kasus hari demi hari di Indonesia, case fatality rate (CFR) cenderung menunjukan tren yang lebih tinggi dibandingkan rata-rata di dunia. Bahkan angka ini dalam beberapa hari sebelumnya cenderung mendekati rate terburuk di dunia.

Rapid test yang massif dan ditambah dengan uji diagnosis ulang mungkin dapat menurunkan angka CFR ini karena jumlah kasus yang terkonfirmasi bisa saja meningkat drastis. Namun jika hal ini tidak ditunjang dengan massifnya penguatan fungsi-fungsi daya survival, CFR bukan malah menurun tapi bisa meningkat juga karena, misalnya, faktor-faktor dukungan medis kita yang belum siap atau tidak dipersiapkan menghadapi kasus-kasus infeksi yang begitu rupa hingga di atas kapasitas yang ada. Sehingga hal yang paling dikhawatirkan oleh kita semua yaitu terjadinya lonjakan angka kematian pasien yang terinfeksi.

Gambaran awal tentang CFR saat ini terjadi ketika kasus-kasus yang dikonfirmasi relatif lebih rendah dibanding negara-negara yang umumnya memiliki laporan kasus yang terkonfirmasi lebih tinggi daripada Indonesia.

Gambaran lain yang juga menyedihkan dalam beberapa hari terakhir wabah covid-19 ini adalah tren jumlah kematian yang dilaporkan lebih besar dari jumlah yang sembuh. Ini menimbulkan kesan bahwa daya survival yang rendah; bahwa seakan-akan probabilitas pasien korona yang meninggal dunia lebih tinggi dari probabilitas pasien korona yang sembuh pada kasus-kasus yang sudah dikonfirmasi. Ini tidak lazim di dunia.

Tentu kita belum mengetahui dengan pasti berapa jumlah kasus yang tidak terkonfirmasi pada suatu waktu, yang mungkin beberapa diantaranya sudah sembuh atau dalam pemulihan, dan yang lain mungkin baru akan terinfeksi. Pemerintah kita pun baru mengumumkan population at risk di Indonesia yang berisiko terinfeksi pada Jumat (20/3) lalu (berdasarkan berita CNN Indonesia), dimana ada 600 ribu hingga 700 ribu orang di Indonesia yang berisiko terinfeksi.

Selain itu, tim dari Eijkman-Oxford Clinical Research Unit (EOCRU) juga melaporkan bahwa pada akhir April 2020 jumlah kasus COVID-19 yang dikonfirmasi dapat mencapai antara 11 ribu hingga 71 ribu orang. Hasil mereka ini didasarkan pada temuan jumlah kasus COVID-19 yang meningkat dua kali lipat dalam tiga hari, melonjak dari 172 kasus pada 17 Maret menjadi 369 pada 20 Maret (berdasarkan berita Kontan).

Tentu kita belum mengetahui dengan pasti sampai kapan wabah ini berakhir. Yang baru kita dapatkan saat ini adalah gambaran dan penjelasan yang rasional tentang kapan puncak penyebaran wabah virus corona ini terjadi di Indonesia. Misalnya dari tim peneliti di Lembaga Pemodelan Matematika dan Simulasi ITB yang telah melakukan pemodelan matematika terhadap hal ini, dan juga telah melaporkannya dengan beberapa koreksi (berdasarkan berita Detik). Lagi-lagi koreksi ini didasarkan pada temuan kasus yang melonjak naik dengan tajam dalam waktu singkat. Terlepas dari adanya koreksi ini, kita patut berikan apresiasi yang tinggi terhadap upaya ini.

Sama halnya juga dengan CFR, kita belum dapatkan angka estimasi yang pasti terhadap CFR ketika wabah ini sedang beralangsung. Yang kita dapatkan saat ini baru angka estimasi CFR sederhana yang didapat dari laporan kasus agregat dan laporan jumlah kumulatif kematian pasien korona dalam suatu waktu tertentu ketika wabah ini sedang berlangsung. Kita juga belum dapatkan angka yang pasti tentang probabilitas kematian pada kasus yang teridentifikasi. Tapi kita bisa katakan di sini, berdasarkan metode statistik tertentu (yang mungkin akan saya posting kemudian hari jika ada waktu), bahwa ada parameter yang tidak tampak di CFR sederhana ini yang berkaitan dengan fungsi-fungsi survival berpengaruh terhadap besar kecilnya probabilitas ini, baik probabilitas kematian pasien korona atau probabilitas kesembuhan pasien korona.

Di samping fungsi survival, ada fungsi lain lagi yang berpengaruh di sini, yaitu hazard function yang menimbulkan terjadinya korban kematian (temuan ini didasarkan pada perluasan metode Kaplan-Meier dengan dua outcome untuk estimasi CFR dari data laporan lengkap 1.755 kasus SARS di Hong Kong pada tahun 2003. Detail laporannya ada di sini).

Tetapi ada yang perlu dicatat di sini, bahwa ada kemungkinan terjadi persepsi yang keliru bahwa wabah virus korona ini adalah bencana katastrofik yang terjadi dalam periode waktu yang singkat dengan korban yang serentak dan tidak bisa dikendalikan seperti halnya bencana gempa bumi atau letusan gunung api.

Perlu dicatat bahwa wabah virus korona bukanlah bencana katastrofik, karena karakteristiknya terjadi dalam periode waktu yang relatif lama dengan beberapa kasus yang dilaporkan terus-menerus, hari demi hari, hingga wabah ini dinyatakan berakhir.

Oleh karena sifatnya bukan katastrofik, maka pemerintah/negara bertanggung jawab untuk dapat mengendalikan parameter-parameter estimasi sehingga jumlah kasus terinfeksi dapat ditekan hingga 0, dan angka kematian kasus yang terinfeksi dapat diminimalkan hingga tidak ada lagi korban nyawa yang melayang. Akan ada dampak buruk yang merembet ke banyak sektor lain jika negara/pemerintah tidak dapat mengendalikan penanganan infeksi virus ini dengan baik. Oleh karena itu kebijakan pemerintah yang tepat mutlak diperlukan dan sesegera mungkin harus dilaksanakan.

Selain dari sisi kebijakan, hal penting lainnya untuk dilakukan adalah meningkatkan kesadaran publik tentang pencegahan infeksi COVID-19 ini. Kritik terhadap pemerintah menjadi salah satu kontrol yang harus terus ada untuk meningkatkan kesadaran publik. Milenial harus rajin kritik, dan terbiasa dikritik, dan jangan anggap remeh kritik apa pun terhadap pemerintah. Minimnya kritik akan membuat publik lengah dan daya survivalnya menjadi rendah.

Perlu dicatat bahwa mengkritik pemerintah bukanlah pekerjaan yang sia-sia, atau tidak ada kerjaan. Kritik adalah suatu proses aktif dan merupakan suatu kebajikan bagi negara. Di samping dapat meningkatkan kesadaran publik, kritik juga merupakan alat kontrol bagi pemerintah dan orang yang mengkritik pemerintah memberikan kebajikan bagi negara sepanjang kritik tersebut disampaikan dengan baik dan konstruktif.

Kemudian, perlu adanya kepastian hukum. Karena jika opsi lockdown tidak diambil (yang berarti tidak ada pemaksaan pembatasan gerak warga lewat penguncian atau karantina suatu wilayah oleh pemerintah), maka harus ada kepastian hukum dalam opsi lain yang dipilih (social distancing).

Pemerintah dapat mencontoh model fatwa MUI dalam hal kepastian hukum yang ditentukan berdasarkan kaidah-kaidah usul fiqih. Fatwa MUI yang baru-baru ini dikeluarkan menurut saya adalah contoh kebijakan yang tepat dan sekaligus produktif dalam upaya pencegahan. Poinnya jelas dan praktis, bahkan merakyat. Kepastian hukum ini menjadi penting bagi rakyat dalam penyelenggaraan ibadah di masa wabah covid-19 berlangsung pada suatu wilayah. Dalam sebuah fatwa misalnya ada masalah halal, haram, sunnah, makruh, dll, bentuknya tidak harus demikian. Poinnya di sini adalah kepastian hukum, dan juga ketegasan dalam penegakkan hukum tersebut.

Jadi ketika wabah virus korona ini sedang berlangsung seperti saat ini, dimana CFR dan probabilitas kematian pada kasus yang terinfeksi masih dalam proses menuju angka akhir, yang perlu dilakukan (berdasarkan analisis survival) adalah memperkuat daya survival atau fungsi survivorship. Poin-poinnya adalah subjektif, dan menurut saya adalah : (1) Pengumpukan data yang relevan dengan kasus karena wabah ini bukan bencana katastrofik, jadi masih bisa dikendalikan (2) Memperkuat dukungan sarana dan peralatan medis yang diperlukan, termasuk peralatan untuk rapid test, obat-obatan, juga termasuk dukungan tenaga medis dan tenaga ahli khususnya sains yang berkaitan dengan wabah virus ini, (3) Kebijakan pemerintah yang tepat sasaran sesuai dengan estimasi yang rasional, (4) Meningkatkan kesadaran publik dan daya kritis masyarakat, dan (5) Kepastian hukum bagi masyarakat dalam opsi kebijakan yang diambil.

Tentu harapan dan doa kita semua adalah semoga wabah virus korona cepat berlalu di Indonesia, dan rakyat bisa diselamatkan dari badai ganas ini, hingga tidak ada lagi kasus yang terinfeksi virus korona dan tidak ada lagi korban korona yang meninggal.

Keadilan, Load-balancing dan NeuroCache

Saya dan istri kadang suka ngobrol tentang hikmah-hikmah dalam kehidupan. Yang menjadi bahan obrolan tidak terlepas dari apa yang dikerjakan, dilihat atau dirasakan sehari-hari. Istri saya yang kerjaan sehari-harinya ngajar kimia di sekolah, kadang suka berbagi hikmah apa yang bisa dipetik dari suatu hal yang terjadi dalam rutinitasnya. Demikian juga saya, kalau ada suatu pelajaran yang menarik dipetik dari sepenggal kode program saya share ke istri. Istri saya suka cemberut kalau saya sampai berlarut-larut ngoding dan susah dihentikan (tapi sepertinya sekarang istri saya sudah paham dengan sifat saya ini hehe…).

Tapi ini adalah tentang NeuroCache, dimensi pelajarannya luas, dan tidak cocok dishare secara langsung ke istri. Jadi saya share di blog aja.

NeuroCache memang saat ini bukanlah sebuah program yang dirancang untuk meniru atau membuat suatu penyimpulan dan penilaian pada jaringan sosial bermasyarakat dan semacamnya. NeuroCache tidak punya tujuan ke situ.

Tapi berbicara tentang kode-kode program komputer selalu ada poin pelajaran yang bisa dipetik dalam kehidupan. Entah itu untuk kehidupan pribadi atau kehidupan yang lebih luas.

Karena NeuroCache fokus di jaringan server, dan dengan server yang melibatkan banyak klien, maka barangkali juga poin-poin pelajaran yang saya petik bisa lebih luas mencakup suatu negara, kawasan negara-negara, dunia bahkan sangat mungkin juga mencakup di atas itu. Karena dengan jumlah server yang ada di dunia saat ini, belum bisa menyamai kekuatan potensial dari jaringan saraf nyata yang ada di otak manusia.

Saat posting ini ditulis NeuroCache baru bisa melingkupi suatu jaringan dengan MAX_SERVERS 1000 server, dan dengan jumlah maksimal pola distribusi MAX_NEURAL_DISTRIBUTION juga 1000. Para ahli kognitif, neuroscience, juga banyak yang sudah meneliti dan berusaha menjelaskan aspek-aspek statistik dari konektivitas antar neuron di jaringan syaraf otak manusia. Ini bisa menjadi diskusi ilmiah yang menarik yang dapat mendukung penemuan-penemuan baru di bidang tersebut dan juga di NeuroCache.

Terlalu jauh…

Ok, poin pelajarannnya adalah load-balancing di suatu masyarakat atau suatu bangsa. Tanpa penemuan titik keseimbangan beban, muncul ketidakadilan, selanjutnya ketidakberesan.

Saya sering melihat persoalan utama yang membidani segala ketidakberesan selalu berpangkal dan berujung di masalah ketidakadilan. Oleh karena itu ada load di sini, dan load-balancers punya tugas menyelesaikan ini agar masyarakat terpenuhi rasa keadilannya, tidak ada beban lagi yang dirasakan tidak adil.

Ketidakberesan di masyarakat banyak sekali jenis dan definisinya, entah itu timbulnya kejahatan melawan hukum, atau bisa juga suatu aksi individu atau bersama-sama dalam suatu kelompok yang mengganggu atau meresahkan ketentraman masyarakat. Masyarakat yang terpenuhi rasa keadilannya akan damai dan tentram. Sebaliknya ketika ada ketidakadilan maka muncul ketidakberesan. Misalnya aksi demonstrasi, unjuk rasa, kriminalitas, investasi bodong, pengalihan realitas melalui halusinasi sekelompok orang, dan seterusnya. Ini semua menunjukkan adanya ketidakberesan dalam suatu masyarakat, berbangsa dan bernegara.

Saya sangat setuju bahwa ketidakadilan adalah inti persoalan dari semua ketidakberesan itu. Bahkan tanpa keadilan tidak akan ada keharmonisan, kesejahteraan dan kemakmuran. Persoalannya bagaimana mengantisipasi adanya ketidakadilan? Dan bagaimana mengatasinya jika ketidakadilan muncul?

Di NeuroCache saya punya pelajaran yang bisa dimunculkan sebagai isu untuk menjawab persoalan di atas. Saya melihat bahwa penemuan di mana titik penyeimbang beban dan bagaimana mekanisme menyeimbangkannya adalah suatu prasarat demi terpenuhinya rasa keadilan. Poin pelajaran ini banyak diabstraksi di NeuroCache, lebih khusus di sslcryptonsc.

Memang suatu titik penyeimbang beban itu bisa mudah teramati jika sudah ada pra-kondisi yang sudah disepakati sebelumnya. Seorang presiden, kepala pemerintahan atau kepala negara di suatu negara, ketua DPR/MPR, ketua lembaga tinggi atau aparat lainnya lumrah punya kekuatan karena bebannya juga kuat. Mereka bahkan tidak lagi merasakan beban itu, bahkan tidak pantas jika menyebutnya sebagai beban. Karena beban itu sudah setara dengan fasilitas dan kekuatan yang telah/akan dimilikinya.

Tetapi aparat yang terlalu kuat (melebihi besaran bebannya) perlu diwaspadai oleh semua pihak termasuk oleh masyarakat, karena mereka punya potensi yang bahkan sangat kuat juga untuk melakukan korupsi. Saya lupa ada seorang ahli ilmu sosial yang mengatakan pendapat seperti ini dalam bahasa Inggris, “Power tends to currupts, absolute power currupts absolutely.” Karena itu KPK mesti diperkuat sebagai suatu titik load-balancing, dalam hal ini. Mesti seperti itu, karena kalau tidak maka akan muncul banyak ketidakberesan dalam kehidupan bermasyarakat, berbangsa dan bernegara.

Banyak contoh-contoh lainnya karena titik load-balancing itu bisa banyak kandidatnya, tapi tingkat-tingkat penemuannya itu berbeda-beda. Ada yang mudah teramati, pra-kondisi, seperti contoh tadi. Siapa pun memaklumi kalau presiden atau kepala negara itu punya tugas yang berat, karena itu harus punya kekuatan untuk penyeimbang beban. Level penemuannya nol, karena tidak ada aktivitas learning di situ, baik yang sadar atau sub-sadar, baik simbolik atau sub-simbolik.

Contoh lainnya. Saya dan istri kadang suka menarik nafas dalam sambil mengelus dada lihat-lihat di berita ada komedian yang terjerat kasus narkoba atau artis, public figure, yang bunuh diri. Secara lahiriah segala kebutuhan hidupnya terpenuhi. Tapi rupanya ada banyak beban mental di situ sehingga sering juga saya menemukan seorang pelawak yang kena kasus narkoba, bunuh diri, dst. Padahal kan tugas pelawak itu bikin tertawa dan diketawai. Beban mental yang ditanggungnya semestinya juga dihadapi dengan sikap bersyukur karena sudah sepadan dengan penguatan income dari jam kerja mereka.

Di lain sisi, ada orang yang diolok-olok, dinyiyiri, dibunuh karakternya, bahkan untuk ketawa dan bahagia pun harus berhadapan dengan seribuan nyinyiran oleh masyarakat sekitarnya, apalagi tanpa ada alasan yang pasti diperlakukan seperti itu, dia juga punya beban yang mestinya ada penguatnya untuk penyeimbang.

Ada begitu banyak orang baik, tapi ada diantaranya yang baik karena diciptakan baik oleh masyarakat. Demikian pula sebaliknya ada orang yang berbuat jahat karena ia diciptakan jahat oleh masyarakat.

Mungkin kejahatannya itu kriminal sehingga harus berhadapan dengan proses hukum, juga supaya ada efek jera lalu secara sosial dihakimi. Oke, saya paham logika itu. Mungkin awalnya dia berbeda dengan selera masyarakat saat itu sehingga harus ramai-ramai dihakimi, diolok olok, dinyinyiri atau “dimusnahkan”, sehingga akhirnya dia berbuat jahat. Penjahat yang diciptakan masyarakat.

Tapi pernahkah kita tengok ke belakang dia berbuat itu karena apa. Mungkin karena ada suatu bagian dari kebebasannya telah direnggut, masyarakatlah juga yang menciptakannya. Ada banyak atribut yang bisa dipakai secara sosial untuk membuat seseorang menjadi penjahat. Tidak adil jika semua beban itu ditimpakan ke seseorang.

Masyarakat suatu saat akan terhukum dengan adanya ketidakadilan. Entah itu berupa sulitnya ekonomi dan makin jauhnya kesejahteraan dan keharmonisan bersama.

Masyarakat kita, dalam level apa pun, perlu belajar agar bisa menjadi masyarakaat yang ideal. Masyarakat yang ideal dalam pemahaman saya adalah masyarakat yang berkeadilan, yaitu suatu kehidupan bersama yang mencapai keseimbangan beban sehingga terpenuhinya rasa keadilan oleh setiap komponen masyarakat.

Poin pelajaran kehidupan di sslcryptonsc adalah load-balancing.

Preparing for the Hyang 1.3.0 Release

[This blog post describes the release plans of Hyang 1.3.0 from the Hyang Programming Language writer and creator, Hilman P. Alisabana. This blog post is licensed under the same license as the license of this blog (Creative Common License Attribution-ShareAlike version 3.0). You can email the writer’s email address <alisabana@hyang.org> for further informations about this blog post.]

Hyang 1.3.0 is planned to be released this year. This is the “heavyweight” version of Hyang because a lot of additions, new features, and some big changes. It will come with so many default packages and libraries (including Abah compiler and a number of base packages) and about 15+ prebuilt packages. The Abah compiler of Hyang and its JIT capabilitias (called Jitabah) will be integrated and natively registered within Hyang 1.3.0 distribution, and it’s used by default when starting Hyang prompt.

Hyang 1.3.0 will also have a version name “Iced Avocado”; the “heavyweight” version of Hyang but with a fruitful and nutritious packages.

What’s really new on the next in this world is that Hyang 1.3.0 will have an interface to deal with Alisabana’s Constant. This is another good news for Alisabana’s Constant fans worldwide. 🙂

Although Hyang 1.3.0 was built under Debian GNU/Linux, as below :

system info

Hyang 1.3.0 source code is being developed for Unix-like machines, so it will configure and build under a number of common platforms including platforms of CPU-linux-gnu for the i386, amd64/x86_64, alpha, arm, arm64, hppa, mips/mipsel, powerpc, s390x and sparc CPUs, i386-hurd-gnu, CPU-kfreebsd-gnu for i386 and amd64, i386-pc-solaris, rs6000-ibm-aix, sparc-sun-solaris, x86_64-apple-darwin, x86_64-unknown-freebsd and x86_64-unknown-openbsd.

In addition to Unix-likes, with helps the GNU Compiler Collection (GCC) manuals, Hyang 1.3.0 source code is also being developed for Windows and Mac OS families of operating systems, although all Hyang developers did not have access to Windows and Mac.

Below is the screenshot of a successful configure result of hyang-devel (Hyang 1.3.0 latest development), after running the ./configure command :

Hyang 1.3.0 Configuration Output

Hyang 1.3.0 will have interfaces to procedures written in the C, C++, Obj-C, Fortran and Java for efficiency. If your installed GCC versions do not support C++17 compiler and Obj-C compiler, try a later version of GCC, at least GCC 7.4, or later. (Update: see my next post on sharing about how to build and install GCC version 8.3 : In bahasa Indonesia).

Below is the screenshot of compilation result (after running the make command) to hyang-devel. When hyang is called from the terminal it’ll look something like this :

Hyang 1.3.0 - Welcome Prompt

With the ./configure and make command, everything should run well. You don’t need to install Hyang 1.3.0 to run Hyang. But for a large sets of project it is recommended to install Hyang with the root access, for instance using the command sudo make install.

Unlike Hyang 1.2.x series which are licensed under the terms of MIT license, Hyang 1.3.0 will be distributed mainly under the terms of GNU General Public License version 3 or later, and some files still use version 2. Below is the screenshot of output to the function license() :

Hyang 1.3.0 Licenses

A copy from above :

Hyang software package is distributed under the terms of GNU
General Public License, either Version 2 or Version 3.
The terms of version 3 of the license are in a file called COPYING
which you should have received with this software package
and which can be displayed using hyangShowDoc("COPYING").
Version 2 can be displayed using hyangShowDoc("GPL-2").

You should have received copies of the licenses along with this
software package. If not, see <http://www.gnu.org/licenses/>.

A small number of files (the API header files listed in the
HYANG_DOC_DIR/COPYRIGHTS) are distributed under the terms of
LESSER GNU GENERAL PUBLIC LICENSE, version 2.1 or later.
This can be displayed using hyangShowDoc("LGPL-2.1").
Version 3 of LGPL can be displayed using hyangShowDoc("LGPL-3").

'Thank you for using Hyang, and enjoy coding!'
>

Hyang 1.3.0 provides a modern interface to mathematical and statistical algorithms, and some modern computational tasks including AI and data sciences. The Hyang 1.3.0 distribution also contains utilities for parallel computations, neural networks, spatial correlation and “monadic” space analysis, genetic algorithms, survival analysis, recursive partitions, some algorithms to deal with lattice stuffs, bootstrapping tools, kernel smoothing, and many more to come later.

On mathematics and statistics, Hyang 1.3.0 has a large sets of functionality for a large number of modern research topics, including linear and generalized linear analysis, nonlinear regression analysis, time series analysis, parametric and nonparametric tests, clustering, smoothing, structural equation modeling (SEM), partial least square (PLS), fuzzy logic, etc etc…, also provides a flexible graphical environment for creating various kinds of data visualization.

Hyang 1.3.0 consists of a language; an interpreter plus a compiler (Abah) with a JIT (Just-In-Time) capabilities (Jitabah); run-time environment with graphics, a debugger, access to certain system functions, and the ability to run programs within script files.

Hyang 1.3.0 is a programming and scripting language that is influenced by GNU software projects, and inspired by a number of programming languages including C, C++, Obj-C, Fortran, Lua, Scheme, R, Java, Python and Perl.

Below is a screenshot of the output from function contributors() :

Hyang 1.3.0 Contributors

Complete output from function contributors() above is here :

Authors of Hyang.

Hyang was initially written by Hilman P. Alisabana in early 2017.
On its develepment Hyang was influenced and inspired by many other
programming and scripting language including C, C++, Java, Fortran,
Perl, Python, Scheme, Lua and R.

There has been a list of contibutors of Hyang, currently consisting of

M. Sindu Natama
Inne Susanti
Yazid Amini
Ervina Larasati
Nadya
Dara Irawan
Lena C. S.
Tedja Arsyad
Dhian Shaphira
Rida Farida
Anna Nita
Aldi Dinata
Nikita Yusuf
Yan

A list of authors of code from other projects outside Hyang included
in the Hyang distribution are listed in the COPYRIGHTS files.

Hyang is a programming and scripting language that was influenced
by GNU software projects, and inspired by a number of programming
languages including C, C++, Obj-C, Fortran, Lua, Scheme, R, Java,
Python and Perl.

Hyang would say thanks to the open source communities worldwide
for the invaluable helps with the codes and documentations that
has been adopted by Hyang and is acknowledged in the code files.

Other contributors outside the Hyang Language Foundation have
written codes that has been adopted and modified accordingly by
Hyang and is acknowledged in the source code files, including :

Lachlan Patrick, Catherine Loader, Ei-ji Nakama, Ulrich Drepper,
Bruno Haible, Gordon Matzigkeit, Gary V. Vaughan, Scott J. Remnant,
David MacKenzie, Paul Eggert, Patrick Daly, Achim Zeileis, Angus
North, Jim McDonald, Wim Rijnders, Ville Laurikari, Bjorn Reese,
Daniel Stenberg, Arthur D. Olson, Yukihiro Nakadaira, Martin F.
Gergeleit, Christopher R. Thewalt, DaviD W. Sanderson, Ross Ihaka,
Julian Seward, Alan Richardson, Noah Friedman and of course the GNU
project writers and the Free Software Foundation; many more, too
numerous to mention here.

The Hyang Language Foundation (HLF) may decide to give out email
address e.g., @hyang.org and an account from Hyang
websites to contributors to the Hyang project (even without making
them members of the HLF) when in the view of the HLF this would help
advance the Hyang project.

(END)

Other informations for Hyang 1.3.0 release plan :

  1. Plan for various kinds of file formats for any kind of Hyang documentations, manuals, FAQ, and NEWS files. These file formats including HTML, LaTeX and PDF. All and everything about making them are compiled within Hyang build system. From there, one can obtain formats converted to plain ASCII text, DVI, GNU info, HTML, PDF, PostScript, as well as the Texinfo source used for creating all these formats using the GNU Texinfo system. All of these codes can be built directly (and/or separately) during (and after) Hyang compilation process. For example, by issuing the following commands: make latex, make pdf, and make html after compilation process.
  2. Plan for Hyang bug tracking system placed at hyang.org website and integrate it within Hyang 1.3.0 distribution system.
  3. Plan for Hyang Package Archive (HYPA) placed at hyang.org website and integrate it within Hyang 1.3.0 distribution system.
  4. Plan for placing Hyang source code repositories and all Hyang default packages (including base and prebuilt packages) on public domain. Current versioning system of Hyang 1.3.0 development is using SVN and placed on private domain. Other plan is using git (in addition to svn one).
  5. Etc. (all other parts will be integrated within Hyang distribution system).

Nontrivial zeros and the eigenvalues of random matrices

According to the article written by Meier and Steuding[5], one of the most interesting and aesthetic of all possible scenarios proposed by Riemann Hypothesis (RH) is regularity in the distribution of zeros, and thus in prime number distribution as well. There are numerous articles and papers which attempt to prove RH and to investigate its consequence. One of them is to relate the zeros of the Riemann zeta function and the eigenvalues of random matrices.

The Riemann zeta function and its Euler’s expression can be defined as :

\zeta(s)= \sum_{n=1}^{\infty}\frac{1}{n^{s}}= \prod_{p}\left ( 1-\frac{1}{p^{s}} \right )^{-1}

here the product on the right side is taken over all prime numbers p. The Euler-product on the right side may be ragarded as an analytic version of the unique prime factorization of integers, and it converges for Re(s)>1. Riemann showed that \zeta(s) has a continuation to the complex plane and satisfi es a functional equation :

\xi(s):=\pi^{-s/2} \Gamma \left ( s/2 \right )\zeta(s)= \xi \left ( 1-s \right )

\xi(s) is entire except for simple poles at s = 0 and 1. The zeros of \xi(s) is

\frac{1}{2}+ i \gamma

It’s clear that \left |Im(\gamma) \right | \leq \frac{1}{2}. Hadamard and de la Vallée Poussin in their proofs of Prime Number Theorem established that \left |Im(\gamma) \right | < \frac{1}{2}.

The Riemann hypothesis (RH) states that all nontrivial zeros of \zeta(s) lie on the critical line Re(s) =\frac{1}{2}. So here \gamma \in \mathbb{R}.

In 1973 Montgomery[1] conjectured that the number of nontrivial zeros \frac{1}{2}+ i\gamma, \frac{1}{2}+i\gamma ' of \zeta(s) satisfying the inequalities :

0<\alpha\leq \frac{\log T}{2\pi}(\gamma-\gamma ')\leq\beta

is asymptotically equal to

N(T)\displaystyle\int_{\alpha }^{\beta }\left ( 1-\left ( \frac{\sin\pi u}{\pi u} \right )^2 \right )du

as T\rightarrow\infty.

This conjecture is now called Montgomery’s pair correlation and plays a complementary role to the Riemann hypothesis; i.e., vertical vs. horizontal distribution of the nontrivial zeros.

Montgomery’s pair correlation conjecture claims that the two-point correlation for the zeros of the zeta function on the critical line is (in the limit) equal to the two-point correlation for the eigenangles of random Hermitian matrices from the Gaussian Unitary Ensemble (GUE). This conjecture implies that almost all zeros of the zeta function are simple; the predicted pair correlation matches to the one of the eigenangles of certain random matrix ensembles. Here because the corresponding asymptotics is a theorem in random matrix theory, not only a conjecture[5].

Let’s assume RH and order the ordinates \gamma :

...\gamma_{-1}\leq 0\leq \gamma_{1}\leq \gamma_{2}...

Then \gamma_{j}= -\gamma_{-j}, j= 1,2,..., Riemann computed \gamma_{1}, the one with smallest positive imaginary part being 14,43725. Riemann noted that :

\left \{ j:0\leq \gamma_{j}\leq T \right \}\sim \frac{T \log T}{2 \pi}, as T\rightarrow \infty

In particular, the mean spacing between the \gamma^{'}_{j}s tends to zero as j\rightarrow \infty.

Local spacings law between these numbers can be represented by re-normalization as follows :

\hat{\gamma_{j}}= \frac{\gamma_{j}\log \gamma_{j}}{2\pi} for j \geq 1

The consecutive spacings \delta_j are de fined to be :

\delta_j=\hat{\gamma_{j+1}}-\hat{\gamma_{j}}, j=1,2,...

More generally, the k-th consecutive spacings are :

\delta^{(k)}_j=\hat{\gamma_{j+k}}-\hat{\gamma_{j}}, j=1,2,...

Odlyzko [2] has made an extensive and profound numerical study of the zeros and in particular their local spacings. He finds that they obey the laws for the (scaled) spacings between the eigenvalues of a typical large unitary matrix. That is they obey the laws of the Gaussian Unitary Ensemble (GUE). Computations of Odlyzko[2] showed that also the nearest neighbor spacing for the nontrivial zeros of the zeta-function seems to be amazingly close to those for the eigenangles of the GUE.

The upper figure shows Odlyzko’s pair correlation for 2 \times 10^8 zeros of \zeta (s) near the 10^{23}rd zero. The lower figure shows the difference between the histogram in the first graph and 1-\left( \frac{\sin\pi t}{\pi t}\right )^2. In the interval displayed, the two agree to within about 0.002 …. (pictures credited to Meier and Steuding[5]).

The Montgomery-Odlyzko law claims that these distributions are, statistically, the same. But the only proved cases of pair correlation asymptotics are those of Katz and Sarnak[4] for certain local zeta functions. (I found references below for comprehensive chronology of these developments or here [6] for the review).

References :

[1] H.L. Montgomery, The pair correlation of zeros of the Riemann zeta-function on the critical line, Proc. Symp. Pure Math. Providence 24 (1973), 181-193.

[2] A.M. Odlyzko, The 10^{20}th zero of the Riemann zeta-function and 70 million of its neighbors, in ’Dynamical, spectral, and arithmetic zeta functions’ (San Antonio, TX, 1999), 139–144, Contemp. Math. 290, Amer. Math. Soc., Providence 2001.

[3] N.M. Katz, P. Sarnak, Zeros of The Zeta Function and Symmetry, Bulletin of The AMS, Vol. 36, Number 1, January 1999, Pages 1-26.

[4] N.M. Katz, P. Sarnak, Random matrices, Frobenius eigenvalues, and monodromy, AMS, Providence 1999.

[5] P. Meier, J. Steuding, The Riemann Hypothesis, available at claymath.org.

[6] J. Steuding, The Riemann Zeta Function and Predictions from Random Matrix Theory, AMS, subject classification numbers: 11M06.

PSPP : Perangkat Lunak GNU Pengganti SPSS

Bagi yang terbiasa melakukan analisis data statistik, nama SPSS mungkin tidak asing terdengar di telinga. Salah satu proprietary software, selain MS Excel tentunya, yang kerap dengan mudah dan “asal-asalan” (baca : bajakan) dipakai oleh orang yang tidak bertanggung-jawab ketika melakukan analisis data. (dicoret karena tampaknya budaya bajakan sudah mulai berkurang saat ini hehe, yang kesindir jangan nyepam ya hehe…).

Tetapi bagi lingkungan akademik, budaya proprietary software seperti yang ditawarkan SPSS tidaklah cocok dengan budaya pendidikan, melainkan open source software. Proprietary software hanya menawarkan kemudahan bagi orang awam, namun tidak begitu banyak memberikan pengertian. Dan bagi yang mendalami suatu masalah, proprietary software tidaklah elok. Demikian halnya di dalam analisis data statistik. Karena itu perangkat lunak bebas untuk analisis data statistik telah banyak dikembangkan sesuai dengan kultur lingkungan atau komunitas, salah satunya ialah PSPP yang dikembangkan oleh GNU.

PSPP atau GNU PSPP merupakan salah satu perangkat lunak bebas pengganti SPSS yang dikembangkan oleh GNU dan berada di bawah GPLv3. Mengenai singkatan PSPP saya kurang mengetahui, tetapi dari namanya sudah kelihatan kalau PSPP merupakan nama untuk mengganti SPSS. Beberapa sintak dan file data PSPP compatible dengan yang digunakan SPSS.

PSPP mendukung interface perangkat lunak bebas lain yang berhubungan seperti GNumeric dan OpenOffice.org. PSPP dapat dijalankan baik melalui GUI maupun baris-perintah di terminal yang di dalam prakteknya kedua cara ini saling melengkapi.

Khusus di Ubuntu (karena saya menggunakannya di Ubuntu), PSPP packages untuk karmic update dapat dilihat di :

http://packages.ubuntu.com/karmic-updates/pspp

Instalasi :

sudo apt-get install pspp

Untuk mencek apakah pspp telah terpasang, ketik :

which pspp

bila muncul

/usr/bin/pspp

berarti pspp telah terpasang. Oh ya, mengenai informasi/berita terakhir mengenai PSPP bisa dibaca-baca di sini.