1 poin oleh merumeru 2026-03-23 | 1 komentar | Bagikan ke WhatsApp

Saya telah mem-porting paket R CausalImpact milik Google ke Python.
Gibbs sampler diimplementasikan dalam Rust dan dipanggil dari Python melalui PyO3.
Tidak memerlukan TensorFlow, dan sekitar 30 kali lebih cepat dibanding R.
Alasan membuatnya:
Porting Python yang sudah ada memiliki masalah. pycausalimpact
menggunakan MLE sehingga hasilnya berbeda dari R. tfcausalimpact
memerlukan TensorFlow (3GB+). Dan tidak ada porting mana pun yang
mengimplementasikan pemilihan variabel spike-and-slab.
Inilah fitur inti yang membuat bsts di R dapat secara otomatis
memilih deret waktu kontrol yang sesuai dari beberapa deret kontrol.
Library ini mereproduksi Gibbs sampler yang sama dengan paket bsts di R.
Kalman filter, simulation smoother, hingga prior spike-and-slab
semuanya dibuat identik. Pada setiap commit, CI menjalankan uji kesetaraan numerik
dengan R CausalImpact 1.4.1
(efek titik ±3%, rentang CI ±5%).
Bagian tersulit adalah spike-and-slab.
Butuh beberapa minggu untuk mencocokkan sampling coordinate-wise dan nilai default StudentSpikeSlabPrior
(expected.r2=0.8, prior.df=50) dengan output R.
Fitur yang didukung:

  • Pemilihan variabel spike-and-slab (prior sama dengan R bsts)
  • Komponen musiman (nseasons, season_duration)
  • Regresi dinamis (koefisien yang berubah seiring waktu)
  • Tren linear lokal
    Benchmark (T=1000, niter=1000):
  • Tanpa kovariat: 0,07 detik (R: 2,1 detik, 30x)
  • 5 kovariat: 0,20 detik (R: 2,2 detik, 11x)
    pip install bsts-causalimpact
    GitHub: https://github.com/YuminosukeSato/bsts-causalimpact
    Dokumentasi: https://yuminosukesato.github.io/bsts-causalimpact/
    Saya menantikan masukan dari orang-orang yang melakukan inferensi kausal deret waktu.
    Terutama, jika ada edge case yang perlu diuji, beri tahu saya.

1 komentar

 
shw00 2026-03-24

Keren. Saat ini memang belum ada data yang bisa langsung saya coba, tetapi kalau nanti ada saya akan mengujinya.