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 ile ABD Enerji İdaresinden veri alma ve Türkiye Doğalgaz tüketim projeksiyonu

Barış Sanlı, www.barissanli.com , barissanli2@gmail.com

Komutlar:

library(EIAdata)

library(forecast)

library(zoo)

dogalgaz_tuketimi=getEIA(ID = "INTL.26-2-TUR-MTOE.A", key = key)

fit<-ets(dogalgaz_tuketimi)

sonuc<-forecast(fit,h=10, level=c(50,75,80,90))

plot(sonuc)

Giriş

ABD Enerji Bilgi Dairesi (Energy Information Administration) alanında en fazla veriyi ücretsiz paylaşan enerji kurumu. Sadece bir anahtar ("karakter dizini") alıyorsunuz ve hangi veriyi isterseniz, tek satır komut ile alabiliyorsunuz....

EIA verilerini diğer veritabanları ile birleştirerek bir çok analiz çalışması yapılabiliyor. Mesela EIA'dan fiyatları, TCMB'den kurları alıp birleştirerek fiyat analizleri yapılabilir.

Ama öncelikle EIA'dan veri alma ve buna dayalı basit projeksiyon denemesi ile başlayalım

EIA'dan Anahtar Almak

Anahtar denilen şey bir dizi karakter, tüm istemleri o karakter dizisi ile yapıyoruz. Bunun için öncelikle google'da "EIA API key" aratıp, ilgili sayfaya gidiyoruz:

https://www.eia.gov/opendata/register.php

Karşımıza çıkan kayıt formuna email ve duygu düşüncelerimizi yazıp, kutuları tıklayarak formu gönderiyoruz. Formu doldurunca bir email gelecek.

 

 

Gelen mail içeriğinde aşağıdaki görüntünün altında bir anahtar var.

Bu anahtar 32 karakter 16lık düzende karakterlerden oluşuyor. Bu anahtar şimdilik "XXXXXXXXXXXXXX" olsun.

EIAdata paketini kurmak

EIA verisetine erişmek için bir paket kurmaya gerek yok. Tek satır kodlarla da bu verilere erişilebilir. Fakat EIAdata kütüphanesi fena değil. Bu sebeple ben o kütüphaneyi kullanıyorum.

Söz konusu kütüphaneyi kurmak için bir sefere mahsus "install.packages("EIAdata")" yazmanız yeterli, kütüphane hızla kurulacaktır.

 

Kütüphaneyi kullanmak

EIA'dan veri çekmek aşağıdaki kadar kolay: Kütüphaneyi kullan, anahtarı yükle, veri kodunu ve anahtarı "getEIA" komutuna vererek veriyi çek.

Peki INTL.26-2-TUR-MTOE.A'nın Türkiye'nin doğalgaz tüketimine işaret ettiğini nereden biliyorum?

Veriyi Bulmak

Bunun için bir veri arama adresi var. Bu adreste sağ taraftaki arama hücresine istediğiniz ülkeleri ve konu başlıklarını yazarak ülkelerin veri setlerine ulaşabilirsiniz.

https://www.eia.gov/opendata/qb.php

Mesela burada "turkey natural gas" yazarak gelen sonuçlardan "dry natural gas consumption"'ı MTOE olarak seçebilirsiniz.

 

Birim olarak MTOE yani million tonnes of oil equivalent bir ortak enerji birimidir. Genelde ülkelerin yıl sonu enerji bilanço/denge tablolarında tüm kaynakların (petrol, kömür, gaz) dengelerinin tek bir birime indirgenebilmesini sağlar. Türkçesi mtep, yani milyon ton petrol eşdeğer

Doğalgaz da 1 mtoe 1,11 bcm'e yani 1.11 milyar m3 doğalgaza denk.

Sonuç ekranında görüldüğü gibi, veri setine nasıl erişileceği serinin adı veya kodu da var.

 

İkinci Yöntem

Bir diğer yöntem de, EIA'da sayfanın en üstündeki menüden "Geography"'den International'ı seçin, daha sonra gelen ekranda da Turkey'i aratarak Türkiye ile ilgili tüm verilere ulaşabileceğiniz bir siteye erişeceksiniz.

https://www.eia.gov/beta/international/country.cfm?iso=TUR

Burada alt tüketim kalemlerini seçtikçe orada kodları da "API" sekmesinden görebilirsiniz.

Genelde veriler:

Ana veri seti : INTL (uluslararası)

Alt kalem : 26 (kuru doğalgaz)

Operasyon tipi : 2 (tüketim, 1: üretim, 3: ithalat, 4: ihracat)

Ülke : TUR (ISO 3 kodlu ülke harfi)

Birim : MTOE (bcf vs de var)

A: hiçbir fikrim yok

INTL.26-2-TUR-MTOE.A uluslararası verisetindeki, doğalgaz tüketiminin Türkiye için olanın MTOE birimine işaret edecektir.

Veri Alıp – Görme ve Grafiklemek

Şimdi basitçe veri alıp, veri setinin başını "head" komutu ile inceleyerek, grafiğini çizelim.

Yukarıdaki kodda, EIAdata kütüphanesi sonrası, anahtarımızı tanıtıyor, dogalgaz_tuketimi isimli değişkene Türkiye'nin doğalgaz tüketim kodunu ekleyerek veriyi alıyoruz. Sonra "head" komutu ile başına bakıyoruz. "plot" ile de grafiğini çiziyoruz.

Görüldüğü üzere bu kadar basit. Fakat EIA verileri biraz arkadan geldiğinden son veri 31 Aralık 2014 tarihli 2014 yılı tüketimi ve birim mtoe.

