Zaman Serileri Analizi — 2

Merve Günak
Machine Learning Turkiye
6 min readDec 21, 2021
The Time Machine

Zaman Serileri Tahmin Yöntemleri— ARIMA, SARIMA & Facebook Prophet

Bir önceki bölümde zaman serilerine genel bir giriş yaparak önemli temel kavramlardan bahsettim. Bu bölümde ARIMA ve SARIMA modellerini anlatmaya çalışacağım. Daha sonra Facebook Prophet’e kısa bir giriş yaparak yazıyı sonlandıracağım.

Serinin ilk bölümünü merak edenler için : Zaman Serileri Analizi — 1

Box-Jenkins yöntemine geçmeden önce AR, MA ve ARMA modelleriyle alakalı kısa bir bilgi vermek gerekirse, temelde AR ve MA, doğrusal durağan stokastik ARMA modelinin özel bir halidir ve bu modeller durağan olan zaman serilerinin analizinde kullanılır. Gerçek dünya verileri çoğunlukla durağan değildir. Bu durumda eğer seri (mesela farkı alınarak) durağan hale getirilebiliyorsa, ARIMA gibi yöntemler uygulanabilir.

NOT: Eğer ACF ve PACF’deki anlamlı korelasyonlar birden fazla ise duruma göre ARMA ya da ARIMA modelinin kullanılması daha doğru olacaktır.

ARIMA (AutoRegressive Integrated Moving Average)

Box-Jenkins yöntemlerinden biri olan ARIMA(Otoregresif Entegre Hareketli Ortalama) modeli, zaman serileri analizinde kullanılan istatistiksel analiz yöntemlerinden biridir. Yeteri kadar örneklem varsa kısa dönem tahminlerde başarılı olabilir.

ARIMA terimini üçe ayırabiliriz:

AR(p) : Autoregression/Otoregresif — tahmin denklemindeki değişkenlerin gecikmeleri göstermektedir

I(d): Integrated/Entegre — durağanlığa ulaşmak için fark alma işlemini gerçekleştirdiğimiz sırayı veren fark derecesini göstermektedir

MA(q) : Moving Average/Hareketli Ortalama — tahmin hatalarının gecikmeleri göstermektedir

p : modele dahil edilen gecikmelerin sayısı

d : farklılaşma derecesi

q : hareketli ortalama penceresinin sayısı

Notasyonu şu şekildedir : ARIMA (p,d,q)

Bir ARIMA modeli oluştururken p,q ve d parametrelerini belirlememiz gerekiyor. Peki bu parametreleri neye göre seçeceğiz?

Zaman serisini, farkını alarak durağan hale getirdikten sonra (d=1), p ve q parametrelerini belirlemek için genel kabul görmüş tek bir yöntem olmamakla birlikte otokorelasyon fonksiyonu (ACF) ve kısmi otokorelasyon fonksiyonu (PACF) grafiklerine bakarak, AR ve MA terimlerinin sayısını belirleyebiliriz. Aynı zamanda bu grafiklere bakarak serinin trend ve mevsimsellik içerip içermediği hakkında da yorumlar yapabiliriz.

ACF grafiği, serinin kendisi ile gecikmeleri arasındaki korelasyon katsayılarının bir çubuk grafiğidir. PACF grafiği ise, 2 gecikmeli değer arasındaki gecikmeleri veren ve diğer gecikmelerin önemli olmadığı bir çubuk grafiktir. Genellikle AR terimi için PACF, MA terimi için ACF grafiğine bakılmaktadır. AR ve MA düzeyini belirlerken, güven sınırının dışında kalan otokorelasyon sayısına bakılmaktadır.

Ne demek istediğimi bir örnek üzerinden giderek anlamaya çalışalım:

ACF Grafiği
PACF Grafiği

Yukarıdaki grafikler, günlük frekansta oluşturulan bir zaman serisi verilerinin ACF ve PACF grafiklerini göstermektedir. Serinin durağan olmadığı ilk bakışta gözümüze çarpıyor. İlk dört gecikme güven sınırları dışında olduğu için trend içerdiğini söyleyebiliriz. Ayrıca 7 günde bir gecikmeler zirve yapmış görünüyor.

Bu bilgiler ışığında veri setinin hem trend hem mevsimsellik etkisinde olduğunu söyleyebiliriz.

