Perakendeciler her Aralık ayında tatil dönemi stoğunu artırır. Her yaz, elektrik şebekeleri klima kaynaklı tepe yükleri için hazırlık yapar. Bu kalıplar her yıl tekrar eder ve eğer bu olguları görmezden gelen bir zaman serisi tahmini kuruyorsanız, doğruluk kaybediyorsunuz demektir.
Mevsimsel Otoregresif Bütünleşik Hareketli Ortalama modelleri (kısaca SARIMA), yaygın olarak kullanılan ARIMA çerçevesini genişleterek düzenli eğilimlerin yanında tekrarlayan mevsimsel kalıpları da yakalar. Bu yazıda SARIMA’nın ne olduğunu, bileşenlerinin nasıl çalıştığını, ARIMA yerine ne zaman tercih edilmesi gerektiğini ve Python’da adım adım nasıl kurulacağını öğreneceksiniz.
SARIMA Nedir?
SARIMA, verilerde hem mevsimsel olmayan hem de mevsimsel kalıpları ele alan bir zaman serisi tahmin modelidir. Doğrudan ARIMA üzerine inşa edilir; dolayısıyla ARIMA ile çalıştıysanız, mekanizmaların çoğunu tanıyacaksınız. Temel fark, SARIMA’nın sabit aralıklarla tekrarlanan davranışları, aylık, üç aylık ya da haftalık döngüler gibi, modellemek için özel olarak tasarlanmış ikinci bir parametre katmanı eklemesidir.
Resmi olarak bir SARIMA modeli SARIMA(p, d, q)(P, D, Q)[S] şeklinde yazılır. İlk parametre grubu (p, d, q) mevsimsel olmayan yapıyı ele alır ve standart ARIMA ile aynıdır. İkinci grup (P, D, Q)[S] ise mevsimsel kalıpları hesaba katar; burada S mevsimsel döngünün uzunluğudur. Yıllık mevsimsellik içeren aylık veriler için S = 12’dir. Üç aylık veriler için S = 4’tür.
SARIMA’nın Temel Bileşenleri
SARIMA’nın yedi parametresi ilk bakışta çok gelebilir. Bunları iki grupta düşünmek işe yarar: tanıdık ARIMA üçlüsü (p, d, q) ve bunların mevsimsel ölçekteki karşılıkları (P, D, Q, S). Her mevsimsel parametre, mevsimsel olmayan ikizinin yaptığının aynısını yapar; yalnızca bitişik zaman adımları yerine mevsimsel aralıklar boyunca uygulanır.
Otoregresif (AR) kısım
AR bileşeni, serinin geçmiş değerlerini kullanarak gelecektekileri tahmin eder. p parametresi kaç gecikmeli değerin dahil edileceğini belirtir. Eğer p = 2 ise, model mevcut değeri tahmin etmek için önceki iki zaman adımını kullanır.
Mevsimsel tarafta P, aynı işi mevsimsel gecikmelerde yapar. P = 1 ve S = 12 ise, model tahmin değişkeni olarak 12 dönem önceki değere, yani geçen yılın aynı ayına bakar. Bu, yıldan yıla kalıpları doğrudan yakalar.
Bütünleşik (I) kısım
d parametresi, eğilimleri kaldırıp seriyi durağan hâle getirmek için serinin kaç kez farkının alınacağını kontrol eder. Fark alma, her gözlemden bir önceki gözlemi çıkarmak demektir ve doğrusal eğilimi giderir. d = 1 ise birinci farklar alınır; d = 2 ise önceden farkı alınmış serinin farkı alınır.
Mevsimsel fark alma aynı şekilde işler ancak mevsimsel gecikmelerde uygulanır. D parametresi kaç mevsimsel fark alınacağını belirtir. D = 1 ve S = 12 iken, her gözlemden 12 dönem önceki değer çıkarılır. d = 1 ve D = 1’in birlikte kullanılması, seride genel bir yukarı yönlü eğilim ve tekrarlayan mevsimsel bir kalıp olduğunda yaygındır.
Hareketli Ortalama (MA) kısım
AR bileşeninin, geçmiş değerlere baktığı durumun aksine, MA bileşeni mevcut gözlem ile geçmiş tahminlerden kalan artık hatalar arasındaki ilişkiyi modeller. q parametresi kaç gecikmeli hata teriminin dahil edileceğini belirler. q = 1 ise, model mevcut tahminini ayarlamak için bir önceki adımdaki tahmin hatasını kullanır.
Mevsimsel karşılık Q aynı mantığı mevsimsel gecikmelerde uygular. Q = 1 ve S = 12 iken, model 12 dönem önceki tahmin hatasını dahil eder. Bu, olağandışı sıcak bir yazın enerji talebini artırması gibi mevsimsel şokların, ertesi yılın aynı döneminde de sürme eğilimi gösterdiği durumlarda önemlidir.
Mevsimsel bileşen (S)
S parametresi mevsimsel döngünün uzunluğunu tanımlar ve üç mevsimsel parametreyi (P, D, Q) birbirine bağlar. S’yi doğru belirlemek kritiktir: veriniz yıllık bir kalıba sahip aylık veri ise S = 12. Yıllık döngüsü olan haftalık veri için S kabaca 52’dir.
Mevsimsellik bazen burada zorlaşır. Bir yıl tam olarak 52 hafta değildir; yaklaşık 52,18’dir. Çoğu pratik amaç için S = 52’ye yuvarlamak yeterlidir. Ancak bazı veri kümeleri birden çok mevsimsel döneme sahiptir: günlük elektrik talebi sıklıkla hem haftalık (S = 7) hem de yıllık (S = 365) bir döngü gösterir. Standart SARIMA bir mevsimsel dönemi ele alır; dolayısıyla birden çok mevsimsellik TBATS veya Facebook Prophet gibi daha gelişmiş yöntemler gerektirir.
S açık değilse, zaman serisi ayrıştırması yardımcı olur. Seriyi eğilim, mevsimsel ve artık bileşenlerine ayırmak, baskın tekrarlayan dönemi görsel olarak ortaya çıkarır. Ayrıca, düzenli gecikmelerdeki sivri uçlar için otokorelasyon grafiklerini inceleyebilirsiniz.
ARIMA ve SARIMA: Fark Nedir?
Muhtemelen şunu zaten düşünüyorsunuz: daha basit ARIMA yerine SARIMA’yı ne zaman gerçekten kullanmalısınız?
Kısa cevap: Verinizde anlamlı bir mevsimsel kalıp yoksa ARIMA’yı, varsa SARIMA’yı kullanın.
ARIMA üç şeyi modeller: serinin kendi içindeki otokorelasyon (AR), durağanlık için gereken fark sayısı (I) ve geçmiş tahmin hatalarının mevcut değere süregelen etkisi (MA). Eğilimleri, döngüleri ve düzensiz gürültüyü iyi ele alır. Yapamadığı şey, sabit bir mevsimsel frekansta tekrarlanan kalıpları modellemektir. Bunlar açıklanamayan varyans olarak kalır.
SARIMA tam da bu yeteneği ekler. Verinizde belirgin mevsimsel zirveler ve dipler olduğunda, düz bir ARIMA modelini uydurmak bu kalıpları artık terimlere iter; bunun sonucu daha kötü tahminler ve beyaz gürültü olmayan artıklar olur. SARIMA modeli bu kalıpları doğrudan yakalar.
Pratik bir kural: Verinizi çizin ve sabit aralıklarla tekrarlayan kalıplar arayın. Tatil satış sıçramaları, kışın enerji artışları, üç aylık kazanç kalıpları gibi tekrarları görüyorsanız SARIMA’yı seçin. Seri düzensizse ya da düzenli bir döngü olmadan eğilim odaklıysa, ARIMA daha basit ve yeterlidir.
Bizim Python’da ARIMA Modelleri kursu, her iki çerçeveyi de ne zaman hangisinin uygulanacağını sezgisel olarak keskinleştirecek uygulamalı alıştırmalarla ele alır.
Python’da SARIMA Modeli Nasıl Kurulur
Bir SARIMA modeli kurmak mantıklı bir sırayı izler: veriyi toplayın, durağanlığı kontrol edin, parametreleri belirleyin, modeli uydurun, tanı koyma adımlarını çalıştırın ve tahmin yapın. Python’un statsmodels kütüphanesini kullanarak her adım pratikte şöyle işler.
Veri toplama
Mevsimselliği yakalayan bir model için, kalıbı en az iki kez, ideal olarak birkaç döngü boyunca gözlemleyebileceğiniz kadar geçmişe ihtiyaç vardır. Aylık perakende satışlar, sıcaklık kayıtları, enerji tüketimi verileri ve yolcu sayıları klasik örneklerdir. Federal Reserve Economic Data (FRED), ABD Nüfus Sayımı Bürosu veya Kaggle gibi herkese açık kaynaklar iyi başlangıç noktalarıdır.
Bu iş akışı için standart öğretim veri kümesi havayolu yolcu sayılarıdır: 1949’dan 1960’a aylık veriler; belirgin bir yukarı eğilim ve güçlü yıllık mevsimsellik içerir. statsmodels üzerinden get_rdataset() ile, Rdatasets koleksiyonundan çekilerek kullanılabilir. Kendi verinize uygulamadan önce bu veri kümesi üzerinde iş akışını öğrenin.
Veri ön işleme
Herhangi bir SARIMA modelini uydurmadan önce, ortalaması ve varyansı zaman içinde değişmeyen, yani durağan bir seriye ihtiyaç vardır. Genişletilmiş Dickey-Fuller (ADF) testi bunu biçimsel olarak kontrol eder: 0,05’in altındaki p-değeri serinin durağan olduğunu düşündürür.
Değilse, fark alma bunu düzeltir. Eğilim için düzenli fark alma (d = 1), mevsimsel durağan olmama için mevsimsel fark alma (D = 1 ve gecikme S) ya da gerekirse her ikisi uygulanır. Bu adımdan önce eksik değerleri ele alın. Satırları silmek zaman yapısını bozduğundan, zaman serisi verisi için ileri doldurma veya enterpolasyon standart yaklaşımlardır.
Model tanımlama
Elinizde durağan bir seri varken, model parametrelerini belirlemek için Otokorelasyon Fonksiyonu (ACF) ve Kısmi Otokorelasyon Fonksiyonu (PACF) grafiklerini kullanırsınız. Şunlara bakın:
- ACF serinin kendi gecikmeleriyle korelasyonunu gösterir. q gecikmesinden sonra keskin bir kesilme MA derecesini düşündürür. Mevsimsel gecikmelerdeki sivri uçlar (aylık veride 12, 24, 36) Q hakkında bilgi verir.
- PACF aradaki gecikme etkileri çıkarılmış kısmi korelasyonları gösterir. p gecikmesinden sonra keskin bir kesilme AR derecesini düşündürür. Mevsimsel sivri uçlar P hakkında bilgi verir.
Pratikte grafikler size aday değerler verir ve birkaç modeli bilgi ölçütleriyle (diagnostics bölümünde daha fazla) karşılaştırırsınız. Aramayı otomatikleştirmek isterseniz, pmdarima paketindeki auto_arima() parametre kombinasyonları üzerinde ızgara araması yapar ve en iyi uyumu seçer.
Parametre kestirimi
Aday parametreleri belirledikten sonra, statsmodels Maksimum Olabilirlik Kestirimi (MLE) kullanarak bunları tahmin eder; gözlenen veriyi model altında en olası kılan katsayı değerlerini bulur. SARIMA kestirimi, hem mevsimsel olmayan hem de mevsimsel bileşenlerin eşzamanlı olarak uydurulması gerektiğinden, düz ARIMA’dan daha hesaplama yoğunudur.
Uydurma süreci bazen küresel optimum yerine yerel bir optimumda yakınsayabilir; sonuçlar tuhaf görünüyorsa birkaç farklı başlangıç değeri veya parametre kombinasyonu denemeye değerdir.
Model uydurma
Havayolu yolcu veri setini kullanarak Python’da bir SARIMA modelinin nasıl uydurulacağı şöyledir:
import pandas as pd
import statsmodels.api as sm
# Load the classic airline dataset
airline_data = sm.datasets.get_rdataset("AirPassengers", "datasets").data
airline_data.index = pd.date_range(start="1949-01", periods=len(airline_data), freq="MS")
passengers = airline_data["value"]
# Fit SARIMA(1,1,1)(1,1,1)[12]
sarima_model = sm.tsa.statespace.SARIMAX(
passengers,
order=(1, 1, 1),
seasonal_order=(1, 1, 1, 12),
enforce_stationarity=False,
enforce_invertibility=False
)
sarima_result = sarima_model.fit(disp=False)
print(sarima_result.summary())
order argümanı mevsimsel olmayan kısım için (p, d, q) alır; seasonal_order ise (P, D, Q, S) alır. enforce_stationarity=False ve enforce_invertibility=False ayarları, optimize edicinin esnekliğini artırır; bu da gerçek dünya verilerinde yakınsamaya sıklıkla yardımcı olur.
Model istatistikleri ve tanı koyma
Uydurduktan sonra, sarima_result.plot_diagnostics() ile yerleşik tanı grafiklerini çalıştırın. Dört şeye bakıyorsunuz:
- Standartlaştırılmış artıklar: Belirgin bir kalıp olmadan beyaz gürültü gibi görünmelidir.
- Artıkların histogramı: Yaklaşık olarak normal olmalıdır.
- Normal Q-Q grafiği: Noktalar diyagonal çizgiye yakın düşmelidir.
- Korrelogram (artıkların ACF’si): Açıklanamayan otokorelasyonu gösterecek anlamlı sivri uçlar olmamalıdır.
Korrelogramdaki mevsimsel gecikmelere özellikle dikkat edin. 12, 24 vb. gecikmelerdeki sivri uçlar mevsimsel bileşenin tam yakalanmadığını gösterir. Alternatif özgünleştirmeleri AIC (Akaike Bilgi Ölçütü) ve BIC (Bayesçi Bilgi Ölçütü) ile karşılaştırın: daha düşük değer daha iyi uyuma işaret eder; BIC karmaşıklığı daha fazla cezalandırır.
Tahminleme
Doğrulanmış bir modelle, tahmin üretmek basittir. Tahmin doğruluğunu dürüstçe görmek için verinizi eğitim ve test olarak bölün:
# Train on first 11 years, test on final year
train = passengers[:"1959"]
test = passengers["1960":]
# Refit on training data and forecast
sarima_train = sm.tsa.statespace.SARIMAX(
train,
order=(1, 1, 1),
seasonal_order=(1, 1, 1, 12),
enforce_stationarity=False, # add this
enforce_invertibility=False # add this
).fit(disp=False)
forecast = sarima_train.get_forecast(steps=12)
forecast_mean = forecast.predicted_mean
conf_int = forecast.conf_int()
get_forecast() yöntemi, daha ileriye doğru tahmin yaptıkça genişleyen güven aralıklarıyla birlikte nokta tahminleri döndürür. Bu genişleme bir kusur değil; model belirsizlik konusunda dürüst davranır. Ayrılan test kümesi üzerinde RMSE (Kök Ortalama Kare Hata) veya MAPE (Ortalama Mutlak Yüzde Hata) ile doğruluğu değerlendirin.
SARIMA’nın Pratik Uygulamaları
Gerçek dünyadaki sinyallerin pek çoğu mevsimseldir; bu yüzden SARIMA her zaman bir zaman serisi araç setinde kalıcı bir yer edinir. Sektörler arası birkaç örnek:
- Perakende: Özellikle talebin öngörülebilir biçimde arttığı ancak yıl bazında büyüklüğü değişen tatil dönemlerinde, envanter planlaması için aylık satış hacimlerinin tahmini.
- Enerji tüketimi: Sıcaklık ve faaliyet kalıplarının yön verdiği hem günlük hem yıllık mevsimsel döngüleri izleyen elektrik ve gaz talebinin tahmini.
- Finans: Mali takvimlerle tekrarlanan üç aylık kazanç ya da işlem hacmi kalıplarının modellenmesi.
- Hava tahmini: Güçlü yıllık döngüler izleyen sıcaklık, yağış ve diğer iklim değişkenlerinin projeksiyonu.
Her durumda, tekrarlayan yapı sinyalin kendisidir ve SARIMA bunu yakalamak için tasarlanmıştır.
SARIMA’nın Sınırlamaları
Bir aracın nerede iyi çalıştığını bilmek resmin yalnızca yarısıdır. SARIMA mevsimsel zaman serileri için sağlam bir temel modeldir; ancak sınırlarını bilmek, modelleri iyi kullananlarla körü körüne kullananları ayırır.
Tam olarak bir mevsimsel dönemi ele alır. Veriniz birden çok mevsimsellik içeriyorsa, üst üste binen günlük, haftalık ve yıllık kalıplar gibi, SARIMA bunların hepsini aynı anda modellemez. TBATS, Prophet veya LSTM ağları gibi yöntemler birden fazla mevsimsel frekansı daha doğal biçimde ele alır.
SARIMA ayrıca doğrusallığı varsayar. Geçmiş değerler, geçmiş hatalar ve gelecekteki gözlemler arasındaki doğrusal ilişkileri modeller. Finansal zaman serileri veya kaotik sistemlerde yaygın olan doğrusal olmayan dinamikler farklı araçlar gerektirir. Ve ARIMA gibi, SARIMA yalnızca serinin kendi geçmişine dayanır. Tahminlerinizi etkileyen harici etkenler varsa, promosyonlar, hava olayları, ekonomik göstergeler gibi, SARIMA çerçevesine dışsal değişkenler ekleyen SARIMAX’a bakın.
Son olarak, parametre seçimi gerçekten zor olabilir. Ayarlanacak yedi parametreyle arama uzayı büyüktür ve uzun serilerde uydurma yavaş olabilir. pmdarima içindeki auto_arima() bunu otomatikleştirmeye yardımcı olur. Ancak parametrelerin gerçekte ne anlama geldiğini anlamanın kısayolu yoktur; bu yüzden herhangi bir koda dokunmadan önce bileşenleri ele aldık.
Sonuç
SARIMA’nın giriş düzeyi tahmin kurslarında yeterince değer görmediğini hep düşünmüşümdür. "Mevsimsel eklentilerle ARIMA" olarak öğretilir; bu da onu küçük bir genişletme gibi gösterir. Öyle değil. Mevsimsel parametreler sonradan iliştirilmiş değildir; ARIMA’nın ulaşamadığı bir davranış katmanını yakalayarak gerçek yapısal bir iş yaparlar.
SARIMA’nın pratikte kavranmasını sağlayan şey, mevsimsel olmayan ve mevsimsel bileşenlerin paralel çalışan ayrı modeller olmadığını fark etmektir. Birbirleriyle etkileşirler. AR ve MA terimleri mevsimsel ikizleriyle birlikte çalışır; her biri farklı bir zaman ölçeğindeki otokorelasyonu ele alır. Bunu kavradığınızda, ACF ve PACF grafiklerini okumak kalıp eşleştirmesi gibi gelmeyi bırakır, verinizi gerçekten anlıyormuşsunuz gibi hissettirir.
Aylık, üç aylık ya da düzenli döngülü herhangi bir veriyle çalışıyorsanız, SARIMA doğru başlangıç noktasıdır; çünkü her zaman nihai cevap olduğu için değil, serinizin yapısı hakkında net düşünmeye zorladığı için. Buradan SARIMAX harici yordayıcılar ekler ve TBATS ya da Prophet gibi yöntemler daha karmaşık çoklu mevsimsellik durumlarını ele alır. Bizim Zaman Serisi Tahminleme Eğitimi ve Python’da ARIMA Modelleri kursumuz iyi birer sonraki adımdır.
SARIMA SSS
SARIMA neyin kısaltmasıdır?
SARIMA, Seasonal AutoRegressive Integrated Moving Average ifadesinin kısaltmasıdır. Zaman serisi verilerindeki aylık veya üç aylık döngüler gibi tekrarlayan kalıpları yakalayan mevsimsel parametreler—(P, D, Q) ve mevsimsel dönem S—ekleyerek standart ARIMA modelini genişletir.
ARIMA ile SARIMA arasındaki fark nedir?
ARIMA mevsimsel olmayan kalıpları modeller: eğilim, otokorelasyon ve hareketli ortalama etkileri. SARIMA, aynı etkileri mevsimsel gecikmelerde modelleyen ikinci bir parametre katmanı (P, D, Q, S) ekler. Veriniz sabit aralıklarla tekrarlayan kalıplar gösteriyorsa—örneğin her Aralık daha yüksek satışlar—SARIMA bunları doğrudan yakalar; ARIMA ise bunları açıklanamayan artık varyans olarak bırakır.
Doğru SARIMA parametrelerini nasıl seçerim?
Serinizin durağan olup olmadığını Genişletilmiş Dickey-Fuller testiyle kontrol ederek başlayın. Ardından ACF ve PACF grafiklerini inceleyin: mevsimsel olmayan AR (p) ve MA (q) dereceleri mevsimsel olmayan gecikmelerdeki kesilme kalıbından, mevsimsel dereceler P ve Q ise mevsimsel gecikmelerdeki sivri uçlardan gelir. Ayrıca, pmdarima paketindeki auto_arima() işlevini kullanarak parametre kombinasyonlarını otomatik olarak aratabilir ve en iyi modeli AIC veya BIC ile seçtirebilirsiniz.
SARIMA modelimde mevsimsel dönem S’yi nasıl belirlerim?
Mevsimsel dönem S, kalıbın ne sıklıkla tekrarlandığını yansıtır. Yıllık mevsimsellik içeren aylık verilerde S = 12’dir. Üç aylık verilerde S = 4’tür. Haftalık verilerde S = 52 (ya da 52,18 yuvarlanarak). Dönem açık değilse, zaman serisi ayrıştırması kullanın veya ACF grafiğinde düzenli aralıklarla oluşan sivri uçları inceleyin—bu sivri uçlar baskın mevsimsel frekansı gösterir.
SARIMA birden fazla mevsimsel dönemi ele alabilir mi?
Standart SARIMA bir seferde bir mevsimsel dönemi ele alır. Veriniz birden fazla katmanlı mevsimsellik içeriyorsa—haftalık ve yıllık döngülere sahip günlük elektrik talebi gibi—aynı anda birden çok örtüşen mevsimsel yapıyı modellemek üzere tasarlanmış TBATS, Facebook Prophet veya LSTM ağları gibi alternatiflere ihtiyacınız olacaktır.
SARIMA modellerini uydurmak için en iyi Python kütüphanesi hangisidir?
Python’da standart tercih statsmodels kütüphanesidir ve dışsal değişken olmadan SARIMA modellerini uydurmaya da yeterince esnek olan SARIMAX() sunar. Otomatik parametre seçimi için, pmdarima kütüphanesindeki auto_arima() işlevi ızgara araması yapar ve nereden başlayacağınızdan emin olmadığınızda iş akışınıza eklemeye değerdir.
SARIMA modelimin iyi uyup uymadığını nasıl değerlendiririm?
Uydurduktan sonra sonuç nesnesinde plot_diagnostics() çalıştırın ve artıkların yapısız bir beyaz gürültü gibi göründüğünü kontrol edin—özellikle ACF’de mevsimsel gecikmelerde sivri uçlar olmamalı. Rakip model özgünleştirmelerini AIC veya BIC ile karşılaştırın (daha düşük daha iyidir). Ayrılmış veride tahmin doğruluğu için en yaygın ölçütler RMSE ve MAPE’tir.
SARIMAX nedir ve SARIMA yerine ne zaman kullanmalıyım?
SARIMAX, SARIMA çerçevesine dışsal değişkenler—harici yordayıcılar—ekler. Serinizi, geçmişinin ötesinde etkileyen ölçülebilir faktörleriniz olduğunda kullanın: promosyon harcamalarının perakende satışları etkilemesi, sıcaklığın enerji talebini etkilemesi veya makroekonomik göstergelerin üç aylık geliri etkilemesi gibi. Elinizde yalnızca serinin kendisi varsa SARIMA yeterlidir; ilgili harici etkenler olduğunda SARIMAX bunları doğrudan modele katmanızı sağlar.
