Pada praktikum sebelumnya, kita sudah belajar mengenali satu peubah melalui ukuran pemusatan, penyebaran, dan berbagai bentuk visualisasi. Sekarang kita lanjut satu langkah lagi.
Dalam analisis data, kita hampir tidak pernah berhenti pada pertanyaan “bagaimana bentuk satu peubah?”. Kita biasanya ingin tahu:
Apakah satu peubah memiliki hubungan dengan peubah lainnya?
Contohnya sederhana. Apakah semakin besar total tagihan restoran, semakin besar pula tip yang diberikan? Apakah jumlah tagihan berbeda menurut hari kunjungan? Apakah pola transaksi berbeda antara kelompok perokok dan non-perokok?
Nah, pertanyaan-pertanyaan seperti itulah yang akan kita jawab pada praktikum hari ini.
Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu:
💡 Ide utama hari ini: sebelum memilih grafik atau ukuran hubungan, tanyakan dulu: “Tipe kedua peubah ini apa?”
Sepanjang praktikum kita menggunakan dataset
tips. Dataset ini berisi informasi
transaksi restoran dan cocok digunakan karena memiliki kombinasi peubah
numerik dan kategorik.
Kita mulai dengan menyiapkan package yang diperlukan.
# Jalankan install.packages() hanya jika package belum pernah diinstal
# install.packages(c("reshape2", "ggplot2", "dplyr", "GGally",
# "corrplot", "vcd", "hexbin", "tidytext",
# "widyr", "tidyr"))
library(reshape2)
library(ggplot2)
library(dplyr)
library(GGally)
library(corrplot)
library(vcd)
library(hexbin)Selanjutnya, panggil dataset dan lihat strukturnya.
## 'data.frame': 244 obs. of 7 variables:
## $ total_bill: num 17 10.3 21 23.7 24.6 ...
## $ tip : num 1.01 1.66 3.5 3.31 3.61 4.71 2 3.12 1.96 3.23 ...
## $ sex : Factor w/ 2 levels "Female","Male": 1 2 2 2 1 2 2 2 2 2 ...
## $ smoker : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ day : Factor w/ 4 levels "Fri","Sat","Sun",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ time : Factor w/ 2 levels "Dinner","Lunch": 1 1 1 1 1 1 1 1 1 1 ...
## $ size : int 2 3 3 2 4 4 2 4 2 2 ...
## total_bill tip sex smoker day time size
## 1 16.99 1.01 Female No Sun Dinner 2
## 2 10.34 1.66 Male No Sun Dinner 3
## 3 21.01 3.50 Male No Sun Dinner 3
## 4 23.68 3.31 Male No Sun Dinner 2
## 5 24.59 3.61 Female No Sun Dinner 4
## 6 25.29 4.71 Male No Sun Dinner 4
Dataset tips memiliki 244 observasi dan
7 peubah.
| Peubah | Tipe | Keterangan |
|---|---|---|
total_bill |
Numerik | Total tagihan restoran |
tip |
Numerik | Tip yang diberikan |
sex |
Kategorik | Jenis kelamin pembayar |
smoker |
Kategorik | Status perokok |
day |
Kategorik | Hari kunjungan |
time |
Kategorik | Waktu makan |
size |
Numerik | Jumlah orang dalam grup |
Sebelum lanjut, perhatikan bahwa kita memiliki tiga kemungkinan dasar:
Masing-masing membutuhkan cara visualisasi yang berbeda.
Kita mulai dari dua peubah yang sama-sama numerik, yaitu
total_bill dan tip.
Untuk pasangan numerik–numerik, yang ingin kita lihat adalah:
Scatter plot adalah visualisasi pertama yang paling mudah digunakan untuk melihat hubungan dua peubah numerik.
ggplot(tips, aes(x = total_bill, y = tip)) +
geom_point(alpha = 0.65, color = "#C85F91") +
labs(
title = "Hubungan Total Tagihan dan Tip",
subtitle = "Setiap titik mewakili satu transaksi",
x = "Total Tagihan (USD)",
y = "Tip (USD)"
) +
theme_minimal()Cara membacanya: lihat arah kumpulan titik. Jika titik-titik cenderung bergerak dari kiri bawah ke kanan atas, hubungan yang terlihat adalah positif.
Interpretasi: pada data ini, semakin besar
total_bill, tip juga cenderung semakin besar.
Namun, titik-titik tidak tepat berada pada satu garis. Artinya, total
tagihan bukan satu-satunya hal yang berkaitan dengan besarnya tip.
Supaya arah pola lebih mudah terlihat, kita dapat menambahkan garis tren.
ggplot(tips, aes(x = total_bill, y = tip)) +
geom_point(alpha = 0.55, color = "#C85F91") +
geom_smooth(method = "lm", se = TRUE, color = "#294B67") +
labs(
title = "Scatter Plot dengan Garis Tren",
x = "Total Tagihan (USD)",
y = "Tip (USD)"
) +
theme_minimal()Garis tersebut membantu kita melihat kecenderungan rata-rata hubungan. Garis yang naik memperkuat dugaan awal bahwa hubungan keduanya positif.
Kalau observasi sangat banyak, scatter plot dapat menjadi terlalu padat karena titik saling menutupi. Salah satu alternatifnya adalah hexbin plot. Hexbin plot adalah visualisasi yang digunakan untuk melihat kepadatan hubungan antara dua peubah numerik dengan mengelompokkan observasi ke dalam area berbentuk heksagon (segi enam).
Setiap heksagon menunjukkan kumpulan observasi yang berada pada area yang sama. Semakin banyak observasi di dalam suatu heksagon, semakin tinggi kepadatan data pada area tersebut.
Hexbin plot biasanya digunakan ketika jumlah observasi cukup banyak sehingga titik-titik pada scatter plot saling bertumpuk dan sulit dibaca.
Sekarang kita gunakan hexbin plot untuk melihat kepadatan hubungan
antara total_bill dan tip.
ggplot(tips, aes(x = total_bill, y = tip)) +
geom_hex(bins = 20) +
scale_fill_viridis_c() +
labs(
title = "Kepadatan Total Tagihan dan Tip",
x = "Total Tagihan (USD)",
y = "Tip (USD)",
fill = "Jumlah\nObservasi"
) +
theme_minimal()Interpretasi: Area berwarna kuning hingga hijau
menunjukkan jumlah observasi yang lebih banyak. Pada grafik terlihat
bahwa sebagian besar transaksi terkonsentrasi pada
total_bill sekitar 10–20 USD dengan tip
sekitar 1,5–3 USD. Sementara itu, kombinasi total_bill dan
tip yang lebih tinggi relatif lebih jarang ditemukan.
Cara lain melihat kepadatan adalah menggunakan contour plot. Contour plot adalah visualisasi yang digunakan untuk melihat pola kepadatan dari dua peubah numerik. Visualisasi ini menggunakan garis-garis kontur untuk menunjukkan area yang memiliki tingkat kepadatan data yang sama.
Sederhananya, contour plot mirip seperti garis ketinggian pada peta. Semakin rapat garis kontur pada suatu area, semakin banyak observasi yang terkumpul di area tersebut.
Contour plot berguna ketika kita ingin melihat di mana data paling banyak terkonsentrasi tanpa hanya mengandalkan titik-titik pada scatter plot.
Sekarang kita coba membuat contour plot untuk melihat pola kepadatan
antara total_bill dan tip.
ggplot(tips, aes(x = total_bill, y = tip)) +
geom_point(alpha = 0.25, color = "#C85F91") +
geom_density_2d(color = "#294B67") +
labs(
title = "Contour Plot Total Tagihan dan Tip",
x = "Total Tagihan (USD)",
y = "Tip (USD)"
) +
theme_minimal()📝 Latihan 1: buat scatter plot antara
sizedantotal_bill. Bandingkan polanya dengan hubungantotal_billdantip. Mana yang menurutmu terlihat lebih jelas?
Sekarang salah satu peubah berupa angka dan satu lagi berupa kategori.
Pertanyaannya berubah. Kita bukan lagi mencari arah “naik atau turun”, tetapi ingin membandingkan distribusi peubah numerik antar kelompok.
Kita gunakan total_bill sebagai peubah numerik dan
day sebagai peubah kategorik.
Boxplot adalah visualisasi yang digunakan untuk melihat dan membandingkan distribusi data numerik pada beberapa kelompok atau kategori.
Melalui boxplot, kita dapat melihat beberapa informasi penting seperti median, rentang tengah data (IQR), penyebaran data, serta kemungkinan adanya outlier.
Pada boxplot, garis di dalam kotak menunjukkan median, kotak menunjukkan 50% bagian tengah data, sedangkan titik yang berada jauh di luar whisker menunjukkan kemungkinan outlier.
Pada contoh berikut, kita akan membandingkan distribusi
total_bill pada setiap day.
ggplot(tips, aes(x = day, y = total_bill, fill = day)) +
geom_boxplot(alpha = 0.8) +
labs(
title = "Sebaran Total Tagihan Menurut Hari",
x = "Hari",
y = "Total Tagihan (USD)"
) +
theme_minimal() +
theme(legend.position = "none")Interpretasi: Dari boxplot terlihat bahwa median
total_bill berbeda antar hari. Sunday
(Sun) memiliki median total tagihan yang relatif paling tinggi,
diikuti oleh Saturday (Sat), sedangkan Friday
(Fri) dan Thursday (Thur) memiliki median yang
lebih rendah.
Penyebaran total_bill pada Saturday dan
Sunday juga terlihat cukup lebar. Selain itu, terdapat beberapa
titik di luar whisker, terutama pada Saturday, Sunday, dan Thursday.
Titik-titik tersebut menunjukkan adanya transaksi dengan total tagihan
yang relatif jauh lebih tinggi dibandingkan sebagian besar transaksi
pada hari yang sama.
Secara keseluruhan, boxplot menunjukkan bahwa distribusi total tagihan tidak sama persis pada setiap hari, baik dari sisi nilai tengah, penyebaran, maupun keberadaan nilai ekstrem.
Violin plot adalah visualisasi yang digunakan untuk melihat bentuk dan kepadatan distribusi data numerik pada beberapa kelompok atau kategori.
Bentuknya menyerupai biola, di mana bagian yang semakin lebar menunjukkan semakin banyak data yang terkonsentrasi pada rentang nilai tersebut, sedangkan bagian yang semakin sempit menunjukkan data yang relatif lebih sedikit.
Violin plot dapat dikombinasikan dengan boxplot sehingga kita dapat melihat bentuk distribusi sekaligus median dan penyebaran data.
Pada contoh berikut, kita akan membandingkan distribusi
total_bill pada setiap day.
ggplot(tips, aes(x = day, y = total_bill, fill = day)) +
geom_violin(trim = FALSE, alpha = 0.75) +
geom_boxplot(width = 0.10, fill = "white") +
labs(
title = "Distribusi Total Tagihan Menurut Hari",
x = "Hari",
y = "Total Tagihan (USD)"
) +
theme_minimal() +
theme(legend.position = "none")Interpretasi: Bagian violin yang lebih lebar
menunjukkan rentang total_bill dengan kepadatan data yang
lebih tinggi. Dari grafik terlihat bahwa pada keempat hari, sebagian
besar transaksi terkonsentrasi pada total_bill sekitar
10–20 USD.
Distribusi pada Saturday (Sat) dan Sunday
(Sun) terlihat lebih menyebar ke nilai total_bill
yang lebih tinggi dibandingkan hari lainnya. Beberapa transaksi pada
kedua hari tersebut bahkan berada pada kisaran 40–50
USD.
Boxplot di bagian tengah membantu menunjukkan posisi median dan
penyebaran utama data. Median total_bill pada
Sunday terlihat relatif lebih tinggi, sedangkan
Friday dan Thursday cenderung memiliki
median yang lebih rendah.
Strip plot merupakan visualisasi yang menampilkan setiap observasi dalam bentuk titik untuk membandingkan sebaran data numerik pada beberapa kelompok atau kategori.
Ketika terdapat beberapa observasi dengan nilai yang sama atau berdekatan, titik-titik dapat saling menutupi. Oleh karena itu, titik dapat digeser sedikit secara horizontal menggunakan teknik jitter, sehingga setiap observasi lebih mudah terlihat.
Dengan demikian, jitter plot membantu kita melihat data mentah sekaligus membandingkan pola sebaran, kepadatan, dan nilai-nilai ekstrem antar kelompok.
Pada contoh berikut, kita akan melihat sebaran
total_bill pada setiap day.
ggplot(tips, aes(x = day, y = total_bill, color = day)) +
geom_jitter(width = 0.18, alpha = 0.65) +
labs(
title = "Data Mentah Total Tagihan Menurut Hari",
x = "Hari",
y = "Total Tagihan (USD)"
) +
theme_minimal() +
theme(legend.position = "none")Interpretasi: Setiap titik menunjukkan satu
transaksi, sedangkan posisi vertikal menunjukkan nilai
total_bill. Titik-titik digeser sedikit secara horizontal
agar observasi dengan nilai yang sama atau berdekatan tidak saling
menutupi.
Dari grafik terlihat bahwa transaksi pada Saturday
(Sat) dan Sunday (Sun) memiliki jumlah
observasi yang lebih banyak dibandingkan Thursday
(Thur) dan Friday (Fri). Nilai
total_bill pada Saturday dan Sunday juga tersebar cukup
luas, bahkan terdapat beberapa transaksi dengan total tagihan mendekati
atau melebihi 50 USD.
Sementara itu, sebagian besar transaksi pada setiap hari tetap
terkonsentrasi pada nilai total_bill yang relatif lebih
rendah. Dengan jitter plot, kita dapat melihat setiap observasi
secara langsung, sehingga pola sebaran dan keberadaan nilai
yang jauh dari mayoritas data lebih mudah dikenali.
📝 Latihan 2: ganti
daydengansmokeratautime, lalu bandingkan distribusitip. Kelompok mana yang terlihat memiliki variasi tip lebih besar?
Jika kedua peubah berbentuk kategori, fokus kita adalah frekuensi, proporsi, dan pola kombinasi antar kategori.
Kita gunakan day dan smoker.
Grouped bar chart adalah visualisasi yang digunakan untuk membandingkan jumlah atau frekuensi dari dua peubah kategorik secara bersamaan.
Pada grafik ini, batang dari setiap kategori ditempatkan berdampingan, sehingga kita dapat membandingkan jumlah observasi antar kelompok dengan lebih mudah.
Pada contoh berikut, kita akan membandingkan jumlah transaksi
berdasarkan day dan smoker.
ggplot(tips, aes(x = day, fill = smoker)) +
geom_bar(position = "dodge") +
labs(
title = "Jumlah Transaksi Menurut Hari dan Status Perokok",
x = "Hari",
y = "Jumlah Transaksi",
fill = "Perokok?"
) +
theme_minimal()Interpretasi: Tinggi batang menunjukkan jumlah transaksi pada masing-masing kelompok. Dari grafik terlihat bahwa pola jumlah transaksi antara kelompok perokok (Yes) dan non-perokok (No) berbeda pada setiap hari.
Pada Friday (Fri), transaksi dari kelompok perokok lebih banyak dibandingkan non-perokok. Pada Saturday (Sat), jumlah transaksi kedua kelompok relatif hampir sama. Sementara itu, pada Sunday (Sun) dan Thursday (Thur), transaksi dari kelompok non-perokok terlihat jauh lebih banyak dibandingkan kelompok perokok.
Secara keseluruhan, grouped bar chart memudahkan kita membandingkan frekuensi dua kategori secara langsung pada setiap kelompok hari.
Proportion bar chart adalah visualisasi yang digunakan untuk membandingkan komposisi atau proporsi kategori pada setiap kelompok.
Berbeda dengan grouped bar chart yang membandingkan jumlah observasi, pada proportion bar chart setiap batang memiliki tinggi yang sama, yaitu 100%. Batang tersebut kemudian dibagi berdasarkan proporsi masing-masing kategori.
Visualisasi ini berguna ketika jumlah observasi pada setiap kelompok berbeda, sehingga perbandingan berdasarkan persentase atau komposisi menjadi lebih informatif daripada hanya membandingkan jumlah.
Pada contoh berikut, kita akan membandingkan proporsi status
smoker pada setiap day.
ggplot(tips, aes(x = day, fill = smoker)) +
geom_bar(position = "fill") +
labs(
title = "Proporsi Status Perokok pada Setiap Hari",
x = "Hari",
y = "Proporsi",
fill = "Perokok?"
) +
scale_y_continuous(labels = scales::percent) +
theme_minimal()Interpretasi: Setiap batang menunjukkan 100%
transaksi pada masing-masing hari, sedangkan warna menunjukkan
proporsi kelompok perokok (Yes) dan non-perokok
(No).
Dari grafik terlihat bahwa pada Friday (Fri), sebagian besar transaksi berasal dari kelompok perokok, yaitu sekitar 80%. Pada Saturday (Sat), proporsi perokok dan non-perokok relatif seimbang.
Sebaliknya, pada Sunday (Sun) dan Thursday (Thur), kelompok non-perokok lebih dominan. Proporsi perokok hanya sekitar 25% pada Sunday dan 28% pada Thursday.
Dengan demikian, grafik ini menunjukkan bahwa komposisi status perokok berbeda pada setiap hari, tanpa dipengaruhi oleh perbedaan jumlah transaksi antar hari.
Mosaic plot adalah visualisasi yang digunakan untuk melihat hubungan atau asosiasi antara dua peubah kategorik.
Pada mosaic plot, setiap kombinasi kategori ditampilkan dalam bentuk kotak, dengan ukuran kotak yang mengikuti banyaknya observasi pada kombinasi tersebut. Semakin besar kotaknya, semakin banyak observasi pada kombinasi kategori tersebut.
Selain ukuran kotak, warna dapat digunakan untuk menunjukkan apakah jumlah observasi pada suatu kombinasi lebih besar atau lebih kecil daripada yang diharapkan apabila kedua peubah tidak memiliki hubungan.
Pada contoh berikut, kita akan melihat hubungan antara
day dan status smoker.
Interpretasi: Ukuran setiap kotak menunjukkan
banyaknya observasi pada kombinasi day dan
smoker. Dari grafik terlihat bahwa pola status perokok
tidak sama pada setiap hari.
Pada Friday (Fri), kelompok perokok
(Yes) terlihat lebih banyak daripada yang diharapkan jika
day dan smoker tidak berasosiasi, sedangkan
kelompok non-perokok (No) lebih sedikit daripada yang
diharapkan. Hal ini ditunjukkan oleh warna biru dan merah pada bagian
Friday.
Sementara itu, kotak pada Saturday, Sunday, dan Thursday sebagian besar berwarna abu-abu, yang menunjukkan bahwa penyimpangannya dari frekuensi yang diharapkan relatif lebih kecil.
Nilai p-value = 1.0568 × 10⁻⁵, yang lebih kecil dari
0,05, memberikan bukti adanya asosiasi yang signifikan secara
statistik antara day dan smoker pada
data ini.
📝 Latihan 3: buat mosaic plot antara
timedanday. Adakah kombinasi hari dan waktu makan yang terlihat jauh lebih dominan?
Data nyata biasanya memiliki banyak peubah. Karena itu, kita juga perlu melihat beberapa hubungan secara bersamaan.
Pairplot adalah visualisasi yang digunakan untuk melihat hubungan antara beberapa peubah sekaligus dalam satu tampilan.
Pairplot menyusun setiap peubah dalam bentuk matriks sehingga kita dapat melihat distribusi masing-masing peubah, hubungan antar pasangan peubah, serta membandingkan pola tersebut berdasarkan kelompok tertentu.
Pada contoh berikut, kita menggunakan peubah total_bill,
tip, dan size, kemudian membedakan observasi
berdasarkan sex.
Cara membaca pairplot:
sex, yaitu
Female dan Male.sex, boxplot
digunakan untuk membandingkan distribusi antar kelompok.Interpretasi: Pairplot menunjukkan bahwa beberapa
peubah numerik pada dataset tips memiliki hubungan positif.
Hubungan antara total_bill dan tip memiliki
korelasi sekitar 0,676, yang menunjukkan bahwa semakin
besar total tagihan, tip cenderung semakin besar.
Hubungan positif juga terlihat antara total_bill dan
size dengan korelasi sekitar 0,598,
sedangkan hubungan antara tip dan size sekitar
0,489.
Ketika data dibedakan berdasarkan sex, arah hubungan
total_bill dan tip tetap positif pada kedua
kelompok. Nilai korelasinya juga relatif berdekatan, yaitu sekitar
0,683 pada Female dan 0,670 pada
Male.
Dengan demikian, pairplot memberikan gambaran awal mengenai banyak hubungan sekaligus sebelum kita memilih pasangan peubah tertentu untuk dianalisis lebih lanjut. ### Correlation Matrix
Correlation matrix atau matriks korelasi adalah tabel yang digunakan untuk melihat arah dan kekuatan hubungan linear antara beberapa peubah numerik secara sekaligus.
Setiap sel pada matriks berisi nilai koefisien korelasi antara dua peubah. Nilainya berada pada rentang -1 sampai 1:
Pada contoh berikut, kita akan melihat korelasi antara
total_bill, tip, dan size.
num_vars <- tips %>%
select(total_bill, tip, size)
corr_matrix <- cor(num_vars)
round(corr_matrix, 3)## total_bill tip size
## total_bill 1.000 0.676 0.598
## tip 0.676 1.000 0.489
## size 0.598 0.489 1.000
Cara membaca matriks: Nilai pada diagonal selalu
1, karena setiap peubah dikorelasikan dengan dirinya
sendiri. Matriks juga bersifat simetris, sehingga korelasi
total_bill dengan tip sama dengan korelasi
tip dengan total_bill.
Dari hasil tersebut, diperoleh korelasi total_bill
dengan tip sebesar 0,676,
total_bill dengan size sebesar
0,598, dan tip dengan size
sebesar 0,489. Seluruh nilai bernilai positif, sehingga
ketiga pasangan peubah menunjukkan arah hubungan linear yang
positif.
Agar pola korelasi lebih mudah dilihat, matriks tersebut selanjutnya
kita tampilkan dalam bentuk visual menggunakan
corrplot().
corrplot(
corr_matrix,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col = "black",
title = "Correlation Matrix",
mar = c(0, 0, 1, 0)
)Interpretasi: Visualisasi menunjukkan bahwa seluruh
pasangan peubah memiliki korelasi positif. Hubungan linear yang paling
kuat di antara pasangan yang ditampilkan terdapat antara
total_bill dan tip dengan nilai korelasi
sekitar 0,68.
Selanjutnya, korelasi antara total_bill dan
size sebesar 0,60, sedangkan
tip dan size memiliki korelasi sekitar
0,49.
Artinya, pada data ini, transaksi dengan total tagihan yang lebih besar cenderung diikuti oleh tip yang lebih besar dan jumlah orang dalam grup yang lebih banyak. Namun, korelasi hanya menunjukkan hubungan atau kecenderungan, bukan hubungan sebab-akibat.
Facet plot adalah visualisasi yang digunakan untuk menampilkan grafik yang sama pada beberapa kelompok atau kategori secara terpisah dalam bentuk panel-panel kecil.
Dengan facet plot, kita dapat melihat apakah pola hubungan antar peubah tetap sama atau berbeda pada setiap kelompok, tanpa mencampurkan seluruh observasi dalam satu grafik.
Pada contoh berikut, hubungan antara total_bill dan
tip akan dipisahkan berdasarkan sex dan
time. Dengan demikian, kita dapat membandingkan pola
hubungan tersebut pada kelompok Female–Dinner, Female–Lunch,
Male–Dinner, dan Male–Lunch.
ggplot(tips, aes(x = total_bill, y = tip)) +
geom_point(alpha = 0.6, color = "#C85F91") +
facet_grid(sex ~ time) +
labs(
title = "Hubungan Total Tagihan dan Tip menurut Kelompok",
x = "Total Tagihan (USD)",
y = "Tip (USD)"
) +
theme_minimal()Interpretasi: Setiap panel menunjukkan hubungan
antara total_bill dan tip pada kombinasi
kelompok sex dan time yang berbeda.
Secara umum, pada keempat kelompok terlihat kecenderungan bahwa
semakin besar total_bill, nilai tip
juga cenderung meningkat. Namun, jumlah observasi dan
penyebaran data pada setiap kelompok berbeda.
Panel Dinner memiliki observasi yang lebih banyak
dan sebaran total_bill yang lebih luas dibandingkan
Lunch, terutama pada kelompok Male. Sementara itu,
observasi pada kelompok Lunch relatif lebih sedikit.
Dengan facet plot, pola hubungan total_bill dan
tip dapat dibandingkan antar kelompok dengan lebih mudah
karena setiap kelompok ditampilkan pada panel yang terpisah.
Parallel coordinates plot adalah visualisasi yang digunakan untuk melihat pola beberapa peubah numerik secara bersamaan.
Pada grafik ini, setiap peubah ditampilkan sebagai sumbu yang sejajar, sedangkan setiap garis mewakili satu observasi. Garis tersebut menghubungkan nilai satu observasi pada seluruh peubah yang ditampilkan.
Karena setiap peubah dapat memiliki satuan dan rentang yang berbeda, nilainya dapat diskalakan terlebih dahulu agar dapat dibandingkan dalam satu grafik.
Pada contoh berikut, kita akan melihat pola total_bill,
tip, dan size, serta membedakan setiap
observasi berdasarkan sex.
tips %>%
select(total_bill, tip, size, sex) %>%
ggparcoord(
columns = 1:3,
groupColumn = "sex",
scale = "uniminmax"
) +
labs(
title = "Parallel Coordinates: total_bill, tip, size"
) +
theme_minimal()Cara membaca: Setiap garis mewakili satu transaksi.
Posisi garis pada masing-masing sumbu menunjukkan nilai relatif
transaksi tersebut untuk total_bill, tip, dan
size. Pada grafik ini, nilai telah diskalakan ke rentang
0–1, sehingga angka pada sumbu bukan lagi nilai asli
dalam USD atau jumlah orang.
Interpretasi: Sebagian besar garis terkonsentrasi
pada bagian bawah hingga tengah grafik. Hal ini menunjukkan bahwa
sebagian besar transaksi memiliki nilai total_bill,
tip, dan size yang relatif rendah hingga
sedang dibandingkan nilai maksimum masing-masing peubah.
Beberapa garis mencapai bagian atas pada total_bill atau
tip, yang menunjukkan adanya transaksi dengan nilai relatif
tinggi. Pada peubah size, garis terlihat terkonsentrasi
pada beberapa tingkat tertentu karena size merupakan jumlah
orang dalam grup dan nilainya bersifat diskret.
Warna membedakan kelompok Female dan Male. Kedua warna terlihat cukup banyak saling tumpang tindih, sehingga dari visualisasi ini belum terlihat pemisahan pola yang sangat jelas antara kedua kelompok.
📝 Latihan 4: dari pairplot, correlation matrix, facet plot, dan parallel coordinates, mana yang menurutmu paling mudah digunakan untuk menjelaskan hubungan
total_bill,tip, dansize? Jelaskan alasannya.
Visualisasi membantu kita melihat pola. Tetapi sekarang kita ingin menjawab pertanyaan yang lebih spesifik:
Seberapa kuat hubungan tersebut, dan ke arah mana hubungannya?
Koefisien korelasi memberi nilai numerik untuk merangkum hubungan antar peubah.
| Kondisi data | Ukuran yang dapat digunakan |
|---|---|
| Dua peubah numerik kontinu dengan hubungan linear | Pearson |
| Data ordinal / hubungan monoton / Pearson kurang sesuai | Spearman |
| Data ordinal dan ingin ukuran berbasis pasangan ranking | Kendall |
⚠️ Ingat: korelasi menunjukkan hubungan/asosiasi. Korelasi tidak otomatis berarti sebab-akibat.
Pearson mengukur arah dan keeratan hubungan linear antara dua peubah numerik.
Nilainya berada pada rentang -1 sampai 1:
Kita hitung hubungan total_bill dan
tip.
##
## Pearson's product-moment correlation
##
## data: tips$total_bill and tips$tip
## t = 14.26, df = 242, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.6011647 0.7386372
## sample estimates:
## cor
## 0.6757341
Fokus pada dua bagian output:
cor → besar dan arah koefisien
korelasi;p-value → bukti statistik terhadap
hipotesis tidak adanya korelasi linear pada populasi.Pada data ini, nilai korelasi sekitar 0,676,
sehingga total_bill dan tip menunjukkan
hubungan linear positif. Nilai p-value yang
sangat kecil menunjukkan bahwa hubungan linear tersebut signifikan
secara statistik pada taraf 5%.
🗣️ Kalimat siap pakai: “Terdapat hubungan linear positif antara total tagihan dan tip. Artinya, transaksi dengan total tagihan yang lebih tinggi cenderung diikuti tip yang lebih tinggi.”
Sebelum menggunakan Pearson, jangan hanya melihat p-value. Perhatikan juga:
Scatter plot yang kita buat di awal membantu memeriksa hal-hal tersebut.
Korelasi Spearman adalah ukuran yang digunakan untuk melihat arah dan kekuatan hubungan monoton antara dua peubah berdasarkan peringkat (rank) data.
Berbeda dengan Pearson yang berfokus pada hubungan linear, Spearman tidak mengharuskan hubungan antar peubah membentuk garis lurus. Spearman dapat digunakan ketika data berbentuk ordinal/peringkat, hubungan bersifat monoton, atau ketika asumsi Pearson kurang sesuai.
Hubungan monoton berarti ketika nilai satu peubah meningkat, peubah lainnya cenderung terus meningkat atau terus menurun, meskipun pola hubungannya tidak harus membentuk garis lurus.
Koefisien Spearman dilambangkan dengan rho (ρ) dan memiliki nilai antara -1 sampai 1.
##
## Spearman's rank correlation rho
##
## data: tips$total_bill and tips$tip
## S = 777247, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.6789681
Cara membaca output: Perhatikan nilai
rho sebagai koefisien korelasi Spearman dan
p-value untuk melihat signifikansi statistik hubungan.
Interpretasi: Hasil analisis menunjukkan nilai korelasi Spearman (rho) sebesar 0,679 dengan p-value < 2,2 × 10⁻¹⁶.
Nilai rho yang positif menunjukkan bahwa total_bill dan
tip memiliki hubungan monoton positif.
Artinya, semakin tinggi total_bill, tip juga
cenderung semakin tinggi berdasarkan urutan atau peringkat datanya.
Karena p-value < 0,05, terdapat bukti statistik
bahwa hubungan monoton antara total_bill dan
tip signifikan.
💡 Bedanya: Pearson fokus pada hubungan linear, sedangkan Spearman melihat apakah ketika satu peubah meningkat, peubah lain cenderung ikut meningkat atau menurun secara monoton.
Korelasi Kendall adalah ukuran korelasi berbasis peringkat (rank) yang digunakan untuk melihat arah dan kekuatan hubungan antara dua peubah.
Kendall bekerja dengan membandingkan pasangan-pasangan observasi. Secara sederhana, dua observasi disebut:
Semakin banyak pasangan yang concordant, hubungan cenderung positif. Sebaliknya, semakin banyak pasangan yang discordant, hubungan cenderung negatif.
Koefisien korelasi Kendall dilambangkan dengan tau (τ) dan memiliki nilai antara -1 sampai 1.
##
## Kendall's rank correlation tau
##
## data: tips$total_bill and tips$tip
## z = 11.839, p-value < 2.2e-16
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.517181
Cara membaca output: Perhatikan nilai
tau sebagai koefisien korelasi Kendall dan
p-value untuk melihat signifikansi statistik hubungan.
Interpretasi: Hasil analisis menunjukkan nilai Kendall’s tau (τ) sebesar 0,517 dengan p-value < 2,2 × 10⁻¹⁶.
Nilai tau yang positif menunjukkan bahwa total_bill dan
tip memiliki hubungan positif berdasarkan urutan
datanya. Artinya, transaksi dengan total_bill yang
lebih tinggi cenderung memiliki tip yang lebih tinggi.
Karena p-value < 0,05, terdapat bukti statistik
bahwa hubungan antara total_bill dan tip
berdasarkan Kendall signifikan.
Hubungan antar peubah tidak hanya dapat dipelajari pada data numerik atau kategorik. Pada data teks, kita juga dapat mengeksplorasi hubungan berdasarkan kata-kata yang muncul bersama dalam suatu dokumen, kalimat, atau unit teks tertentu.
Salah satu pendekatan sederhana yang dapat digunakan adalah co-occurrence analysis atau analisis kemunculan bersama.
Co-occurrence analysis digunakan untuk melihat kata-kata yang sering muncul bersama dalam unit teks yang sama. Semakin sering dua kata muncul bersama, semakin kuat keterkaitan keduanya berdasarkan pola kemunculan dalam data teks tersebut.
Sebagai contoh, jika kata data dan analisis sering muncul dalam kalimat yang sama, kedua kata tersebut akan memiliki nilai co-occurrence yang lebih tinggi.
Pada bagian ini, kita akan mempelajari prosesnya secara sederhana mulai dari menyiapkan data teks → tokenisasi → membentuk pasangan kata → menghitung frekuensi kemunculan bersama → memvisualisasikan hubungan antar kata.
Pertama, kita membuat contoh data sederhana yang terdiri dari tiga
kalimat. Setiap kalimat diberikan id yang berbeda agar kita
dapat mengetahui kata-kata mana yang muncul bersama dalam kalimat yang
sama.
teks_contoh <- data.frame(
id = 1:3,
kalimat = c(
"sains data membantu memahami hubungan antar peubah",
"hubungan antar peubah penting untuk feature engineering",
"feature engineering membantu meningkatkan performa model"
)
)
teks_contoh## id kalimat
## 1 1 sains data membantu memahami hubungan antar peubah
## 2 2 hubungan antar peubah penting untuk feature engineering
## 3 3 feature engineering membantu meningkatkan performa model
Sebelum hubungan antar kata dapat dihitung, teks perlu dipecah menjadi unit yang lebih kecil. Proses ini disebut tokenisasi.
Pada contoh ini, setiap kalimat akan dipecah menjadi kata-kata individual (token). Dengan demikian, satu kalimat yang sebelumnya berada dalam satu baris akan berubah menjadi beberapa baris, dengan satu kata pada setiap baris.
## id word
## 1 1 sains
## 2 1 data
## 3 1 membantu
## 4 1 memahami
## 5 1 hubungan
## 6 1 antar
Setelah teks diubah menjadi token, langkah berikutnya adalah menghitung pasangan kata yang muncul bersama dalam kalimat yang sama.
Fungsi pairwise_count() akan membentuk pasangan antar
kata berdasarkan id kalimat, kemudian menghitung berapa
kali setiap pasangan tersebut muncul bersama.
Pada output yang dihasilkan:
item1 = kata pertama dalam pasangan,item2 = kata kedua dalam pasangan,n = berapa kali kedua kata tersebut muncul bersama
dalam kalimat yang sama.Semakin besar nilai n, semakin sering pasangan kata
tersebut muncul bersama.
## # A tibble: 10 × 3
## item1 item2 n
## <chr> <chr> <dbl>
## 1 antar hubungan 2
## 2 peubah hubungan 2
## 3 hubungan antar 2
## 4 peubah antar 2
## 5 hubungan peubah 2
## 6 antar peubah 2
## 7 engineering feature 2
## 8 feature engineering 2
## 9 data sains 1
## 10 membantu sains 1
Interpretasi: Hasil menunjukkan beberapa pasangan
kata memiliki nilai n = 2, misalnya
antar–hubungan, peubah–hubungan, dan
feature–engineering. Artinya, masing-masing pasangan kata
tersebut ditemukan bersama pada dua kalimat dalam data
contoh.
Sementara itu, pasangan seperti data–sains memiliki
nilai n = 1, yang berarti kedua kata tersebut hanya
ditemukan bersama pada satu kalimat.
Dengan demikian, semakin besar nilai n, semakin sering
dua kata muncul bersama dalam unit teks yang sama. Nilai ini dapat
digunakan sebagai ukuran sederhana untuk mengeksplorasi
keterkaitan berdasarkan kemunculan bersama antar
kata.
Bagian ini hanya pengantar. Analisis teks yang lebih lanjut dapat dikembangkan menjadi network kata atau pendekatan NLP lainnya.
Sampai di sini, alur berpikir kita sebenarnya sederhana:
1. Kenali tipe peubah → 2. Pilih visualisasi → 3. Lihat pola → 4. Jika sesuai, ukur hubungan → 5. Interpretasikan dalam konteks.
| Tipe hubungan | Visualisasi yang dapat digunakan |
|---|---|
| Numerik vs Numerik | Scatter plot, hexbin, contour |
| Numerik vs Kategorik | Boxplot, violin plot, jitter |
| Kategorik vs Kategorik | Grouped bar chart, proportion bar, mosaic |
| Banyak peubah | Pairplot, correlation matrix, facet, parallel coordinates |
Untuk hubungan numerik, korelasi membantu kita mengukur arah dan kekuatan hubungan, tetapi visualisasi tetap penting karena satu angka korelasi tidak menceritakan seluruh bentuk data.
Materi hari ini dapat langsung digunakan ketika kelompok mulai mengeksplorasi dataset hasil scraping.
Urutan yang dapat digunakan:
📝 Pertanyaan penutup: “Dari seluruh grafik hari ini, grafik mana yang paling cocok untuk data proyek kelompok kalian, dan hubungan antar peubah apa yang ingin kalian tunjukkan?”
Materi praktikum ini disusun dengan mengacu pada bahan Praktikum 5 yang membahas eksplorasi hubungan antar peubah secara visual, korelasi Pearson, Spearman, Kendall, serta pengantar hubungan pada data teks.