Google के CausalImpact R पैकेज का Python में पोर्ट (Gibbs sampler Rust में)
(github.com/YuminosukeSato)Google के CausalImpact R पैकेज को Python में पोर्ट किया गया है.
Gibbs sampler को Rust में implement किया गया है और PyO3 के जरिए Python से call किया जाता है.
TensorFlow की ज़रूरत नहीं है, और यह R की तुलना में लगभग 30 गुना तेज़ है.
इसे बनाने की वजह:
मौजूदा Python पोर्ट्स में समस्याएँ थीं. pycausalimpact
MLE का उपयोग करता है, इसलिए उसके परिणाम R से अलग आते हैं. tfcausalimpact को
TensorFlow (3GB+) की आवश्यकता होती है. और किसी भी पोर्ट ने
spike-and-slab variable selection को implement नहीं किया था.
R के bsts में कई control time series में से उपयुक्त वाले को अपने-आप
चुनने की मुख्य सुविधा यही है.
यह लाइब्रेरी R के bsts पैकेज वाले उसी Gibbs sampler को
reproduce करती है. Kalman filter, simulation smoother, spike-and-slab
prior distribution तक सब कुछ वही है. हर commit पर R CausalImpact
1.4.1 के साथ numerical equivalence test CI में चलाए जाते हैं
(point effect ±3%, CI range ±5%).
सबसे कठिन हिस्सा spike-and-slab था.
Coordinate-wise sampling और StudentSpikeSlabPrior के default values
(expected.r2=0.8, prior.df=50) को R के output से match कराने में
कई हफ्ते लग गए.
समर्थित सुविधाएँ:
- Spike-and-slab variable selection (R bsts के समान prior distribution)
- Seasonal component (nseasons, season_duration)
- Dynamic regression (time-varying coefficients)
- Local linear trend
बेंचमार्क (T=1000, niter=1000): - Covariate नहीं: 0.07 सेकंड (R: 2.1 सेकंड, 30 गुना)
- 5 covariates: 0.20 सेकंड (R: 2.2 सेकंड, 11 गुना)
pip install bsts-causalimpact
GitHub: https://github.com/YuminosukeSato/bsts-causalimpact
दस्तावेज़: https://yuminosukesato.github.io/bsts-causalimpact/
Time series causal inference पर काम करने वालों के फ़ीडबैक का इंतज़ार है.
खास तौर पर अगर कोई edge case है जिसे test करना चाहिए, तो बताइए.
1 टिप्पणियां
कमाल है। अभी मेरे पास ऐसा कोई डेटा नहीं है जिस पर मैं इसे तुरंत आज़मा सकूँ, लेकिन अगर ऐसा डेटा मिला तो मैं इसे एक बार टेस्ट करके देखूंगा।