Giriş
Hava sıcaklığı, hisse senedi fiyatı veya satış rakamları gibi zamanla değişen verilere mutlaka denk gelmişsinizdir. Bunlar zaman serisi verileridir. Zaman Serileri, ister başka faktörlerden ister zamanın kendisinden kaynaklanıyor olsun, zaman içinde değişen verilerden oluşur.
Zaman serisi verilerini analiz etmek zor bir görev olabilir. Örneğin, anormallikleri tespit etmek veya hatta mevsimsel trendleri aylara veya haftalara göre görmek istemek bizi bazen zorlayabilir. Bunu yapmak istiyorsanız komut dosyası yazmanız ve ayrıca çok sayıda kitaplık kullanmanız gerekir.
Neyse ki bu konuda bize yardımcı olabilecek, R programlama dilinde kullanılan bir kütüphane var. Timetk, zaman serisi verilerini analiz etmek ve görselleştirmek için Matt Dancho ve Davis Vaughan tarafından oluşturulan bir kütüphanedir ve kullanımı kolaydır.
Uygulama
Yükleme ve kütüphaneyi içeri aktarma
Yapmamız gereken ilk şey kütüphaneleri kurmak olacak. Bu durumda, timtk ve tidyverse’i de kuracağız. Bundan sonra kütüphaneyi içe aktarabiliriz.
install.packages("timetk") install.packages("tidyverse")library(tidyverse) library(lubridate) library(timetk)
Veriyi Yükleme
Kitaplıkları yükledikten sonra verileri içe aktaralım. Bu durumda, Bike Sharing Dataset adlı UCI Machine Learning Repository’den alınan verileri kullanacağız. Bu veriler 2011’den 2012’ye kadar tek bir günde bisiklet kullananların sayısı hakkında bilgi içermektedir.
Kütüphane verileri içerdiği indirmenize gerek yoktur. Yine de orijinal verileri kullanmak istiyorsanız, veri kümesine buradan erişebilirsiniz.
Veriyi görmek için aşağıdaki kodu yazalım.
View(bike_sharing_daily)
Yukarıda görebileceğiniz gibi, verilerin içinde birkaç sütun var. Zaman, sıcaklık, nem ve bisiklet kullanıcılarının sayısı ile ilgili bilgiler vardır. Bu durumda, yalnızca her biri tarihi ve bisiklet kullanıcılarının sayısını temsil eden dteday ve cnt sütunlarını kullanırız.
# Veriye erişme
bike_sharing <- bike_sharing_daily %>%
# Sütunlara erişme
select(dteday, cnt) %>%
# Sütun isimlerini değiştirme
set_names(c(“date”, “value”))bike_sharing
Zaman Serisi Görselleştirme
Verileri aldıktan sonra görselleştirmeye geçelim. Zaman serisini görselleştirmek için, timk kitaplığından plot_time_series fonksiyonunu kullanabiliriz.
bike_sharing %>%
plot_time_series(date, value)
Yukarıda görebileceğiniz gibi fonksiyon etkileşimli bir görselleştirme getiriyor. Bu görselleştirme Plotly adlı bir kitaplığa dayanarak geliştirilmiştir. Bu nedenle veri noktasını almak için fareyle üzerine gelebilir ve görselleştirmenin ayrıntılarını görmek için yakınlaştırabilirsiniz.
.Plotly_slider parametresini true olarak ekleyerek veri gözlemini filtrelemek için bir kaydırıcı da ekleyebilirsiniz.
bike_sharing %>%
plot_time_series(date, value, .interactive=TRUE, .plotly_slider=TRUE)
Yalnızca statik görselleştirmeyi istiyorsanız, .interactive parametresini false olarak ayarlayabilirsiniz.
Tıpkı diğer görselleştirmelerde olduğu gibi, timetk kütüphanesiyle de gruplama görselleştirmesi yapabilirsiniz. Gördüğünüz gibi veriler 2011 ve 2012 arasında değişmektedir. Şimdi görselleştirmeyi gerçekleştiği yıla göre gruplayacağız.
bike_sharing %>%
group_by(year(date)) %>%
plot_time_series(date, value, .facet_scales=”free”)
Görselleştirmeyi daha dikkat çekici hale getirmek amacıyla verileri oluştuğu aya göre renklendirmek için .color_var parametresini ekleyebiliriz. Ayrıca .smooth parametresini false olarak ayarlayarak düz mavi çizgiyi kaldırabilirsiniz.
bike_sharing %>%
group_by(year(date)) %>%
plot_time_series(date, value, .facet_scales=”free”, .smooth=FALSE .color_var=month(date), .interactive=FALSE)
Bunun yanı sıra, zaman serilerini saat, gün, hafta ve hatta ay olarak mevsimselliğine göre de görselleştirebiliriz. Plot_seasonal_diagnostics fonksiyonunu kullanarak hepsini elde edebilirsiniz.
bike_sharing %>%
group_by(year(date)) %>%
plot_seasonal_diagnostics(date, value, .x_lab=’Date’, .y_lab=’# of users’, .title=’Bike Sharing Users’)
Anormallik Tespiti
Anormali tespiti alışılmadık değeri olan verileri bulma görevidir. Diğer bir deyişle diğer verilerden farklı olanı bulma işidir.
Timetk’te anormallik tespiti için iki şey yapabiliriz. Yapabileceğiniz ilk şey verilerdeki anormallikleri görselleştirmektir. Bu durumda zaman serilerini ve anormallikleri görselleştireceğiz. Plot_anomaly_diagnostics fonksiyonunu zaman serilerini ve anormallikleri görselleştirmek ve bunları yıllara göre ayırmak için kullanabiliriz.
# Veriyi alma
bike_sharing %>%
# Veriyi yıla göre gruplama
group_by(year(date)) %>%
# Sonucu görselleştirme
plot_anomaly_diagnostics(date, value)
Yapabileceğiniz ikinci şey anormalliği olan verileri toplamaktır. Verileri yıllara göre gruplandıracağız. Ayrıca verileri yalnızca kendisinde anormallik olan verileri içerecek şekilde filtreleyeceğiz. Anormallikleri toplamak için tk_anomaly_diagnostics fonksiyonunu kullanabiliriz.
anomaly_data <- bike_sharing %>%
group_by(year(date)) %>%
tk_anomaly_diagnostics(date, value) %>%
filter(anomaly == ‘Yes’)View(anomaly_data)
Artık zaman serisi analizi için R’de timetk’i nasıl kullanacağınızı öğrendiğinize göre zaman serisi verilerini eskisinden daha kolay analiz edebilirsiniz.