Tugas Visualisasi 2

Okana Jabbar Wibisana (16231047)

28 Maret 2025

Library dan Data

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.2
## Warning: package 'readr' was built under R version 4.4.3
## Warning: package 'forcats' was built under R version 4.4.3
## Warning: package 'lubridate' was built under R version 4.4.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(scales)
## 
## Attaching package: 'scales'
## 
## The following object is masked from 'package:purrr':
## 
##     discard
## 
## The following object is masked from 'package:readr':
## 
##     col_factor
library(fivethirtyeight)
## Warning: package 'fivethirtyeight' was built under R version 4.4.3
## Some larger datasets need to be installed separately, like senators and
## house_district_forecast. To install these, we recommend you install the
## fivethirtyeightdata package by running:
## install.packages('fivethirtyeightdata', repos =
## 'https://fivethirtyeightdata.github.io/drat/', type = 'source')
data("college_recent_grads", package = "fivethirtyeight")
glimpse(college_recent_grads)
## Rows: 173
## Columns: 21
## $ rank                        <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,…
## $ major_code                  <int> 2419, 2416, 2415, 2417, 2405, 2418, 6202, …
## $ major                       <chr> "Petroleum Engineering", "Mining And Miner…
## $ major_category              <chr> "Engineering", "Engineering", "Engineering…
## $ total                       <int> 2339, 756, 856, 1258, 32260, 2573, 3777, 1…
## $ sample_size                 <int> 36, 7, 3, 16, 289, 17, 51, 10, 1029, 631, …
## $ men                         <int> 2057, 679, 725, 1123, 21239, 2200, 2110, 8…
## $ women                       <int> 282, 77, 131, 135, 11021, 373, 1667, 960, …
## $ sharewomen                  <dbl> 0.1205643, 0.1018519, 0.1530374, 0.1073132…
## $ employed                    <int> 1976, 640, 648, 758, 25694, 1857, 2912, 15…
## $ employed_fulltime           <int> 1849, 556, 558, 1069, 23170, 2038, 2924, 1…
## $ employed_parttime           <int> 270, 170, 133, 150, 5180, 264, 296, 553, 1…
## $ employed_fulltime_yearround <int> 1207, 388, 340, 692, 16697, 1449, 2482, 82…
## $ unemployed                  <int> 37, 85, 16, 40, 1672, 400, 308, 33, 4650, …
## $ unemployment_rate           <dbl> 0.018380527, 0.117241379, 0.024096386, 0.0…
## $ p25th                       <dbl> 95000, 55000, 50000, 43000, 50000, 50000, …
## $ median                      <dbl> 110000, 75000, 73000, 70000, 65000, 65000,…
## $ p75th                       <dbl> 125000, 90000, 105000, 80000, 75000, 10200…
## $ college_jobs                <int> 1534, 350, 456, 529, 18314, 1142, 1768, 97…
## $ non_college_jobs            <int> 364, 257, 176, 102, 4440, 657, 314, 500, 1…
## $ low_wage_jobs               <int> 193, 50, 0, 0, 972, 244, 259, 220, 3253, 3…

Exercise 1

Ada tiga jenis pendapatan yang dilaporkan dalam data frame ini: p25th, median, dan p75th. Ketiganya masing-masing merujuk pada persentil ke-25, ke-50, dan ke-75 dari distribusi pendapatan individu yang diambil sampelnya untuk suatu jurusan tertentu. Mengapa kita sering memilih median daripada mean untuk menggambarkan pendapatan tipikal suatu kelompok?

Answer 1

Nilai median lebih mewakili distribusi yang tidak simetris (condong kanan/kiri), dan lebih mudah dipahami. Pendapatan ini sering kali memiliki beberapa individu dengan pendapatan yang sangat tinggi, yang bisa menaikkan rata-rata secara tidak realistis, sementara median tetap stabil karena hanya melihat nilai tengah. Selain itu, distribusi pendapatan biasanya condong ke kanan, dengan sebagian besar orang berpenghasilan lebih rendah dari rata-rata atau mean, sehingga median lebih mencerminkan kenyataan. Selain itu, median juga lebih mudah dipahami karena membagi kelompok menjadi dua bagian yang sama besar—setengah berpenghasilan lebih rendah dan setengahnya lebih tinggi.

Exercise 2

Buat ulang visualisasi berikut. Catatan: Lebar bin yang digunakan adalah $5.000. Perhatikan dengan cermat teks dan label pada sumbu

Answer 2

library(ggplot2)
library(dplyr)
library(scales)

data_stem <- college_recent_grads %>%
  filter(major_category %in% c("Biology & Life Science", "Computers & Mathematics", "Engineering", "Physical Sciences"))

