Comprehensive X13-ARIMA-SEATS seasonal adjustment library for Python
Project description
X13 Seasonal Adjustment
A comprehensive Python implementation of the X13-ARIMA-SEATS seasonal adjustment algorithm. This library provides robust tools for detecting and removing seasonal effects from time series data.
Features
- Automatic Seasonality Detection: Advanced statistical tests for seasonality identification
- X13-ARIMA-SEATS Algorithm: International standard seasonal adjustment methodology
- High Performance: Optimized computations using NumPy and SciPy
- Visualization: Comprehensive plotting capabilities with matplotlib
- Flexible API: Suitable for both simple and advanced use cases
- Comprehensive Documentation: Detailed documentation and examples
- Full Test Coverage: Reliable code with 95%+ test coverage
Kurulum
pip install x13-seasonal-adjustment
Geliştirme versiyonu için:
pip install x13-seasonal-adjustment[dev]
Hızlı Başlangıç
import pandas as pd
from x13_seasonal_adjustment import X13SeasonalAdjustment
# Veri yükle
data = pd.read_csv('your_time_series.csv', index_col=0, parse_dates=True)
# X13 modeli oluştur
x13 = X13SeasonalAdjustment()
# Mevsimsellikten arındırma
result = x13.fit_transform(data['value'])
# Sonuçları görüntüle
print("Orijinal Seri:", result.original)
print("Mevsimsellikten Arındırılmış Seri:", result.seasonally_adjusted)
print("Mevsimsel Faktörler:", result.seasonal_factors)
print("Trend:", result.trend)
# Grafik çizimi
result.plot()
Ana Bileşenler
1. X13SeasonalAdjustment (Ana Sınıf)
from x13_seasonal_adjustment import X13SeasonalAdjustment
x13 = X13SeasonalAdjustment(
freq='M', # Veri frekansı (M=Aylık, Q=Çeyreklik)
transform='auto', # Logaritmik dönüşüm ('auto', 'log', 'none')
outlier_detection=True, # Aykırı değer tespiti
trading_day=True, # İş günü etkisi
easter=True, # Paskalya etkisi
arima_order='auto' # ARIMA model sırası
)
2. Mevsimsellik Testleri
from x13_seasonal_adjustment.tests import SeasonalityTests
tests = SeasonalityTests()
result = tests.run_all_tests(data)
print(f"Mevsimsellik var mı? {result.has_seasonality}")
3. ARIMA Modelleme
from x13_seasonal_adjustment.arima import AutoARIMA
arima = AutoARIMA()
model = arima.fit(data)
forecast = model.forecast(steps=12)
Metodoloji
Bu kütüphane, ABD Sayım Bürosu'nun X13-ARIMA-SEATS programının metodolojisini takip eder:
- Ön İşleme: Eksik değer doldurma, aykırı değer tespiti
- Model Seçimi: Otomatik ARIMA model seçimi
- Mevsimsel Dekompozisyon: X11 algoritması ile dekompozisyon
- Kalite Kontrolü: M ve Q istatistikleri ile kalite değerlendirmesi
Örnekler
Temel Kullanım
import numpy as np
import pandas as pd
from x13_seasonal_adjustment import X13SeasonalAdjustment
# Örnek veri oluştur
dates = pd.date_range('2020-01-01', periods=60, freq='M')
trend = np.linspace(100, 200, 60)
seasonal = 10 * np.sin(2 * np.pi * np.arange(60) / 12)
noise = np.random.normal(0, 5, 60)
data = pd.Series(trend + seasonal + noise, index=dates)
# Mevsimsellikten arındır
x13 = X13SeasonalAdjustment()
result = x13.fit_transform(data)
# Sonuçları analiz et
print(f"Mevsimsellik derecesi: {result.seasonality_strength:.3f}")
print(f"Trend gücü: {result.trend_strength:.3f}")
İleri Seviye Kullanım
from x13_seasonal_adjustment import X13SeasonalAdjustment
from x13_seasonal_adjustment.diagnostics import QualityDiagnostics
# Özelleştirilmiş model
x13 = X13SeasonalAdjustment(
transform='log',
outlier_detection=True,
outlier_types=['AO', 'LS', 'TC'], # Aykırı değer tipleri
arima_order=(0, 1, 1), # Manuel ARIMA sırası
seasonal_arima_order=(0, 1, 1), # Mevsimsel ARIMA sırası
)
result = x13.fit_transform(data)
# Kalite diagnostikleri
diagnostics = QualityDiagnostics()
quality_report = diagnostics.evaluate(result)
print(quality_report)
API Referansı
X13SeasonalAdjustment
Parameters:
freq(str): Data frequency ('M', 'Q', 'A')transform(str): Transformation type ('auto', 'log', 'none')outlier_detection(bool): Enable outlier detection?trading_day(bool): Model trading day effects?easter(bool): Model Easter effects?arima_order(tuple or 'auto'): ARIMA model order
Methods:
fit(X): Train the modeltransform(X): Apply seasonal adjustmentfit_transform(X): Train and transformplot_decomposition(): Plot decomposition chart
SeasonalAdjustmentResult
Properties:
original: Original seriesseasonally_adjusted: Seasonally adjusted seriesseasonal_factors: Seasonal factorstrend: Trend componentirregular: Irregular componentseasonality_strength: Seasonality strength (0-1)trend_strength: Trend strength (0-1)
Katkıda Bulunma
Bu projeye katkıda bulunmak istiyorsanız:
- Repository'yi fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Değişikliklerinizi commit edin (
git commit -m 'Add amazing feature') - Branch'inizi push edin (
git push origin feature/amazing-feature) - Pull Request oluşturun
Geliştirme Ortamı
# Repository'yi klonlayın
git clone https://github.com/gardashabbasov/x13-seasonal-adjustment.git
cd x13-seasonal-adjustment
# Geliştirme bağımlılıklarını yükleyin
pip install -e .[dev]
# Testleri çalıştırın
pytest
# Code style kontrolü
black src/ tests/
flake8 src/ tests/
# Type checking
mypy src/
Lisans
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Contact
- Developer: Gardash Abbasov
- Email: gardash.abbasov@gmail.com
- GitHub: @Gardash023
Acknowledgments
- US Census Bureau's X13-ARIMA-SEATS program
- Statsmodels, NumPy, SciPy, Pandas communities
- International econometrics and statistics community
Changelog
See CHANGELOG.md for detailed version history.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file x13_seasonal_adjustment-0.1.3.tar.gz.
File metadata
- Download URL: x13_seasonal_adjustment-0.1.3.tar.gz
- Upload date:
- Size: 54.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9014b36016649ec3f93a4311e91ab90742b2f5a11d4a496e8efc0728fd6d4a8
|
|
| MD5 |
20e9f6b7fa0dc0c4b778cc9d2c52ce83
|
|
| BLAKE2b-256 |
27acaf76dda5baf72d4026a88c97b80d92282a7120a36c94edebb28214936a78
|
File details
Details for the file x13_seasonal_adjustment-0.1.3-py3-none-any.whl.
File metadata
- Download URL: x13_seasonal_adjustment-0.1.3-py3-none-any.whl
- Upload date:
- Size: 42.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36b5f3770777e9296c41d401cdfa8034fee48eebfd34c836c840b3742ee33c5a
|
|
| MD5 |
282e07f5d734a997468bcdd0a2c766d3
|
|
| BLAKE2b-256 |
66acf49d645411b64a0386f73de8ca822b21a8babf300d68f7c608db071781e4
|