R’da Quandl Kütüphanesi İle Veri Çekme ve Dinamik Grafik Oluşturma: Extracting Data with Quandl Library and Creating Dynamic Charts in R

Intro

Within the scope of the study, how the data sets are drawn with the Quandl R package, how the metadata is obtained, how dynamic graphics are created especially in the data sets with time series are discussed using dygraphs and plotly packages.

Giriş

Çalışma kapsamında Quandl R paketi ile veri setlerinin nasıl çekildiği, meta verinin nasıl elde edildiği, özellikle zaman serileri bulunan veri setlerinde dinamik grafiklerin nasıl oluşturulduğu dygraphs ve plotly paketleri kullanılarak ele alınmıştır.

Quandl R paketi ile premium veri setlerini alabileceğiniz gibi ücretsiz olarak tanımlanmış veri setlerini de alabilirsiniz. Burada bir ücret söz konusu değildir. Bazı veri setlerinin indirilebilmesi için bu pakette ücretli abonelik tanımlanmıştır.Quandl R paketi ücretsizdir. Ancak günde 50’den fazla arama yapmak istiyorsanız, ücretsiz bir Quandl hesabı oluşturmanız ve API anahtarınızı almanız gerekir.Premium veri setlerine ulaşabilmek için de API anahtarının olması gerekir. API anahtarını https://www.quandl.com/login web adresinden kayıt yaptırarak alabilirsiniz.API anahtarını elde ettikten sonra Quandl.api_key(“API anahtarı”) ve Quandl(“FRED/GDP”) veya kombine olarak Quandl(“FRED/GDP”,api_key=”API anahtarı”) şeklinde yazılması gerekir. Buradaki örneğimizde ABD Merkez Bankasının Gayri Safi Milli Hasıla (GDP) verisi çekilmiştir.Fonksiyon içerisinde FRED ise Federal Reserve Economic Data yani Federal Rezerv Ekonomik Verisi’nin kısaltmasıdır. Ücretsiz olarak tanımlanan veri setlerinde bahsedildiği üzere API anahtarına ihtiyaç yoktur.Veri setlerini farklı formatlarda alabilirsiniz. Bunlardan bir kaçı şöyledir:

  • Ham veri: Quandl(“FRED/GDP”, type=”raw”)
  • ts formatı: Quandl(“FRED/GDP”, type=”ts”)
  • xts formatı:Quandl(“FRED/GDP”, type=”xts”)
  • zoo formatı: Quandl(“FRED/GDP”, type=”zoo”)

Yukarıda belirtilen ts, xts ve zoo formatları zaman serisi formatları bilinmektedir.

Eğer veriyi farklı zaman periyodları halinde almak istersek veri setinin yapısına göre saatlik, günlük, haftalık, aylık, çeyrek dönemlik olarak da alabiliriz. Örneğin, Quandl(“FRED/GDP”, type=”ts”, collapse=”annual”) fonksiyonunda ABD GDP verisini yıllık olarak ve ts formatında almış oluruz.

Çalışmada grafikler oluşturulurken veri madenciliği teknikleri kullanarak nasıl grafiklere uygun hale getirildiğini de görmüş olacaksınız.

Yüklenen kütüphaneler

kütüphane<-c("dplyr","tibble","tidyr","ggplot2","ggthemes","readxl", "writexl", "psych", "GGally", "rstatix","RColorBrewer","htmlwidgets","kableExtra","stargazer","readr", "lubridate", "Quandl", "xts", "data.table", "dygraphs", "quantmod", "plotly")
yükle<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE)
 
#Kütüphane yüklenme durumunu gösteren tablo
 
tablo=suppressWarnings(yükle, classes = "warning")
   
isim=names(tablo)
   
deger=as_tibble(tablo)
   
data.frame(Sıra=1:length(isim), Kütüphane=isim, Durumu=deger$value) %>% 
mutate(Durumu=if_else(Durumu==TRUE, "Yüklendi", "Paket Kurulumu Gerekli")) %>% 
kable(caption = "Yüklenen Kütüphaneler")%>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = F, html_font="calibri")

Veri setlerine ulaşma

National Stock Exchange of India Prices (NSE) OIL veri setinden çeyrek dönemlik ve zoo formatında veri elde edilmiştir.

```{r}
Quandl('NSE/OIL', collapse = "quarterly", type = "zoo", limit = 10)%>% 
kable() %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = F, html_font="calibri")
```

Türkiye aramasına göre veri setleri

Burada ilk 6 kayıt verilmiştir.