Serinin durağan olmadığına emin olmak için bir de ADF ve KPSS testleri yapıldığında gelen sonuçlar şu şekildedir :

ADF Statistic: -2.8507122243484138
p-value: 0.051387040622567326
Seri Durağan değil

KPSS Test Statistics: 0.22902758041889848
p-value: 0.01
Seri Durağan değil

Serinin durağan olmadığına ikna olduğumuza göre yolumuza seriyi durağan hale getirerek devam ediyoruz.

Logaritmik dönüşüm, trend ekleme, box-cox dönüşümü gibi farklı durağanlaştırma teknikleri olmakla birlikte biz burada fark alarak durağanlaştırma yöntemini kullanacağız.

Birinci Farkı Alınmış — ACF Grafiği
Birinci Farkı Alınmış —PACF Grafiği

Yukarıdaki grafikler, serinin farkı alındıktan sonra oluşturulan ACF ve PACF grafiklerini göstermektedir. Seri durağan hale gelmiş gibi görünüyor fakat sizin de bir şey dikkatinizi çekmiyor mu?

Dikkat etmemiz noktaya değinmeden önce gelin bir de ADF ve KPSS testi yaparak serinin durağan hale gelip gelmediğinden emin olalım :

ADF Statistic: -11.517895214887874
p-value: 4.1073890331024725e-21
Seri Durağan

KPSS Test Statistics: 0.018849922085689242
p-value: 0.1
Seri Durağan

Tamam seriyi durağan hale getirmeyi başardık. Peki, yukarıdaki grafiklerde hala bazı gecikmelerde bir ilişki olduğu görülmektedir. Bunun sebebi serinin mevsimsellik barındırmasıdır. İlk başta tespit ettiğimiz şekilde, zirveler her 7 günde bir olmaktadır. Yani periyodumuzun 7 olduğunu söyleyebiliriz. Bu bilgi de bizi mevsimsel ARIMA yani SARIMA modelinin serimiz için daha uygun olabileceği bilgisine götürüyor.

DİKKAT! DİKKAT! :)

Serinin birinci farkını alarak yaptığımız durağanlaştırma işlemi seriyi trend etkisinden arındırarak durağan hale gelmesini sağladı. Burda yaptığımız işlem mevsimsel olmayan fark alma işlemidir. Yalnız seri hala mevsimselliğin etkisindedir. Bu durumda kuracağınız ARIMA modeli muhtemelen iyi performans göstermeyecektir.

Peki ne yapabiliriz?

Serinin bir de mevsimsel farkını almamız gerekmektedir. Az önce de bahsettiğim gibi mevsimsellik içeren serilere uygun bir model olan SARIMA modelini kullanabiliriz.

SARIMA (Seasonal AutoRegressive Integrated Moving Average)

Bir diğer Box-Jenkins yöntemi, Mevsimsel eğilimleri modelleyebilmemizi sağlayan SARIMA(Mevsimsel Otoregresif Entegre Hareketli Ortalama) modeli, ARIMA modelinin uyarlanmış bir versiyonudur diyebiliriz.

SARIMA modeli, ARIMA modelindeki mevsimsel olmayan bileşenlere (p,d,q) ek olarak, mevsimsel bileşenlere (P,D,Q,s) sahiptir. Mevsimsel bileşenler sırasıyla; otoregresif sırasını, fark sırasını ve hareketli ortalama sırasını ve periyot sayısını temsil eder.

Notasyonu şu şekildedir : SARIMA (p,d,q) (P,D,Q)s

Bu da temelde modelin mevsimsel hareketleri algılayarak daha iyi öngörü yapmasını sağlıyor.

Mevsimsellikten kurtulmak için ACF grafiğinden daha önce belirlediğimiz periyot sayısını baz alarak serinin mevsimsel farkını alıyoruz:

Mevsimsel Farkı Alınmış — ACF
Mevsimsel Farkı Alınmış —PACF

ACF grafiğinden anlaşılacağı üzere mevsimsellik etkisini ortadan kaldırmayı başardık.

ADF Statistic: -18.372774147759294
p-value: 2.2166111743407356e-30
Seri Durağan

KPSS Test Statistics: 0.010250802628270732
p-value: 0.1
Seri Durağan

