Eksplorasi dan Visualisasi Data pada R

Author

Alfa Nugraha

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:

  1. Exploratory Data Analysis (EDA)
  2. Feature Engineering
  3. Data Reporting

Pada praktikum kali ini digunakan gugus data pada pustaka nycflights13

library(nycflights13)

Terdapat lima gugus data dalam library ini:

  • airlines
  • airports
  • flights
  • planes
  • weather

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     97254656

Untuk 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