Pada tahap awal, dilakukan pemanggilan package yang diperlukan untuk proses analisis data. Package readxl digunakan untuk membaca dataset yang berasal dari file Excel, sedangkan package ggplot2 digunakan untuk membuat visualisasi data seperti scatter plot dan boxplot yang digunakan dalam analisis bivariate.
library(readxl)
library(ggplot2)
Pada tahap ini dilakukan proses pengimporan dataset dari file Excel ke dalam R. Dataset yang digunakan berada dalam satu file Excel yang terdiri dari empat sheet. Setiap sheet diimpor menggunakan fungsi read_excel() dari package readxl dan disimpan ke dalam objek data yang berbeda, yaitu data1, data2, data3, dan data4. Pemisahan ini bertujuan agar setiap dataset dapat dianalisis secara terpisah pada masing-masing exercise.
data1 <- read_excel("C:/Users/Yanaka Sofia/Downloads/Bivariate analysis dataset.xlsx", sheet = 1)
data2 <- read_excel("C:/Users/Yanaka Sofia/Downloads/Bivariate analysis dataset.xlsx", sheet = 2)
data3 <- read_excel("C:/Users/Yanaka Sofia/Downloads/Bivariate analysis dataset.xlsx", sheet = 3)
data4 <- read_excel("C:/Users/Yanaka Sofia/Downloads/Bivariate analysis dataset.xlsx", sheet = 4)
Fungsi head() digunakan untuk menampilkan beberapa baris pertama dari setiap dataset yang telah diimpor ke dalam R. Tujuan dari penggunaan fungsi ini adalah untuk melihat struktur awal data, seperti nama variabel dan contoh nilai data, sehingga memudahkan dalam memahami isi dataset sebelum dilakukan analisis lebih lanjut.
head(data1)
## # A tibble: 6 × 5
## housing food goods service gender
## <dbl> <dbl> <dbl> <dbl> <chr>
## 1 820 114 183 154 female
## 2 184 74 6 20 female
## 3 921 66 1686 455 female
## 4 488 80 103 115 female
## 5 721 83 176 104 female
## 6 614 55 441 193 female
head(data2)
## # A tibble: 6 × 6
## Country `Age (25-34)` `Age (35-44)` `Age (45-54)` `Age (55-64)` `Age (65-74)`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Canada 22 27 31 34 24
## 2 Israel 9 19 10 14 27
## 3 Japan 22 19 21 31 49
## 4 Austria 29 40 52 53 69
## 5 France 16 25 36 47 56
## 6 Germany 28 35 41 49 52
head(data3)
## # A tibble: 6 × 7
## Population Income Illiteracy Life.Expectancy Homicide Graduates Freezing
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 3615 3624 2.1 69.0 15.1 41.3 20
## 2 21198 5114 1.1 71.7 10.3 62.6 20
## 3 2861 4628 0.5 72.6 2.3 59 140
## 4 2341 3098 2.4 68.1 12.5 41 50
## 5 812 4281 0.7 71.2 3.3 57.6 174
## 6 10735 4561 0.8 70.8 7.4 53.2 124
head(data4)
## # A tibble: 6 × 6
## Length Left Right Bottom Top Diagonal
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 215. 131 131. 9 9.7 141
## 2 215. 130. 130. 8.1 9.5 142.
## 3 215. 130. 130. 8.7 9.6 142.
## 4 215. 130. 130. 7.5 10.4 142
## 5 215 130. 130. 10.4 7.7 142.
## 6 216. 131. 130. 9 10.1 141.
Output yang dihasilkan menampilkan enam baris pertama dari masing-masing dataset, yaitu data1, data2, data3, dan data4. Tampilan ini membantu dalam mengidentifikasi variabel yang terdapat pada dataset serta memberikan gambaran awal mengenai jenis dan bentuk data yang akan dianalisis.
Pada Exercise 1 melakukan perhitungan total pengeluaran rumah tangga. Variabel total dibuat dengan menjumlahkan beberapa komponen pengeluaran, yaitu housing, food, goods, dan service. Hasil penjumlahan tersebut kemudian disimpan sebagai variabel baru bernama total pada dataset data1. Setelah itu digunakan fungsi head(data1) untuk menampilkan beberapa baris pertama dari dataset guna melihat hasil penambahan variabel tersebut.
data1$total <- data1$housing + data1$food + data1$goods + data1$service
head(data1)
## # A tibble: 6 × 6
## housing food goods service gender total
## <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 820 114 183 154 female 1271
## 2 184 74 6 20 female 284
## 3 921 66 1686 455 female 3128
## 4 488 80 103 115 female 786
## 5 721 83 176 104 female 1084
## 6 614 55 441 193 female 1303
Output yang dihasilkan menampilkan enam baris pertama dari dataset data1 setelah penambahan variabel total. Variabel total menunjukkan jumlah keseluruhan pengeluaran rumah tangga yang diperoleh dari penjumlahan pengeluaran untuk housing, food, goods, dan service.
ggplot(data1, aes(x = total, y = housing, color = gender)) +
geom_point(size = 3) +
labs(
title = "Total Expenditure vs Housing",
x = "Total Expenditure",
y = "Housing Expenditure"
)
Scatter plot dibuat menggunakan ggplot2 untuk melihat hubungan antara total expenditure dan housing expenditure. Variabel total ditempatkan pada sumbu X, sedangkan housing pada sumbu Y. Warna titik dibedakan berdasarkan gender untuk melihat distribusi data antara male dan female.
ggplot(data1, aes(x = total, y = housing, color = gender)) +
geom_point(size = 3) +
geom_smooth(method = "lm", se = FALSE, color = "black") +
labs(title = "Housing vs Total Expenditure",
x = "Total Expenditure",
y = "Housing Expenditure") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Berdasarkan grafik yang dihasilkan, terlihat bahwa terdapat hubungan
positif antara total expenditure dan housing expenditure. Hal ini
menunjukkan bahwa semakin besar total pengeluaran rumah tangga, maka
pengeluaran untuk perumahan juga cenderung meningkat. Sebaran titik data
dari kelompok male dan female terlihat relatif serupa, meskipun terdapat
beberapa variasi pada nilai pengeluaran tertentu. Garis regresi linear
yang ditampilkan pada grafik juga memperkuat indikasi adanya tren
peningkatan antara kedua variabel tersebut.
library(ggplot2)
p1 <- ggplot(data1, aes(x = total, y = housing, color = gender)) +
geom_point(size = 3) +
labs(title = "Housing vs Total Expenditure",
x = "Total Expenditure",
y = "Housing") +
theme_minimal()
p2 <- ggplot(data1, aes(x = total, y = food, color = gender)) +
geom_point(size = 3) +
labs(title = "Food vs Total Expenditure",
x = "Total Expenditure",
y = "Food") +
theme_minimal()
p3 <- ggplot(data1, aes(x = total, y = goods, color = gender)) +
geom_point(size = 3) +
labs(title = "Goods vs Total Expenditure",
x = "Total Expenditure",
y = "Goods") +
theme_minimal()
p4 <- ggplot(data1, aes(x = total, y = service, color = gender)) +
geom_point(size = 3) +
labs(title = "Service vs Total Expenditure",
x = "Total Expenditure",
y = "Service") +
theme_minimal()
library(gridExtra)
gridExtra::grid.arrange(p1, p2, p3, p4, ncol = 2)
Setiap grafik disimpan dalam objek p1, p2, p3, dan p4, kemudian
digabungkan menggunakan gridExtra::grid.arrange() sehingga keempat
grafik dapat ditampilkan dalam satu tampilan. Secara umum, grafik
menunjukkan bahwa peningkatan total pengeluaran rumah tangga cenderung
diikuti dengan peningkatan pengeluaran pada berbagai kebutuhan. Warna
titik menunjukkan distribusi data berdasarkan gender, namun pola
hubungan yang terlihat relatif serupa.
Kode menggunakan fungsi boxplot() untuk membuat visualisasi distribusi suicide rate berdasarkan kelompok usia. Data yang digunakan berasal dari kolom 2–6 pada dataset data2, yang mewakili kelompok usia 25–34, 35–44, 45–54, 55–64, dan 65–74. Parameter names digunakan untuk memberi label pada setiap kelompok usia, sedangkan main, xlab, dan ylab digunakan untuk menampilkan judul serta label sumbu pada grafik. Selain itu, col = “lightblue” digunakan untuk memberi warna pada boxplot agar lebih mudah dibaca.
boxplot(data2[,2:6],
names = c("25-34","35-44","45-54","55-64","65-74"),
main = "Suicide Rates by Age Group",
xlab = "Age Groups",
ylab = "Suicide Rate",
col = "lightblue")
Berdasarkan boxplot yang dihasilkan, terlihat bahwa suicide rate berbeda
pada setiap kelompok usia. Secara umum, nilai median cenderung meningkat
pada kelompok usia yang lebih tua, dengan kelompok usia 65–74
menunjukkan nilai yang relatif lebih tinggi dibanding kelompok lainnya.
Selain itu, terdapat beberapa outlier yang menunjukkan adanya nilai
suicide rate yang jauh lebih tinggi dari sebagian besar data. Hal ini
menunjukkan bahwa tingkat suicide rate bervariasi antar kelompok
usia.
summary(data2)
## Country Age (25-34) Age (35-44) Age (45-54)
## Length:15 Min. : 4.00 Min. : 7.00 Min. :10.0
## Class :character 1st Qu.: 9.50 1st Qu.:16.00 1st Qu.:16.5
## Mode :character Median :22.00 Median :25.00 Median :31.0
## Mean :19.93 Mean :26.33 Mean :32.0
## 3rd Qu.:27.00 3rd Qu.:34.50 3rd Qu.:41.0
## Max. :48.00 Max. :65.00 Max. :84.0
## Age (55-64) Age (65-74)
## Min. :14.0 Min. : 22.00
## 1st Qu.:19.0 1st Qu.: 27.00
## Median :33.0 Median : 35.00
## Mean :36.4 Mean : 42.27
## 3rd Qu.:49.5 3rd Qu.: 51.50
## Max. :81.0 Max. :107.00
Pada fungsi ggplot(), variabel Homicide ditempatkan pada sumbu X dan Life.Expectancy pada sumbu Y, sedangkan Income digunakan sebagai ukuran besar titik. Fungsi geom_point() digunakan untuk menampilkan titik data, kemudian geom_smooth(method = “lm”) digunakan untuk menambahkan garis regresi linear untuk menunjukkan kecenderungan hubungan antar variabel. Tampilan grafik dibuat lebih sederhana dengan menggunakan theme_minimal().
ggplot(data3, aes(x = Homicide, y = Life.Expectancy, size = Income)) +
geom_point(color = "darkred") +
geom_smooth(method = "lm", se = FALSE, color = "black") +
labs(title = "Life Expectancy vs Homicide Rate with Income",
x = "Homicide Rate",
y = "Life Expectancy") +
theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'
## Warning: The following aesthetics were dropped during statistical transformation: size.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
Berdasarkan grafik yang dihasilkan, terlihat adanya hubungan negatif
antara Homicide Rate dan Life Expectancy. Hal ini menunjukkan bahwa
semakin tinggi tingkat pembunuhan, maka harapan hidup cenderung menurun.
Selain itu, ukuran titik yang merepresentasikan Income menunjukkan bahwa
negara dengan pendapatan lebih tinggi cenderung memiliki life expectancy
yang lebih tinggi. Grafik ini membantu menggambarkan hubungan antara
faktor sosial ekonomi dan harapan hidup.
names(data4)
## [1] "Length" "Left" "Right" "Bottom" "Top" "Diagonal"
##Scatter Plot – Pattern of Banknote Measurements Scatter plot menunjukkan hubungan antara variabel Length dan Diagonal pada data pengukuran banknote. Berdasarkan grafik terlihat bahwa titik-titik data membentuk pola yang cenderung meningkat, yang menunjukkan adanya hubungan positif antara kedua variabel. Hal ini berarti bahwa semakin besar nilai Length, maka nilai Diagonal juga cenderung meningkat. Sebagian besar data terkonsentrasi pada rentang nilai tertentu yang menunjukkan bahwa ukuran banknote relatif konsisten. Meskipun demikian, terdapat beberapa titik yang sedikit menyimpang dari pola utama, namun tidak menunjukkan penyimpangan yang terlalu ekstrem.
ggplot(data4, aes(x = Length, y = Diagonal)) +
geom_point(size = 2.5, color = "darkblue") +
labs(title = "Pattern of Banknote Measurements",
x = "Length",
y = "Diagonal") +
theme_minimal()
##Boxplot – Univariate Outlier Detection Boxplot digunakan untuk melihat
distribusi data serta mendeteksi kemungkinan outlier secara univariat
pada variabel Length. Dari grafik terlihat bahwa sebagian besar data
berada di dalam area box dan whisker. Garis di dalam box menunjukkan
nilai median, yang menggambarkan pusat distribusi data. Selain itu,
terdapat beberapa titik yang berada di luar whisker yang dapat
diidentifikasi sebagai kemungkinan outlier. Namun secara keseluruhan,
distribusi data masih relatif terpusat di sekitar nilai median.
ggplot(data4, aes(y = Length)) +
geom_boxplot(fill = "pink") +
labs(title = "Univariate Outlier Detection",
y = "Length") +
theme_minimal()
##Scatter Plot – Multivariate Outlier Detection Scatter plot digunakan
untuk mendeteksi multivariate outlier dengan melihat hubungan antara
variabel Left dan Right. Dari grafik terlihat bahwa sebagian besar titik
data membentuk pola yang hampir linear, yang menunjukkan adanya hubungan
yang cukup kuat antara kedua variabel tersebut. Hal ini berarti bahwa
nilai Left dan Right cenderung meningkat secara bersamaan. Sebagian
besar data mengikuti pola utama tersebut, namun terdapat beberapa titik
yang sedikit menyimpang dari pola tersebut yang dapat menjadi indikasi
adanya multivariate outlier.
ggplot(data4, aes(x = Left, y = Right)) +
geom_point(size = 2.5, color = "darkred") +
labs(title = "Multivariate Outlier Detection",
x = "Left",
y = "Right") +
theme_minimal()
Dari boxplot terlihat adanya beberapa kemungkinan univariate outlier
pada variabel Length, sedangkan pada scatter plot Left dan Right
terdapat beberapa titik yang sedikit menyimpang dari pola utama yang
dapat mengindikasikan multivariate outlier, meskipun sebagian besar data
masih mengikuti pola hubungan yang jelas.
#KESIMPULAN Berdasarkan hasil analisis pada keempat exercise, dapat disimpulkan bahwa visualisasi data merupakan metode yang efektif untuk memahami pola, hubungan antar variabel, serta distribusi data dalam suatu dataset. Pada Exercise 1, visualisasi scatter plot menunjukkan hubungan antara total pengeluaran rumah tangga dengan pengeluaran untuk housing. Exercise 2 menggunakan boxplot untuk membandingkan distribusi angka bunuh diri pada berbagai kelompok usia. Pada Exercise 3, scatter plot menunjukkan adanya kecenderungan hubungan antara tingkat pendapatan dan angka harapan hidup. Sementara itu, Exercise 4 digunakan untuk menganalisis pola pengukuran banknote serta mendeteksi kemungkinan adanya outlier secara univariat maupun multivariat.