Serimizdeki trend ve mevsimsellik etkisini ortadan kaldırarak serinin durağan hale geldiğini tespit ettik. Bu analizler sonucunda bir model yapısı kurmaya çalışalım:

ARIMA ve SARIMA sürecindeki analizlerden yola çıkarak modelimizi oluşturuyoruz: SARIMA (2,1,1) (0,1,1)7

Hem trend hem mevsimsel fark alınarak durağan hale gelen bir seri olduğunu tespit etmiştik( d = 1 ve D = 1). PACF grafiğinde ilk iki gecikmenin önemli olması AR(2) süreci olabileceğini düşündürmektedir. MA terimi için birden fazla gecikme önemli gibi durmaktadır. Burada yaklaşık bir çıkarım yapmak zor olduğu için şimdilik ilk modelimizdeki MA sürecini MA(1) olarak tanımladım. Mevsimsel AR(P) için PACF grafiğine baktığımız zaman ilgili gecikmelerde tekrar eden bir durum söz konusu olduğu için P = 0, Mevsimsel MA(Q) için tek bir gecikme olması Q=1 sürecine karar vermeme neden oldu.

Seçilen parametreleri model sonuçlarındaki anlamlılık düzeylerine göre değiştirebilir veya çıkartabilirsiniz.

Model parametrelerini belirlemenin başka yolları da vardır. Bunlardan biri “grid search” yapmaktır. Kabaca sistemin çalışma mantığı, birtakım istatistiksel testler yaparak modelinize en uyumlu parametreleri döndürmesidir. Bu pratik bir yöntemdir fakat öncesinde gerekli analizlerin yapılarak zaman serisinin çözümlenmesi oldukça faydalı olabilir.

Burada temel mantığı aktarmak adına, ACF-PACF grafiklerini inceleyerek manuel olarak bir parametre seçimi yapmayı göstermek istedim.

Facebook Prophet

Geleneksel zaman serileri analiz yöntemlerini kullanarak başarılı sonuçlar elde etmek uzmanlık gerektirir ve zaman alıcıdır. Özellikle model oluşturma aşamasında parametrelerin seçilmesi ve ayarlanması oldukça zordur. Ve bazen tüm denemelere rağmen tatmin edici sonuçlar elde edilemeyebilir.

Ayrıca “Ben bu alanda bilgi sahibi değilim ya da benim zamanım kısıtlı tüm bu analiz ve çözümlerle vakit kaybetmek istemiyorum ama zaman serileriyle de çalışmak istiyorum” diyebilirsiniz.

Facebook bu noktada, 2017'de, zaman serileri analizi hakkında herkesin rahatlıkla kullanabileceği hızlı, güçlü ve kolay bir şekilde tek değişkenli zaman serisi modellemesi sağlayan, Python ve R’da uygulanabilir, açık kaynak kodlu bir kütüphane olan Prophet’i geliştirdi.

Prophet, trend, mevsimsellik ve tatiller olmak üzere üç ana model bileşene sahiptir:

Prophet Bileşenleri

g(t): parçalı doğrusal veya lojistik büyüme eğrisi

s(t): mevsimsellik

h(t): tatiller

εt: hata terimi

Prophet kabaca, zamanın doğrusal ve doğrusal olmayan fonksiyonlarını otomatik bir şekilde bileşen olarak modele fit etmeye yani uydurmaya çalışır. Prophet, serinin içerisinde bulunan trendleri otomatik olarak bizim için tespit eder. Daha sonra fit edilen modeli kullanarak geleceğe yönelik tahmin işlemleri gerçekleştiririz.

FB Prophet’e özet bir giriş yapmış olduk. Daha sonra uygulamalı olarak anlatmaya devam edeceğim FB Prophet konusunu şimdilik burada bitiriyorum.

Bir sonraki yazımda, Zaman Serileri Analizi — 1 ve bu bölümde anlattıklarımı Python ile pratiğe dökeceğiz. Aynı zamanda FB Prophet konusuna uygulamalı olarak kaldığımız yerden devam etmiş olacağız.

Vakit ayırdığınız için teşekkürler…

Bana her zaman linkedin ve twitter üzerinden ulaşabilirsiniz.

Bilim ve Sanatla Kalın !

--

--

Merve Günak
Machine Learning Turkiye

A data scientist with a strong passion in data engineering, expanding skills in both domains. https://www.linkedin.com/in/merve-gunak