library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## Warning: package 'ggplot2' was built under R version 4.3.3
## Warning: package 'tibble' was built under R version 4.3.2
## Warning: package 'tidyr' was built under R version 4.3.3
## Warning: package 'readr' was built under R version 4.3.3
## Warning: package 'purrr' was built under R version 4.3.3
## Warning: package 'dplyr' was built under R version 4.3.3
## Warning: package 'stringr' was built under R version 4.3.3
## Warning: package 'forcats' was built under R version 4.3.3
## Warning: package 'lubridate' was built under R version 4.3.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(fivethirtyeight)
## Warning: package 'fivethirtyeight' was built under R version 4.3.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')
library(scales)
## Warning: package 'scales' was built under R version 4.3.3
##
## Attaching package: 'scales'
##
## The following object is masked from 'package:purrr':
##
## discard
##
## The following object is masked from 'package:readr':
##
## col_factor
data("college_recent_grads")
Dalam tugas ini, kita akan menganalisis data tentang jurusan kuliah dan pendapatan lulusan, khususnya dari artikel FiveThirtyEight berjudul “The Economic Guide to Picking a College Major” The Economic Guide To Picking A College Major. Data ini berasal dari American Community Survey (ACS) 2010-2012. Jika Anda tertarik dengan cara FiveThirtyEight mengolah data mentah ACS, Anda dapat melihat the code yang mereka gunakan.
Perlu diingat bahwa ada banyak faktor dalam memilih jurusan kuliah. Potensi pendapatan dan peluang kerja memang penting, tetapi bukan satu-satunya pertimbangan. Jadi, saat menganalisis data, jangan hanya fokus pada aspek ekonomi.
Sebelum mengerjakan tugas ini, disarankan untuk mengikuti tutorial interaktif “What should I major in?”. Tutorial ini akan membantu Anda mengenal dataset dan melakukan latihan sederhana dengan umpan balik otomatis. Anggap saja sebagai pemanasan!
Dataset utama yang digunakan dalam tugas ini adalah college_recent_grads, yang terdapat dalam paket fivethirtyeight. Untuk melihat dokumentasi dataset ini, ketik perintah berikut ?college_recent_grads di Console atau menggunakan menu Help di Rstudio untuk mencari tentang college_recent_grads. You can also find this information here.
The college_recent_grads data frame is a trove of information. Let’s think about some questions we might want to answer with these data:
Which major has the lowest unemployment rate? Which major has the highest percentage of women? How do the distributions of median income compare across major categories?
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? jawab : Median lebih sering digunakan daripada mean dalam menggambarkan pendapatan tipikal suatu kelompok karena median tidak terpengaruh oleh nilai ekstrem (outliers). Dalam distribusi pendapatan, sering kali terdapat individu dengan pendapatan sangat tinggi yang dapat menaikkan nilai mean secara signifikan, sehingga kurang representatif bagi mayoritas individu dalam kelompok tersebut.
Buat ulang visualisasi berikut. Catatan: Lebar bin yang digunakan adalah $5.000. Perhatikan dengan cermat teks dan label pada sumbu.
Hint: The label_dollar() function can be helpful for the x-axis.
Hint: Wondering how to restrict to full-time, year-round workers? Have a look at the data dictionary by typing ?college_recent_grads into the console. It’s probably easier than you think!
college_recent_grads %>%
ggplot(aes(x = median)) +
geom_histogram(binwidth = 5000, fill = "steelblue", color = "black") +
scale_x_continuous(labels = label_dollar()) +
labs(title = "Distribusi Pendapatan Median",
x = "Pendapatan Median",
y = "Jumlah Jurusan") +
theme_minimal()
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.
college_recent_grads %>%
ggplot(aes(x = median)) +
geom_histogram(binwidth = 1000, fill = "steelblue", color = "black") +
scale_x_continuous(labels = label_dollar()) +
labs(title = "Distribusi Pendapatan Median (Lebar Bin: $1,000)",
x = "Pendapatan Median",
y = "Jumlah Jurusan") +
theme_minimal()
Histogram dengan binwidth $1.000 memberikan detail lebih halus tentang
distribusi pendapatan, tetapi bisa lebih berisik, sedangkan binwidth
$5.000 merangkum data dengan lebih rapi namun mengurangi detail
variasi pendapatan.
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.
median_all <- median(college_recent_grads$median, na.rm = TRUE)
college_recent_grads %>%
filter(major_category %in% c("Biology & Life Science",
"Computers & Mathematics",
"Engineering",
"Physical Sciences"),
median <= median_all) %>%
select(major, p25th, median, p75th) %>%
arrange(desc(median))
## # A tibble: 11 × 4
## major p25th median p75th
## <chr> <dbl> <dbl> <dbl>
## 1 Geosciences 21000 36000 41000
## 2 Environmental Science 25000 35600 40200
## 3 Multi-Disciplinary Or General Science 24000 35000 50000
## 4 Physiology 20000 35000 50000
## 5 Communication Technologies 25000 35000 45000
## 6 Neuroscience 30000 35000 44000
## 7 Atmospheric Sciences And Meteorology 28000 35000 50000
## 8 Miscellaneous Biology 23000 33500 48000
## 9 Biology 24000 33400 45000
## 10 Ecology 23000 33000 42000
## 11 Zoology 20000 26000 39000
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.
ggplot(college_recent_grads, aes(sharewomen, unemployment_rate,
color = major_category, size = total)) +
geom_point(alpha = 0.8) +
geom_smooth(method = "lm", color = "black", linetype = "dashed", se = FALSE) +
scale_color_viridis_d() +
labs(
title = "Hubungan Persentase Wanita dan Tingkat Pengangguran",
x = "Persentase Lulusan Wanita",
y = "Tingkat Pengangguran",
color = "Kategori Jurusan",
size = "Jumlah Lulusan"
) +
theme_minimal() +
theme(legend.position = "bottom")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 1 row containing non-finite outside the scale range
## (`stat_smooth()`).
## 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?
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).