library(nycflights13)Eksplorasi dan Visualisasi Data pada R
Pada pertemuan kali ini akan dibahas tentang beberapa library yang menunjang dalam eksplorasi dan visualisasi data. Pustaka pada R ini tidak membutuhkan sintaks yang panjang untuk mengeluarkan suatu grafik.
DataExplorer
Tiga tujuan utama pada library ini:
- Exploratory Data Analysis (EDA)
- Feature Engineering
- Data Reporting
Pada praktikum kali ini digunakan gugus data pada pustaka nycflights13
Terdapat lima gugus data dalam library ini:
airlinesairportsflightsplanesweather
Struktur seluruh data tersebut secara ringkas dapat divisualisasikan dengan cara berikut:
library(DataExplorer)
data_list <- list(airlines, airports, flights, planes, weather)
plot_str(data_list)plot_str(data_list, type = "r")Lakukan merge pada seluruh data secara bersama untuk dapat mengeksplorasi data yang lebih robust.
merge_airlines <- merge(flights, airlines, by='carrier', all.x=T)
merge_planes <- merge(merge_airlines, planes, by='tailnum', all.x=T, suffixes=c('_flights', '_planes'))
merge_airports_origin <- merge(merge_planes, airports, by.x='origin', by.y='faa', all.x=T, suffixes=c('_carrier', '_origin'))
final_data <- merge(merge_airports_origin, airports, by.x='dest', by.y='faa', all.x=T, suffixes=c('_origin', '_dest'))Exploratory Data Analysis (EDA)
EDA adalah proses untuk mengetahui lebih lanjut tentang data yang dimiliki sehingga langkah berikutnya dapat melakukan serangkaian analisis untuk menguji hipotesis. Teknik yang biasanya digunakan adalah visualisasi. Oleh karena itu, seringkali tahapan eksplorasi data tidak lepas dari penyajian data tersebut secara visual.
Dalam mengenal data secara ringkas dapat digunakan perintah berikut:
introduce(final_data)
## rows columns discrete_columns continuous_columns all_missing_columns
## 1 336776 42 16 26 0
## total_missing_values complete_rows total_observations memory_usage
## 1 809170 906 14144592 97254656Untuk visualisasi tabel di atas dapat pula dilakukan dengan cara berikut:
plot_intro(final_data)Dari plot di atas, dapat dilihat beberapa hal:
- 0.3% baris lengkap, artinya dari keseluruhan baris hanya 0.3% tidak sepenuhnya hilang!
- 5.7% amatan hilang, pada 0.3% baris tersebut, hanya 5.7% total amatan tersebut hilang.
Data hilang secara langsung dapat menimpulkan masalah pada tahapan analisis berikutnya. Untuk melihat profil data hilang tersebut secara lebih lanjut, dapat menggunakan sintaks berikut
Data hilang
plot_missing(final_data)Pada grafik di atas, peubah speed memiliki banyak sekali sel yang hilang, dan dapat memberikan informasi yang tidak cukup informatif sehingga dapat dibuang pada dataset yang digunakan saat ini
final_data <- drop_columns(final_data, "speed")Eksplorasi Pola Sebaran Data
Eksplorasi kualitas data
Tahapan ini menjadi bagian penting dalam eksplorasi data untuk mengidentifikasi keberadaan amatan dengan nilai ekstrem, atau dikenal dengan pencilan (outlier).
Cara mendeteksi nilai tersebut salah satunya dapat menggunakan boxplot. Sebagai contoh, untuk memprediksi penundaan kedatangan, boxplot dapat digunakan untuk melihat sebaran semua fitur secara berkelanjutan
Boxplot
boxplot(final_data$seats)Perbandingan antar kelompok
plot_boxplot(final_data[, c("arr_delay", "seats")], by="arr_delay")## Reduce data size for demo purpose
arr_delay_df <- final_data[, c("arr_delay", "month", "day", "hour", "minute", "dep_delay", "distance", "year_planes", "seats")]
## Call boxplot function
plot_boxplot(arr_delay_df, by = "arr_delay")Histogram
Untuk memvisualisasikan sebaran dengan untuk semua fitur kontinu. Histogram juga dapat digunakan untuk mendeteksi amatan berpengaruh (pencilan).
hist(final_data$arr_delay)Perbandingan antar kelompok
plot_histogram(final_data)Density plot
Density plot adalah representasi dari distribusi peubah tipe numerik. Fungsi density peluang dari peubah pada umumnya menggunakan penduga kernel
plot_density(iris, geom_density_args = list("fill" = "black", "alpha" = 0.6), ncol = 2L)Plot tebaran
Alternatif jenis visualisasi lain yaitu plot tebaran (scatterplot)
Hubungan antar peubah
Scatterplot menunjukkan hubungan dua peubah yang memiliki tren hubungan linear.
arr_delay_df2 <- final_data[, c("arr_delay", "dep_time", "dep_delay", "arr_time", "air_time", "distance", "year_planes", "seats")]
plot_scatterplot(arr_delay_df2, by = "arr_delay", sampled_rows = 1000L)Grafik batang
Untuk memvisualisasikan sebaran frekuensi untuk semua fitur diskret:
plot_bar(final_data)## 5 columns ignored with more than 50 categories.
## dest: 105 categories
## tailnum: 4044 categories
## time_hour: 6936 categories
## model: 128 categories
## name: 102 categories