Load Package

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)

Import Semua Dataset (4 Sheet Excel)

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)

Cek Dataset

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.

EXERCISE 1 : Household Expenditure

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"
  )

Grafik Scatter Plot

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.

EXERCISE 2 : Suicide Rate Boxplot

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

EXERCISE 3 : Life Expectancy vs Homicide

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.

EXERCISE 4 : Outlier Detection

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.