Baslangic
R Studio ve ilk kodlar
Elektrik Talep Analizi - (Histogram)
Elektrik Talep Analizi - (Filtreleme)
Elektrik Talep Analizi - (Verinin Bilesenleri)
Elektrik Talep Analizi - (Programlamaya Giris)
Dogrusal Regresyon ile Elektrik Talebi
Ussel Duzgunlestirme ve STL ile Elektrik Talebi
Elektrik Talebinde Farkli Periyodlar (ARIMA ve TBATS)
2015-2024 - Aylik Dogalgaz Talebi
NOAA'dan gunluk sicaklik verilerine erisim
TCMB(Merkez Bankasi) verilerine erisim
EIA (ABD Eneji Bilgi Dairesi) verilerine erisim
Dunya Bankasi verileri, otomatik modelleme, ggplot2 ve tema
Merkez Bankasi ile EIA verileri birarada: Akaryakit fiyatlari
Enflasyon ve Akaryakit Iliskisini inceleme
R Ders 8 - ARIMA ve TBATS - Çoklu periyodu olan verilerin modellenmesi

R ile Enerji Analizi ┬ľ B├Âl├╝m 8- ARIMA ve TBATS ile Elektrik Talep Tahmini Denemesi

 

├ľzet: Bu b├Âl├╝mde, 6 ve 7nci b├Âl├╝mlerin devam─▒ niteli─činde, ARIMA ve TBATS┬ĺ─▒ inceleyece─čiz. Asl─▒nda ula┼čmak istedi─čimiz nihai nokta, ├žoklu periyodu olan serileri, ├Ârne─čin T├╝rkiye elektrik talebini modelleyebilmek. Bunun i├žin de yaz─▒lm─▒┼č bir makaleden faydalanaca─č─▒z. B├Âylelikle hem hicri, hem miladi hem de haftal─▒k periyotlar─▒ olan bir veri setini, yani elektrik talebini modelleyerek 2015 sonuna kadar modellemeye ├žal─▒┼čaca─č─▒z.

 

Bu B├Âl├╝mdeki Fonksiyonlar

read.csv

ts(veri, start=ba┼člad─▒─č─▒ tarih, frequency= periyodu)

auto.arima(veri seti)

auto.arima(veri seti, stepwise=FALSE, approximation=FALSE)

msts(veri$ortalama_tuketim, seasonal.periods = c(periyod1, periyod2))

tbats(zaman serisi)

 

 

8.0. Veriyi y├╝klemek

Her zamanki gibi veri dosyam─▒z─▒ tekrar y├╝kleyelim.

veri=read.csv("http://www.barissanli.com/calismalar/dersler/r/elektrik-talep.csv", header=TRUE,sep=";",dec=".")

Ortalama t├╝ketim verisini de ot de─či┼čkenine atayal─▒m.

ot=veri$ortalama_tuketim

├×imdi ┬ôveri┬ö yazd─▒─č─▒m─▒z her noktada alt detaylara eri┼čebiliriz. Ders 6┬ĺda oldu─ču gibi forecast paketini bilgisayar─▒n─▒za kurdu─čunuza emin olun. Daha ├Ânce kurmad─▒ysan─▒z:

install.packages(“forecast”)

─░le kurabilirsiniz.

8.1. Zaman Serisini Kurmak

Yedinci b├Âl├╝mde g├Ârd├╝─č├╝m├╝z ┼čekli ile yeniden ┬ôforecast┬ö paketini y├╝kl├╝yoruz. ┬ôts┬ö komutu ile de 365 g├╝nl├╝k periyodu olan ve 2007┬ĺden ba┼člayan zaman serimizi olu┼čturuyoruz.

library("forecast")

ot=veri$ortalama_tuketim

ott=ts(ot, start=2007,frequency=365)

├×imdi zaman serimizi bir kez daha ekrana ├žizelim.

plot(ott)

Haz─▒r isek art─▒k ba┼člayabiliriz.

8.2. ARIMA Modelleri

