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
- https://docs.quandl.com/docs/r-installation#to-make-full-use-of-the-package-set-your-api-key-as-follows
- https://blog.quandl.com/using-quandl-in-r
- https://www.r-graph-gallery.com/318-custom-dygraphs-time-series-example.html
- https://rstudio.github.io/dygraphs/gallery-series-highlighting.html
- Dan Vanderkam, JJ Allaire, Jonathan Owen, Daniel Gromer and Benoit Thieurmel (2018). dygraphs: Interface to ‘Dygraphs’ Interactive
Time Series Charting Library. R package version 1.1.1.6. https://CRAN.R-project.org/package=dygraphs - H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016.
- Raymond McTaggart, Gergely Daroczi and Clement Leung (2021). Quandl: API Wrapper for Quandl.com. R package version 2.11.0.
https://CRAN.R-project.org/package=Quandl - Jeffrey A. Ryan and Joshua M. Ulrich (2020). xts: eXtensible Time Series. R package version 0.12.1.
https://CRAN.R-project.org/package=xts - Matt Dowle and Arun Srinivasan (2021). data.table: Extension of
data.frame
. R package version 1.14.0.
https://CRAN.R-project.org/package=data.table - C. Sievert. Interactive Web-Based Data Visualization with R, plotly, and shiny. Chapman and Hall/CRC Florida, 2020.
- Quandl Kütüphanesi İle Veri Çekme ve Dinamik Grafik Oluşturma. https://rpubs.com/tevfik1461/vericekme