Quandl.api_key('Api Anahtarı')
Quandl.search(query="Turkey", silent=T) %>% 
select(id, dataset_code, database_code, name,	description)%>%
kable() %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = F, html_font="calibri")

Ekonomik göstergeler veri seti (Global Economic Indicators)’nden bir kesit

Quandl.api_key('Api Anahtarı')
Quandl.datatable('EDIA/ECD')%>% 
as_tibble() %>% 
head() %>% 
kable() %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = F, html_font="calibri")

ABD Milli Hasıla verisi

# veri birleştirme
r=Quandl("FRED/GDPC1") %>% 
as_tibble()%>% mutate(tur=rep("Reel GSMH",298))

g=Quandl("FRED/GDP") %>% 
as_tibble() %>% mutate(tur=rep("GSMH",298))

rp=Quandl("FRED/GDPPOT")%>% 
as_tibble() %>% mutate(tur=rep("Reel Potansiyel GSMH",332))

veri=bind_rows(r,g, rp) %>% rename("Hasıla"=Value, "Tarih"=Date)
veri %>% ggplot(aes(x=Tarih, y=Hasıla, group=tur))+geom_line(aes(colour=tur), size = 1) + theme_igray() + ggtitle("ABD Milli Hasıla ($)")+ xlab("Tarih")+ylab("Milyar $")+scale_x_date(date_breaks = "8 years", date_labels = "%Y" )+
theme(plot.title = element_text(hjust = 0.5))+
labs(color='Türü')+
labs(caption = "Veri kaynağı: FRED")

Dinamik grafik oluşturma 1

Burada dygraph kütüphanesi kullanılarak dinamik grafik oluşturulmuştur. Ancak burada sadece oluşturulan grafiğin resmi verilmiştir. Çalışmanın sonunda html linki paylaşılacaktır.

r=Quandl("FRED/GDPC1") %>% 
as_tibble()%>% mutate(tur=rep("Reel GSMH",298))%>% rename("Hasıla"=Value, "Tarih"=Date)
r1=r[,c(1:2)]
r1$Tarih= as.Date(r1$Tarih)

r2=as.xts(as.data.table(r1))

dygraph(r2, main="ABD GSMH") %>%
  dyOptions(labelsUTC = TRUE, fillGraph=TRUE, fillAlpha=0.2, drawGrid = T, colors="red") %>%
  dyRangeSelector() %>%
  dyAxis("y", label = "Milyar ($)") %>%
  dyCrosshair(direction = "vertical") %>%
  dyHighlight(highlightCircleSize = 8, highlightSeriesBackgroundAlpha = 0.4, hideOnMouseOut = FALSE)  %>%
  dyRoller(rollPeriod = 1)

Dinamik grafik oluşturma 2

Burada dygraph kütüphanesi kullanılarak birden fazla değişken aynı grafik üzerinde gösterilmiştir. Ancak burada sadece oluşturulan grafiğin resmi verilmiştir. Çalışmanın sonunda html linki paylaşılacaktır.

r=Quandl("FRED/GDPC1") %>% 
as_tibble()%>% mutate(tur=rep("Reel GSMH",298))

g=Quandl("FRED/GDP") %>% 
as_tibble() %>% mutate(tur=rep("GSMH",298))

rp=Quandl("FRED/GDPPOT")%>% 
as_tibble() %>% mutate(tur=rep("Reel Potansiyel GSMH",332))

veri=bind_rows(r,g, rp) %>% rename("Hasıla"=Value, "Tarih"=Date)


lv=pivot_wider(veri, names_from = tur, values_from = Hasıla)

lv$Tarih= as.Date(lv$Tarih)

lv1=as.xts(as.data.table(lv))

dygraph(lv1, main="ABD GSMH Türleri") %>%
  dyOptions(labelsUTC = TRUE, fillGraph=TRUE, fillAlpha=0.2, drawGrid = T) %>%
  dyRangeSelector() %>%
  dyAxis("y", label = "Milyar ($)") %>%
  dyCrosshair(direction = "vertical") %>%
  dyHighlight(highlightCircleSize = 8, highlightSeriesBackgroundAlpha = 0.4, hideOnMouseOut = FALSE)  %>%
  dyRoller(rollPeriod = 1)

Dinamik grafik oluşturma 3

Burada plotly kütüphanesi kullanılarak birden fazla değişken aynı grafik üzerinde gösterilmiştir. Ancak burada sadece oluşturulan grafiğin resmi verilmiştir. Çalışmanın sonunda html linki paylaşılacaktır.

r=Quandl("FRED/GDPC1") %>% 
as_tibble()%>% mutate(tur=rep("RGSMH",298))