(Bu b├Âl├╝m i├žin Rob J. Hyndman┬ĺ─▒n kitab─▒ndaki https://www.otexts.org/fpp/8 b├Âl├╝m├╝ne ve ├Âzellikle de https://www.otexts.org/fpp/8/9 ┬ôSeasonal Arima Models┬ö k─▒sm─▒na bak─▒n).

Arima modelleri en pop├╝ler modelleme y├Ântemlerinden biridir. Arima anlatmak ├žok zaman alaca─č─▒ndan, ├Âncelikle kitaplara bakarak biraz bir┼čeyler ├Â─črenmeniz gerekir.

Hyndman┬ĺ─▒n ┬ôforecast┬ö paketinde otomatik┬á bir hesaplama y├Ântemi var. Bu da ┬ôauto.arima┬ö komutu ile gayet kolay olu┼čturulabiliyor. Ben program─▒ birka├ž kez farkl─▒ parametreler ile ├žal─▒┼čt─▒rd─▒ktan sonra farkl─▒ sonu├žlar ald─▒m. Burada belki de en ├Ânemlisi, verinizin frekans─▒n─▒ do─čru belirlemek.

model1<-auto.arima(ott)

plot(forecast(model1,h=100))

 

Ayn─▒ modelde bu sefer 7 g├╝nl├╝k periyodlarla bir veri seti belirlersek ise cevap ├žok daha farkl─▒ oluyor.

ottw=ts(ot,frequency=7)

model1w<-auto.arima(ott)

plot(forecast(model1w,h=100))

 

Hyndman, kitab─▒nda ┬ôauto.arima┬ö ile ilgili olarak, hesap zaman─▒ kazanmak i├žin baz─▒ k─▒sa yollar kulland─▒─č─▒ndan ve bu y├╝zden de otomatik model se├žiminin her zaman en do─črusu olmayaca─č─▒n─▒ s├Âyl├╝yor. Kendi ├Ânerdi─či parametrelerle yukar─▒daki modelleri bir kez daha ├žal─▒┼čt─▒r─▒rsak,

-          365 g├╝nl├╝k periyotlu zaman serisi i├žin:

model2<-auto.arima(ott, stepwise=FALSE, approximation=FALSE)

plot(forecast(model2,h=1000))

 

-          7 g├╝nl├╝k periyod i├žin ise

model2w<-auto.arima(ottw, stepwise=FALSE, approximation=FALSE)

plot(forecast(model2w,h=1000))

 

Peki modellerdeki sorun ne? Asl─▒nda trendleri ve mevsimselli─či ├ž─▒kar─▒rsak model ├žok daha iyi ├žal─▒┼čacakt─▒r. Bu konuya daha fazla girmek yerine, ba┼čka bir soruna e─čilmekte fayda var.

Modelimizi kurarken, modelin frekans─▒n─▒n 7 g├╝n m├╝ 365 g├╝n m├╝ al─▒naca─č─▒ konusunda net fikirler ortaya koyamad─▒k. Ayn─▒ ┼čekilde Arima┬ĺn─▒n teorik altyap─▒s─▒na da giremedi─čimizden bir ├žok ┼čey eksik kald─▒, fakat ┬ôauto.arima┬ö ile otomatik model se├žimini yap─▒p, ┬ôstepwise=FALSE, approximation=FALSE┬ö parametrelerini de ekleyerek en uygun modellerden birini otomatik olarak se├žmeyi g├Ârd├╝k.

 

https://www.otexts.org/sites/default/files/fpp/images/sarima1.png

(link : https://www.otexts.org/fpp/8/9 )

Arima modelinde yukar─▒daki p,d,q ile P,D,Q┬ĺlar─▒ kendiniz de belirtebilirsiniz. ┬ôorder=c(p,d,q)┬ö ve ┬ôseasonal=c(P,D,Q)┬ö, girerek modelinizi hesaplatabilirsiniz.

Sorumuz ┼ču, ┬ôAyn─▒ anda bir ├žok periyodun bir arada oldu─ču veri serilerinde modeller nas─▒l kurulur?┬ö

 

8.2. TBATS  ile Elektrik Talebinde Hem Haftalık Hem Senelik Hem de Hicri Etkileri İncelemek

TBATS modeli, asl─▒nda pek ├žok modelcinin kulland─▒─č─▒ gibi bir ├žok modelin en iyi ├Âzelliklerini bir araya getirerek ├žoklu bir yap─▒ olu┼čturmaktad─▒r. Yard─▒m─▒na bakt─▒─č─▒n─▒zda (http://www.inside-r.org/packages/cran/forecast/docs/tbats) bu yap─▒n─▒n De Livera, Hyndman ve Snyder┬ĺin 2011 y─▒l─▒ndaki

( http://www.tandfonline.com/doi/pdf/10.1198/jasa.2011.tm09771 ) makalesindeki gibi Trigonometrik bir BATS modelidir. BATS ise :

-          Box-Cox d├Ân├╝┼č├╝m├╝

-          ARMA hatalar

-          Trend ve Mevsimsel par├žalardan olu┼čmaktad─▒r.

Hyndman┬ĺ─▒n makalesine bakarsan─▒z daha makalenin ba┼č─▒ndan T├╝rkiye┬ĺnin elektrik talebi ile ilgi ├žekici birka├ž noktaya de─čindi─čini g├Âreceksiniz.

T├╝rkiye┬ĺnin elektrik talebindeki ilgin├žlik ise:

-          Haftal─▒k bir d├Ânemselli─činin

-          Miladi takvime g├Âre bir mevsimselli─činin

-          Ayr─▒ca hicri takvime g├Âre de bir mevsimselli─činin (en d├╝┼č├╝k talepler bayram g├╝nlerinde olur)

oldu─čunu g├Âreceksiniz.

(bak─▒n─▒z: http://robjhyndman.com/papers/complex-seasonality/ )

T├╝rkiye┬ĺnin elektrik talebinde periyod

-          7 , ├ž├╝nk├╝ haftal─▒k

-          354.37 , hicri takvimin periyodu

-          365.25, miladi takvimin periyodu

olmak ├╝zere ├╝├ž d├Ânemsellik vard─▒r.

Peki 3 d├Ânemselli─či bir arada nas─▒l tan─▒mlayaca─č─▒z. Bunun i├žin de ┬ômsts┬ö komutunu kullanaca─č─▒z. (Not: Yukar─▒daki linkteki Hyndman┬ĺ─▒n sitesinde 2000┬ĺden ba┼člayan veri setlerini bulabilirsiniz)

(UYARI: Bazen a┼ča─č─▒daki modeli ├žal─▒┼čt─▒r─▒rken sorun ya┼čay─▒nca, R┬ĺ─▒ tekrar ba┼člat─▒p denemek, veya tekrar ba┼člat─▒p, ┬ôforecast┬ö paketini tekrar y├╝klemek faydal─▒ oldu)

├ľnce veri serimizin periyotlar─▒n─▒ belirtelim, sonra da tbats ile modelimizi olu┼čtural─▒m.

telec <- msts(veri$ortalama_tuketim, start=2007, seasonal.periods = c(7,354.37,365.25))

model3<-tbats(telec)

plot(model3)

Dikkat ederseniz:

-          Season1 ->haftal─▒k

-          Season2 -> hicri

-          Season3 -> miladi (mevsimsel)

D├Ânemleri g├Âstermektedir. Ayn─▒ ┼čekilde level┬ĺa da dikkat ederseniz, daha ├Ânceki ┬ôdecompose┬ö komutundakilere benzedi─čini g├Âreceksiniz.

(Periyodlar i├žin bak─▒n─▒z : http://robjhyndman.com/hyndsight/tscharacteristics/ )

├×imdi de model sonucumuzu 3-5 y─▒l ileri do─čru ├Âteleyelim

plot(forecast(model3,h=1500))

 

Yukar─▒da g├Âr├╝len grafi─čin en g├╝zel ├Âzelli─či, g├╝nl├╝k ortalama t├╝ketimlerin yaz aylar─▒na geldi─či d├Ânemlerde, yaz pikinin etraf─▒nda ramazan─▒n denk gelmesi ile olu┼čan a┼ča─č─▒ y├Ânl├╝ bir darbe y─▒llar ge├žtik├že, yaz pikinin soluna do─čru kaymaktad─▒r.

├×u ana kadar yapt─▒─č─▒m─▒z en ba┼čar─▒l─▒ ┬ôotomatik┬ö model bu olmakla birlikte, hala eksikleri var, mesela kurban ve ramazan bayramlar─▒ndaki minimum t├╝ketimlerin o kadar iyi modellenemedi─čini g├Âr├╝yoruz.

Sonu├ž

Bu b├Âl├╝mde ARIMA┬ĺy─▒ g├Ârd├╝kten sonra, asl─▒nda t├╝m modellerin bir sentezi olan TBATS isimli bir model denedik. Bu konu ile ilgili makalenin web sitesini payla┼čt─▒k. Ayr─▒ca T├╝rkiye elektrik talebinin ilgin├ž bir ├Âzelli─či olan 3 d├Ânemlilik, yani hicri, miladi ve haftal─▒k d├Ânemleri g├Âz ├Ân├╝ne alarak modeli nas─▒l olu┼čturaca─č─▒m─▒z─▒ da g├Âzlemledik.

 

Komutlar

veri=read.csv("http://www.barissanli.com/calismalar/dersler/r/elektrik-talep.csv", header=TRUE,sep=";",dec=".")

 

 

library("forecast")

ot=veri$ortalama_tuketim

ott=ts(ot, start=2007,frequency=365)

ottw=ts(ot,frequency=7)

 

plot(ott)

 

model1<-auto.arima(ott)

plot(forecast(model1,h=100))

 

#┼čimdi haftal─▒k deneyelim

ottw=ts(ot,frequency=7)

model1w<-auto.arima(ott)

plot(forecast(model1w,h=100))

 

 

model2<-auto.arima(ott, stepwise=FALSE, approximation=FALSE)

plot(forecast(model2,h=1000))

 

model2w<-auto.arima(ottw, stepwise=FALSE, approximation=FALSE)

plot(forecast(model2w,h=1000))

 

 

telec <- msts(veri$ortalama_tuketim, start=2007, seasonal.periods = c(7,354.37,365.25))

model3<-tbats(telec)

plot(model3)

 

plot(forecast(model3,h=1500))

 

telec <- msts(veri$puant_tuketim, start=2007, seasonal.periods = c(7,354.37,365.25))

model3<-tbats(telec)

plot(model3)