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)
|