1 mtoe = 1.11 bcm(milyar m3 doğal gaz) olduğundan şimdi verimizi bcm'e çevirelim

 

Yeni grafiğimiz artık 2014 sonu tüketimi bcm olarak gösteriyor.

 

Veriler üzerinden bir projeksiyon

Projeksiyon için öncelikle

           install.packages("forecast")

ile forecast paketini yükleyelim.

Yapacağımız projeksiyon en basitinden bir üssel düzgünleştirme olacak bunun için ets komutunu kullanacağız.

Yalnız forecast paketinde, tarih konusunda sorun yaşadığımdan, verisetini sisteme tanıtırken, veri setinin tarihini de sisteme belirtiyorum ki grafik ve sonuçlarda yıllar gözüksün:

           dogalgaz_tuketimi<-zoo(dogalgaz_tuketimi, 1980:2014)

Bir defa ets ile modeli belirledikten sonra forecast komutuna h=10 girerek 10 adım ileriye de modeli ilerletmesini istiyoruz

 

2014 yılını baz aldığımızda 2018'e kadar %80 ihtimalle doğalgaz talebi 41 bcm'den yukarıda ("Lo 80") ve yine %80 ihtimalle 71 bcm'in altında olacak, 2017 tahmini de 54 bcm...

Bir de grafiğini görelim.

Bu grafiğe "Fan" diyagramı deniliyor yanılmıyorsam. Görüldüğü üzere tahminin genel bir olasılık dairesi ile yansımasını yapıyor.

Burada görülen %80 ve %95 olasılık bulutları ama bunları istersek, %50, %75, %80, %90 olarak değiştirebiliriz. Bunun için forecast komutuna level parametresi ile bu olasılıkları vermemiz yeterli ("level=c(50,75,80,90)

           sonuc<-forecast(fit,h=10, level=c(50,75,80,90))

Ve nihai grafiğimiz şu şekilde olur.

 

 

Veri düzeltme ve Güncelleme

Her ne kadar EIA verileri geniş olsa da güncellik sorunu olabiliyor. Bu sebeple ben veri setini enerjiatlasi sitesindeki verilerle güncelleyeceğim. 2014 rakamı çok yukarıda, 2015, 2016 ve 2017(tahmini) rakamlarını ekleyeceğim

Veri setimde 35 veri olduğunu görünce, en sondaki 2014 sonu verisini

           dogalgaz_tuketimi[35,1]<-48.7

ile 48.7 bcm'e eşitliyorum. Sonra enerji atlasından aldığım 2015, 2016, 2017(tahmini) verilerini giriyorum. Son olarak "tail" komutu ile de veri setimin son kısmına bakıyorum.

Şimdi tüm forecast'i tekrar yapacağız.

Son kısımda forecast'te bu sefer %50, %80 ve %90 ihtimalli sonuçları istedik. "sonuc" yazarak da sonucları gördük

 

Grafiği de şu şekilde oluşacaktır.

           plot(sonuc)

 

Sonuç

Bu derste ABD enerji bilgi dairesi EIA'dan veri çekmeyi, bu veri üzerinden bir üstel düzgünleştirme ile projeksiyon yapmayı, veri düzeltmeyi ve projeksiyonlarda olasılık arası ayarlamayı gördük.

Bir sonraki derste birden çok veritabanı ile işlemleri deneyeceğiz

Öneri ve yorumlarınız için : barissanli2@gmail.com

Kod:

 

# install.packages("EIAdata")

# install.packages("forecast")

 

library(EIAdata)

library(forecast)

library(zoo)

 

# Aşağıdaki anahtar yerine kendi anahtarınızı yazınız.

key<-"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

 

# INTL.26-1-TUR-MTOE.A natural gas MTOE production

# INTL.26-2-TUR-MTOE.A consumption

# INTL.26-3-TUR-MTOE.A imports

# INTL.26-4-TUR-MTOE.A exports

 

dogalgaz_tuketimi=getEIA(ID = "INTL.26-2-TUR-MTOE.A", key = key)

dogalgaz_tuketimi<-dogalgaz_tuketimi*1.11 # mtoe olarak aldığımız veriyi 1.11 ile çarparak bcm yapalım

 

# model çıktılarında yılların doğru gözükmesi için

# verisetindeki yılları tanımlıyoruz

 

dogalgaz_tuketimi<-zoo(dogalgaz_tuketimi, 1980:2014)

 

# exponential smoothing, üssel düzgünleştirme ile

# modeli otomatik belirleyelim

fit<-ets(dogalgaz_tuketimi)

 

#forecast komutu ile modeli 10 adım ileri götürelim

# ve sonuca bakalım

sonuc<-forecast(fit,h=10, level=c(50,75,80,90))

plot(sonuc, ylim=c(0,80))

 

# veri güncelle

# http://www.enerjiatlasi.com/dogalgaz-tuketimi/ adresinden

length(dogalgaz_tuketimi)

dogalgaz_tuketimi[35,1]<-48.7

dogalgaz_tuketimi<-c(dogalgaz_tuketimi, xts(as.double(48.0),as.Date("2015-12-31")),

  xts(as.double(46.395),as.Date("2016-12-31")),

  xts(as.double(51.8),as.Date("2017-12-31")))

 

dogalgaz_tuketimi<-zoo(dogalgaz_tuketimi, 1980:2017)

fit<-ets(dogalgaz_tuketimi)

sonuc<-forecast(fit,h=10, level=c(50,80,90))

plot(sonuc)