g=Quandl("FRED/GDP") %>% 
as_tibble() %>% mutate(tur=rep("GSMH",298))

rp=Quandl("FRED/GDPPOT")%>% 
as_tibble() %>% mutate(tur=rep("RPGSMH",332))

veri=bind_rows(r,g, rp) %>% rename("Hasıla"=Value, "Tarih"=Date)


lv=pivot_wider(veri, names_from = tur, values_from = Hasıla) #tablonun geniş formata dönüştürülmesi

sekil <- plot_ly(lv, x = ~Tarih, y = ~GSMH, name = 'GSMH', type = 'scatter', mode = 'lines') 
sekil<- sekil %>% add_trace(y = ~RGSMH, name = 'RGSMH', mode = 'lines') 
sekil <- sekil %>% add_trace(y = ~RPGSMH, name = 'RPGSMH', mode = 'lines')%>%
         layout(title = "ABD GSMH Türleri",
         xaxis = list(title = "Tarih"),
         yaxis = list (title = "Hasıla ($)"))

sekil

Dinamik grafik oluşturma 4

Burada plotly kütüphanesi kullanılarak birden fazla değişken aynı grafik üzerinde alan grafiği olarak gösterilmiştir. Ancak burada sadece oluşturulan grafiğin resmi verilmiştir. Çalışmanın sonunda html linki paylaşılacaktır.

r=Quandl("FRED/GDPC1") %>% 
as_tibble()%>% mutate(tur=rep("RGSMH",298))

g=Quandl("FRED/GDP") %>% 
as_tibble() %>% mutate(tur=rep("GSMH",298))

rp=Quandl("FRED/GDPPOT")%>% 
as_tibble() %>% mutate(tur=rep("RPGSMH",332))

veri=bind_rows(r,g, rp) %>% rename("Hasıla"=Value, "Tarih"=Date)


lv=pivot_wider(veri, names_from = tur, values_from = Hasıla)

#alan grafiği
c <- plot_ly(na.omit(lv), x = ~Tarih, y = ~GSMH, type="scatter", mode="markers", fill = "tozeroy", name = 'GSMH')
c <- add_trace(c, x = ~Tarih, y = ~RGSMH, type="scatter", mode="markers", fill = "tozeroy", name = 'RGSMH')
c <- add_trace(c, x = ~Tarih, y = ~RPGSMH, type="scatter", mode="markers", fill = "tonexty", name='RPGSMH')%>%
         layout(title = "ABD GSMH Türleri",
         xaxis = list(title = "Tarih"),
         yaxis = list (title = "Milyar $"))
c

Dünya Bankası metaveri

data <- Quandl.datatable("WB/METADATA")
data %>% head(10) %>% kable() %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = F, html_font="calibri")

Dünya Bankası (DB) veri seti

Burada DB veri setinden TX.VAL.TRVL.ZS.WT değişkeninden orta yüksek gelirli ülkelerde hizmet ihracatının payı (%) grafikle verilmiştir.

options(scipen=999)
veri=Quandl.datatable('WB/DATA') %>% 
as_tibble() %>% filter(country_name=="Upper middle income")%>%
filter(series_id=="TX.VAL.TRVL.ZS.WT")%>%select(year, value) 
veri %>%  
ggplot(aes(x=year, y=value))+ geom_line(aes(color="red"), size = 2) + theme_dark() + ggtitle("Orta Yüksek Gelir Grubundaki Ülkelerde Hizmet İhracatının Payı (%)")+ xlab("Yıl")+ylab("%")+
theme(plot.title = element_text(hjust = 0.5))+
theme(legend.position = "none")+
scale_x_continuous(breaks = seq(from = min(veri$year), to = max(veri$year), by = 2))+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+
labs(caption = "Veri kaynağı: Dünya Bankası")

Sonuç

Çalışma kapsamında Quandl R paketi ile veri setlerinin nasıl çekildiği, meta verinin nasıl elde edildiği, özellikle zaman serileri bulunan veri setlerinde dinamik grafiklerin nasıl oluşturulduğu dygraphs, quantmod ve plotly paketleri kullanılarak ele alınmıştır.

Bu çalışma ile ilgili çalışmanın tamamına Quandl Kütüphanesi İle Veri Çekme ve Dinamik Grafik Oluşturma adlı çalışmamın olduğu  https://rpubs.com/tevfik1461/vericekme  linkinden ulaşabilir, dinamik grafikleri burada görebilirsiniz.

Faydalı olması ve farkındalık oluşturması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla…

Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.

Note: It can not be cited or copied without referencing.

Kaynaklar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s