1 puan yazan merumeru 2026-03-23 | 1 yorum | WhatsApp'ta paylaş

Google’ın CausalImpact R paketini Python’a port ettim.
Gibbs örnekleyiciyi Rust ile implemente edip PyO3 üzerinden Python’dan çağırıyorum.
TensorFlow gerektirmiyor, R’ye kıyasla yaklaşık 30 kat daha hızlı.
Bunu yapma nedeni:
Mevcut Python portlarında sorunlar vardı. pycausalimpact,
MLE kullandığı için R ile farklı sonuçlar veriyor. tfcausalimpact ise
TensorFlow (3GB+) gerektiriyor. Ayrıca hiçbir port,
spike-and-slab değişken seçimini implemente etmemişti.
R’de bsts’nin birden çok kontrol zaman serisi arasından uygun olanları otomatik olarak
seçmesini sağlayan temel özellik tam olarak bu.
Bu kütüphane, R’nin bsts paketindeki Gibbs örnekleyicinin aynısını
yeniden üretir. Kalman filtresi, simulation smoother ve spike-and-slab
önsel dağılımı da tamamen aynıdır. Her commit’te R CausalImpact
1.4.1 ile sayısal eşdeğerlik testleri CI üzerinde çalıştırılır
(noktasal etki ±%3, CI aralığı ±%5).
En zor kısım spike-and-slab idi.
Coordinate-wise örnekleme ile StudentSpikeSlabPrior varsayılanlarını
(expected.r2=0.8, prior.df=50) R çıktısıyla eşleştirmek haftalar sürdü.
Desteklenen özellikler:

  • Spike-and-slab değişken seçimi (R bsts ile aynı önsel dağılım)
  • Mevsimsellik bileşeni (nseasons, season_duration)
  • Dinamik regresyon (zamana göre değişen katsayılar)
  • Local linear trend
    Benchmark (T=1000, niter=1000):
  • Kovaryat yok: 0.07 saniye (R: 2.1 saniye, 30 kat)
  • 5 kovaryat: 0.20 saniye (R: 2.2 saniye, 11 kat)
    pip install bsts-causalimpact
    GitHub: https://github.com/YuminosukeSato/bsts-causalimpact
    Dokümantasyon: https://yuminosukesato.github.io/bsts-causalimpact/
    Zaman serisi nedensel çıkarımı yapanların geri bildirimlerini bekliyorum.
    Özellikle test edilmesi gereken edge case’ler varsa lütfen belirtin.

1 yorum

 
shw00 2026-03-24

Harika görünüyor. Şu anda hemen deneyecek verim yok ama olursa bir kez test edeceğim.