Memuat paket yang diperlukan dan membaca dataset.
# Load library
library(tidyverse)
library(scales)
library(glue)
library(fivethirtyeight)
library(viridis)
# Load dataset
data("college_recent_grads", package = "fivethirtyeight")
# Cek struktur data
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…
# Melihat beberapa baris pertama
head(college_recent_grads)
## # A tibble: 6 × 21
## rank major_code major major_category total sample_size men women sharewomen
## <int> <int> <chr> <chr> <int> <int> <int> <int> <dbl>
## 1 1 2419 Petr… Engineering 2339 36 2057 282 0.121
## 2 2 2416 Mini… Engineering 756 7 679 77 0.102
## 3 3 2415 Meta… Engineering 856 3 725 131 0.153
## 4 4 2417 Nava… Engineering 1258 16 1123 135 0.107
## 5 5 2405 Chem… Engineering 32260 289 21239 11021 0.342
## 6 6 2418 Nucl… Engineering 2573 17 2200 373 0.145
## # ℹ 12 more variables: employed <int>, employed_fulltime <int>,
## # employed_parttime <int>, employed_fulltime_yearround <int>,
## # unemployed <int>, unemployment_rate <dbl>, p25th <dbl>, median <dbl>,
## # p75th <dbl>, college_jobs <int>, non_college_jobs <int>,
## # low_wage_jobs <int>
# Konversi median ke numerik jika perlu
college_recent_grads <- college_recent_grads %>%
mutate(median = as.numeric(median))
# Cek ulang struktur
summary(college_recent_grads)
## rank major_code major major_category
## Min. : 1 Min. :1100 Length:173 Length:173
## 1st Qu.: 44 1st Qu.:2403 Class :character Class :character
## Median : 87 Median :3608 Mode :character Mode :character
## Mean : 87 Mean :3880
## 3rd Qu.:130 3rd Qu.:5503
## Max. :173 Max. :6403
##
## total sample_size men women
## Min. : 124 Min. : 2.0 Min. : 119 Min. : 0
## 1st Qu.: 4550 1st Qu.: 39.0 1st Qu.: 2178 1st Qu.: 1778
## Median : 15104 Median : 130.0 Median : 5434 Median : 8386
## Mean : 39370 Mean : 356.1 Mean : 16723 Mean : 22647
## 3rd Qu.: 38910 3rd Qu.: 338.0 3rd Qu.: 14631 3rd Qu.: 22554
## Max. :393735 Max. :4212.0 Max. :173809 Max. :307087
## NA's :1 NA's :1 NA's :1
## sharewomen employed employed_fulltime employed_parttime
## Min. :0.0000 Min. : 0 Min. : 111 Min. : 0
## 1st Qu.:0.3360 1st Qu.: 3608 1st Qu.: 3154 1st Qu.: 1030
## Median :0.5340 Median : 11797 Median : 10048 Median : 3299
## Mean :0.5222 Mean : 31193 Mean : 26029 Mean : 8832
## 3rd Qu.:0.7033 3rd Qu.: 31433 3rd Qu.: 25147 3rd Qu.: 9948
## Max. :0.9690 Max. :307933 Max. :251540 Max. :115172
## NA's :1
## employed_fulltime_yearround unemployed unemployment_rate p25th
## Min. : 111 Min. : 0 Min. :0.00000 Min. :18500
## 1st Qu.: 2453 1st Qu.: 304 1st Qu.:0.05031 1st Qu.:24000
## Median : 7413 Median : 893 Median :0.06796 Median :27000
## Mean : 19694 Mean : 2416 Mean :0.06819 Mean :29501
## 3rd Qu.: 16891 3rd Qu.: 2393 3rd Qu.:0.08756 3rd Qu.:33000
## Max. :199897 Max. :28169 Max. :0.17723 Max. :95000
##
## median p75th college_jobs non_college_jobs
## Min. : 22000 Min. : 22000 Min. : 0 Min. : 0
## 1st Qu.: 33000 1st Qu.: 42000 1st Qu.: 1675 1st Qu.: 1591
## Median : 36000 Median : 47000 Median : 4390 Median : 4595
## Mean : 40151 Mean : 51494 Mean : 12323 Mean : 13284
## 3rd Qu.: 45000 3rd Qu.: 60000 3rd Qu.: 14444 3rd Qu.: 11783
## Max. :110000 Max. :125000 Max. :151643 Max. :148395
##
## low_wage_jobs
## Min. : 0
## 1st Qu.: 340
## Median : 1231
## Mean : 3859
## 3rd Qu.: 3466
## Max. :48207
##
# Menambahkan kategori STEM dan Non-STEM
college_recent_grads <- college_recent_grads %>%
mutate(stem = ifelse(major_category %in% c("Engineering", "Physical Sciences",
"Biology & Life Science", "Math & Computer Science"),
"STEM", "Non-STEM"))
# Plot perbandingan gaji berdasarkan kategori STEM dan Non-STEM
ggplot(college_recent_grads, aes(x = stem, y = median, fill = stem)) +
geom_boxplot() +
scale_y_continuous(labels = scales::dollar_format()) +
labs(title = "Perbandingan Median Salary: STEM vs. Non-STEM",
x = "Kategori Jurusan", y = "Median Salary") +
theme_minimal()
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?
Mengapa Menggunakan Median daripada Mean?
pendapatan_summary <- college_recent_grads %>%
summarise(
Min = min(median, na.rm = TRUE),
mean = mean(median, na.rm = TRUE ),
Q1 = quantile(median, 0.25, na.rm = TRUE),
Median = median(median, na.rm = TRUE),
Q3 = quantile(median, 0.75, na.rm = TRUE),
Max = max(median, na.rm = TRUE)
)
pendapatan_summary
## # A tibble: 1 × 6
## Min mean Q1 Median Q3 Max
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 22000 40151. 33000 36000 45000 110000
# Plot histogram distribusi pendapatan median
ggplot(college_recent_grads, aes(x = median)) +
geom_histogram(binwidth = 5000, fill = "#69b3a2", color = "white") +
geom_vline(xintercept = mean(college_recent_grads$median, na.rm = TRUE),
color = "#ff6361", linetype = "dashed") +
geom_vline(xintercept = median(college_recent_grads$median, na.rm = TRUE),
color = "#58508d", linetype = "dashed") +
annotate("text", x = mean(college_recent_grads$median, na.rm = TRUE) + 3000, y = 15,
label = "(Mean)", color = "#ff6361", size = 5, hjust = 0) +
annotate("text", x = median(college_recent_grads$median, na.rm = TRUE) - 3000, y = 13,
label = "(Median)", color = "#58508d", size = 5, hjust = 1) +
labs(
title = "Distribusi Median Pendapatan Lulusan",
x = "Pendapatan Median (dalam Dollar)",
y = "Jumlah Jurusan"
) +
theme_minimal()
Kesimpulan: Median lebih sering digunakan daripada mean dalam
menggambarkan pendapatan karena lebih tahan terhadap outlier (nilai
ekstrem). Mean dapat terdistorsi oleh adanya beberapa jurusan dengan
pendapatan yang sangat tinggi atau sangat rendah, sedangkan median lebih
mampu mencerminkan kondisi mayoritas lulusan secara lebih akurat.
Buat ulang visualisasi berikut. Catatan: Lebar bin yang digunakan adalah $5.000. Perhatikan dengan cermat teks dan label pada sumbu.
Histogram Pendapatan Median (Bin $5.000)
# Membuat objek stem_majors
stem_majors <- college_recent_grads %>%
filter(major_category %in% c("Biology & Life Science",
"Computers & Mathematics",
"Engineering",
"Physical Sciences"))
ggplot(stem_majors, aes(x = median, fill = major_category)) +
geom_histogram(binwidth = 5000, color = "black") +
scale_x_continuous(labels = label_dollar()) +
facet_wrap(~ major_category, nrow = 4) +
labs(
title = "Distribusi Gaji Median untuk Jurusan STEM",
subtitle = "Menggunakan Binwidth = $5.000",
x = "Median Salary ($)",
y = "Frekuensi"
) +
theme_minimal() +
theme(legend.position = "none")
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.
Histogram Pendapatan Median (Bin $1.000)
# Membuat objek stem_majors
stem_majors <- college_recent_grads %>%
filter(major_category %in% c("Biology & Life Science",
"Computers & Mathematics",
"Engineering",
"Physical Sciences"))
ggplot(stem_majors, aes(x = median, fill = major_category)) +
geom_histogram(binwidth = 1000, color = "black") +
scale_x_continuous(labels = label_dollar()) +
facet_wrap(~ major_category, nrow = 4) +
labs(
title = "Distribusi Gaji Median untuk Jurusan STEM",
subtitle = "Menggunakan Binwidth = $51.000",
x = "Median Salary ($)",
y = "Frekuensi"
) +
theme_minimal() +
theme(legend.position = "none")
kesimpulan: Binwidth $1.000 memberikan distribusi yang lebih detail,
namun bisa terlalu granular dan membuat analisis lebih sulit. Sementara
itu, binwidth $5.000 lebih sering digunakan karena memberikan gambaran
yang lebih jelas dan mudah dipahami tentang pola distribusi gaji tanpa
kehilangan informasi penting.
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.
#mencari nilai median dari seluruh jurusan
overall_median <- median(college_recent_grads$median, na.rm = TRUE)
filtered_stem <- stem_majors %>%
filter(median <= overall_median) %>%
select(major, median, p25th, p75th) %>%
arrange(desc(median))
#hasil
print(filtered_stem)
## # 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
Kesimpulan: jurusan-jurusan dalam kategori STEM (yaitu Biology & Life Science, Computers & Mathematics, Engineering, dan Physical Sciences) yang memiliki gaji median lebih rendah atau sama dengan median gaji dari seluruh jurusan yang ada dalam dataset.
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.
Soal Apakah terdapat hubungan antara proporsi lulusan perempuan, tingkat pengangguran, dan gaji median pada jurusan-jurusan kuliah?
college_recent_grads %>%
summarise(
rata_share_women = mean(sharewomen, na.rm = TRUE),
rata_unemployment = mean(unemployment_rate, na.rm = TRUE),
rata_median_salary = mean(median, na.rm = TRUE)
)
## # A tibble: 1 × 3
## rata_share_women rata_unemployment rata_median_salary
## <dbl> <dbl> <dbl>
## 1 0.522 0.0682 40151.
#membersihkan data
college_recent_grads_clean <- college_recent_grads %>%
filter(!is.na(sharewomen), !is.na(median), !is.na(unemployment_rate))
# lalu gunakan dataset ini untuk plot:
ggplot(college_recent_grads_clean, aes(x = sharewomen, y = median)) +
geom_point(aes(color = unemployment_rate), alpha = 0.7) +
scale_color_gradient(low = "blue", high = "red") +
labs(
title = "Hubungan antara Proporsi Perempuan, Gaji Median, dan Tingkat Pengangguran",
x = "Proporsi Lulusan Perempuan",
y = "Gaji Median ($)",
color = "Tingkat Pengangguran"
) +
theme_minimal()
Kesimpulan: Jurusan dengan proporsi perempuan yang lebih tinggi cenderung memiliki gaji median yang lebih rendah, Tingkat pengangguran cenderung bervariasi, tetapi ada kecenderungan jurusan dengan gaji rendah juga memiliki pengangguran lebih tinggi, Ini menunjukkan adanya potensi ketimpangan dalam bidang studi tertentu, baik dari sisi gender maupun penghasilan.