ggplot(data_stem, aes(x = median, fill = major_category)) +
  geom_histogram(binwidth = 5000, color = "black") +
  scale_x_continuous(labels = label_dollar(scale = 1e-3, prefix = "$", suffix = "K")) +
  facet_wrap(~ major_category, nrow = 4) +  
  labs(
    title = "Median earnings of full-time, year-round workers",
    subtitle = "For STEM majors",
    x = "Median earnings",
    y = "Frequency"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

Exercise 3

Buat ulang visualisasi dari latihan sebelumnya, kali ini dengan lebar bin sebesar $1.000. Mana yang lebih baik antara $1.000 atau $5.000 sebagai pilihan lebar bin? Jelaskan alasan Anda dalam satu kalimat.

Answer 3

ggplot(data_stem, aes(x = median, fill = major_category)) +
  geom_histogram(binwidth = 1000, color = "black") +
  scale_x_continuous(labels = label_dollar(scale = 1e-3, prefix = "$", suffix = "K")) +
  facet_wrap(~ major_category, nrow = 4) +  
  labs(
    title = "Median earnings of full-time, year-round workers",
    subtitle = "For STEM majors",
    x = "Median earnings",
    y = "Frequency"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

ALASAN

Lebih baik lebar bin $5000 Lebar, karena lebar bin $1.000 menunjukkan lebih banyak detail dalam distribusi pendapatan, tetapi bisa membuat grafik terlihat terlalu rumit dan sulit dibaca. Sebaliknya, lebar bin $5.000 menyederhanakan tampilan sehingga pola utama lebih mudah dikenali. Jika ingin melihat gambaran umum, $5.000 lebih baik, tetapi jika butuh analisis lebih rinci, lebar bin $1.000 bisa digunakan.

Exercise 4

Jurusan STEM mana (yaitu, jurusan dalam kategori “Biology & Life Science”, “Computers & Mathematics”, “Engineering”, dan “Physical Sciences”) yang memiliki gaji median yang sama dengan atau lebih rendah dari median untuk seluruh jurusan (semua jurusan, bukan hanya yang termasuk dalam kategori STEM)? Output Anda hanya boleh menampilkan nama jurusan serta pendapatan median, persentil ke-25, dan persentil ke-75 untuk jurusan tersebut, dan harus diurutkan sehingga jurusan dengan pendapatan median tertinggi berada di bagian atas.

Answer 4

median_all <- median(college_recent_grads$median, na.rm = TRUE)

stem_low_income <- college_recent_grads %>%
  filter(major_category %in% c("Biology & Life Science", "Computers & Mathematics", "Engineering", "Physical Sciences"),
         median <= median_all) %>%
  arrange(desc(median)) %>%
  select(major, median, p25th, p75th)

stem_low_income
## # A tibble: 11 × 4
##    major                                 median p25th p75th
##    <chr>                                  <dbl> <dbl> <dbl>
##  1 Geosciences                            36000 21000 41000
##  2 Environmental Science                  35600 25000 40200
##  3 Multi-Disciplinary Or General Science  35000 24000 50000
##  4 Physiology                             35000 20000 50000
##  5 Communication Technologies             35000 25000 45000
##  6 Neuroscience                           35000 30000 44000
##  7 Atmospheric Sciences And Meteorology   35000 28000 50000
##  8 Miscellaneous Biology                  33500 23000 48000
##  9 Biology                                33400 24000 45000
## 10 Ecology                                33000 23000 42000
## 11 Zoology                                26000 20000 39000

Exercise 5

Buatlah sebuah pertanyaan yang menarik bagi Anda yang dapat dijawab menggunakan setidaknya tiga variabel dari dataset, lalu jawab pertanyaan tersebut menggunakan statistik ringkasan dan/atau visualisasi.

Answer 5

Bagaimana perbandingan rata-rata pendapatan awal (median salary) di antara jurusan Engineering, Business, dan Arts, serta bagaimana proporsi perempuan dan tingkat pengangguran berkontribusi dalam kategori tersebut?

library(ggplot2)
library(dplyr)
library(tidyr)

selected_categories <- c("Engineering", "Business", "Arts")

summary_data <- college_recent_grads %>%
  filter(major_category %in% selected_categories) %>%
  group_by(major_category) %>%
  summarise(
    `Median Salary` = mean(median, na.rm = TRUE),
    `Proportion of Women` = mean(sharewomen, na.rm = TRUE),
    `Unemployment Rate` = mean(unemployment_rate, na.rm = TRUE)
  ) %>%
  pivot_longer(cols = -major_category, names_to = "Variable", values_to = "Value")

ggplot(summary_data, aes(x = major_category, y = Value, fill = major_category)) +
  geom_col() +
  facet_wrap(~ Variable, scales = "free_y") +
  labs(
    title = "Perbandingan Rata-rata Tiga Variabel Utama Berdasarkan Kategori Jurusan",
    x = "Kategori Jurusan",
    y = "Nilai",
    fill = "Kategori"
  ) +
  theme_minimal() 

INTERPRETASI HASIL

Median Salary (Gaji Median): Jurusan di bidang Engineering memberikan pendapatan awal tertinggi bagi lulusan baru, sedangkan jurusan di bidang Arts cenderung memiliki pendapatan awal yang paling rendah.

Proportion of Women (Proporsi Perempuan): Jurusan Engineering masih sangat didominasi oleh laki-laki, sedangkan Arts lebih banyak diminati oleh perempuan. Business relatif seimbang.

Unemployment Rate (Tingkat Pengangguran): Lulusan jurusan Engineering tidak hanya memiliki gaji awal tertinggi, tetapi juga memiliki peluang kerja yang lebih baik (pengangguran lebih rendah). Sebaliknya, lulusan Arts cenderung menghadapi tantangan lebih besar dalam mendapatkan pekerjaan.