Statistik adalah jendela dunia. Biasanya buku yang demikian, sekarang statistiklah yang mendapat giliran. Pos sebelumnya menunjukkan peran statistik untuk memahami keadaan sosial ekonomi dan pendidikan berbagai negara. Sekarang, kita akan melihat faedah statistik dalam memahami karakteristik-karakteristik lainnya.
Untuk memahami dunia, kita akan menggunakan data dari Gapminder. Data tersebut dapat diunduh dari situs Gapminder. Di situs itu, kita dapat memilih berbagai macam indikator, seperti produk domestik bruto per kapita, harapan hidup, dan populasi.
Alternatifnya, kita juga dapat mengunduhnya dari repositori Github. Data yang disiapkan oleh Jenny Bryan dan para koleganya tersebut relatif sederhana. Data ini mudah untuk diolah secara lebih lanjut. Data inilah yang akan kita gunakan pada bagian berikutnya. Untuk mengawali proses pengolahan data, kita panggil paket {tidyverse} dan {ggrepel}.
Data dan Konteksnya
Data yang akan kita olah dapat diunduh di tautan ini. Data tersebut merupakan fail RData. Untuk mengimpor fail RData ke dalam R, kita menggunakan fungsi load()
dan url()
.
Setelah kita menjalankan baris kode di atas, kita mendapatkan data dengan nama gapminder
. Untuk melihat strukturnya, kita dapat menggunakan fungsi glimpse()
.
Rows: 1,704
Columns: 6
$ country <fct> "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", …
$ continent <fct> Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, …
$ year <int> 1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987, 1992, 1997, …
$ lifeExp <dbl> 28.801, 30.332, 31.997, 34.020, 36.088, 38.438, 39.854, 40.8…
$ pop <int> 8425333, 9240934, 10267083, 11537966, 13079460, 14880372, 12…
$ gdpPercap <dbl> 779.4453, 820.8530, 853.1007, 836.1971, 739.9811, 786.1134, …
Ternyata data tersebut memiliki 1.704 baris dan 6 kolom. Keterangan lebih lanjut tentang keenam kolom tersebut disajikan pada Tabel 1.
gapminder
.
Variabel | Keterangan |
---|---|
country |
Negara |
continent |
Benua |
year |
Tahun |
lifeExp |
Angka harapan hidup |
pop |
Populasi |
gdpPercap |
Produk Domestik Bruto (PDB) per kapita dalam dolar internasional |
Visualisasi Data
Penjelajahan pun kita mulai. Dalam data gapminder
tersebut, tahunnya merentang kapan saja? Untuk menjawabnya, kita dapat menggunakan unique()
.
Ternyata tahunnya merentang mulai 1952 sampai 2007 dengan interval lima tahun. Selanjutnya, bagaimana tren angka harapan hidup setiap negara pada periode tersebut? Kita dapat memvisualisasikannya dengan diagram pencar. Kita menggunakan benua (continent
) sebagai pembeda warna titik-titiknya dan populasi (pop
) sebagai penanda ukuran titik-titiknya.
terjemahan_benua <- c(
"Asia" = "Asia",
"Europe" = "Eropa",
"Africa" = "Afrika",
"Americas" = "Amerika",
"Oceania" = "Oseania"
)
plot_harapan_hidup <- gapminder |>
mutate(
continent = recode(continent, !!!terjemahan_benua)
) |>
ggplot() +
geom_point(
aes(x = year, y = lifeExp, color = continent, size = pop),
alpha = .6) +
scale_size(range = c(1, 20), guide = "none") +
scale_color_viridis_d(name = "Benua") +
theme_minimal() +
theme(legend.position = "bottom") +
labs(
x = "Tahun",
y = "Angka harapan hidup"
)
print(plot_harapan_hidup)
Berdasarkan Gambar 1, kita melihat ada empat titik (negara) yang posisinya jauh di bawah dibandingkan kebanyakan negara lain. Itu terjadi pada tahun 1977, 1992, 1997, dan 2007. Kita selidiki apa saja negara tersebut.
lifeExp_bawah <- gapminder |>
filter(
year %in% c(1977, 1992, 1997, 2007)
) |>
group_by(year) |>
slice_min(lifeExp, n = 1) |>
ungroup()
print(lifeExp_bawah)
# A tibble: 4 × 6
country continent year lifeExp pop gdpPercap
<fct> <fct> <int> <dbl> <int> <dbl>
1 Cambodia Asia 1977 31.2 6978607 525.
2 Rwanda Africa 1992 23.6 7290203 737.
3 Rwanda Africa 1997 36.1 7212583 590.
4 Swaziland Africa 2007 39.6 1133066 4513.
Kita sudah mengetahui apa saja negara tersebut. Sekarang kita masukkan informasi ini ke dalam diagram pencar pada Gambar 1. Hasilnya ditunjukkan pada Gambar 2.
plot_harapan_hidup +
geom_text_repel(
data = lifeExp_bawah,
aes(x = year, y = lifeExp, label = country),
size = 3.5,
nudge_y = -1,
show.legend = FALSE
)
Berdasarkan Gambar 1 dan Gambar 2, kita dapat melihat bahwa angka harapan hidupnya secara rata-rata naik dari tahun ke tahun. Untuk mengkonfirmasinya, kita dapat menambahkan visualisasi nilai tengah (median) angka harapan hidup ini. Perhatikan Gambar 3!
median_lifeExp <- gapminder |>
group_by(year) |>
summarise(
median = median(lifeExp, na.rm = TRUE),
.groups = "drop"
)
plot_harapan_hidup +
geom_line(
data = median_lifeExp,
aes(x = year, y = median),
linewidth = 1,
color = "#164863"
) +
geom_text_repel(
data = lifeExp_bawah,
aes(x = year, y = lifeExp, label = country),
size = 3.5,
nudge_y = -1,
show.legend = FALSE
)
Bagaimana dengan PDB per kapita setiap negaranya? Apakah trennya juga naik dari tahun ke tahun? Mari kita visualisasikan PDB tersebut. Perhatikan Gambar 4!
median_gdpPercap <- gapminder |>
group_by(year) |>
summarise(
median = median(gdpPercap, na.rm = TRUE),
.groups = "drop"
)
gdpPercap_atas <- gapminder |>
filter(
year >= 1952,
year <= 1977
) |>
group_by(year) |>
slice_max(gdpPercap, n = 1) |>
ungroup()
plot_pdb <- gapminder |>
mutate(
continent = recode(continent, !!!terjemahan_benua)
) |>
ggplot() +
geom_point(
aes(x = year, y = gdpPercap, color = continent, size = pop),
alpha = .6
) +
geom_line(
data = median_gdpPercap,
aes(x = year, y = median),
linewidth = 1,
color = "#164863"
) +
geom_text_repel(
data = gdpPercap_atas,
aes(x = year, y = gdpPercap, label = country, color = continent),
size = 3.5,
nudge_y = -1,
show.legend = FALSE
) +
scale_size(
range = c(1, 20),
guide = "none"
) +
scale_color_viridis_d(name = "Benua") +
theme_minimal() +
theme(legend.position = "bottom") +
labs(
x = "Tahun",
y = "PDB per kapita"
)
print(plot_pdb)
Tren nilai tengah PDB per kapita pada Gambar 4 tidak begitu tampak jelas. Kita plot ulang tren tersebut.
median_gdpPercap |>
ggplot(aes(x = year, y = median)) +
geom_line(
linewidth = 1,
color = "#164863"
) +
theme_minimal() +
labs(
x = "Tahun",
y = "Nilai tengah PDB per kapita"
)
Gambar 5 menunjukkan secara lebih jelas bahwa nilai tengah PDB per kapita mengalami kenaikan dari tahun ke tahun.
Nah, sekarang kita lanjutkan penjelajahan kita. Apakah terdapat hubungan antara PDB per kapita dengan angka harapan hidup? Kita selidiki pertanyaan ini dengan menggunakan tahun 2007.
gapminder |>
mutate(
continent = recode(continent, !!!terjemahan_benua)
) |>
filter(year == 2007) |>
ggplot(
aes(x = gdpPercap, y = lifeExp)
) +
geom_point(
aes(color = continent, size = pop),
alpha = .6
) +
geom_smooth(
method = "loess",
formula = y ~ x,
linewidth = 1,
alpha = .1,
color = "#427D9D"
) +
scale_size(
range = c(1, 20),
guide = "none"
) +
scale_color_viridis_d(name = "Benua") +
theme_minimal() +
theme(legend.position = "bottom") +
labs(
x = "PDB per kapita",
y = "Angka harapan hidup"
)
Berdasarkan Gambar 6, kita dapat melihat bahwa terdapat hubungan antara PDB per kapita dan angka harapan hidup. Semakin tinggi PDB per kapita sebuah negara, semakin tinggi juga angka harapan hidupnya. Secara spesifik, ketika PDB per kapita naik dari 0 sampai 7.500 dolar, laju kenaikan angka harapan hidupnya paling tinggi.
Berdasarkan Gambar 6, kita mengetahui bahwa laju kenaikan angka harapan hidup paling tinggi ketika PDB per kapitanya naik dari 0 sampai 7.500 dolar. Laju kenaikan ini disajikan sebagai gradien model linear yang disajikan pada Gambar 7 berikut.
Kode
gapminder_filter_pdb <- gapminder |>
filter(
year == 2007,
gdpPercap >= 0,
gdpPercap <= 7500
)
model_linear <- lm(
formula = lifeExp ~ gdpPercap,
data = gapminder_filter_pdb
)
gapminder |>
mutate(
continent = recode(continent, !!!terjemahan_benua)
) |>
filter(year == 2007) |>
ggplot(
aes(x = gdpPercap, y = lifeExp)
) +
geom_point(
aes(color = continent, size = pop),
alpha = .6
) +
geom_smooth(
data = gapminder_filter_pdb,
method = "lm",
formula = y ~ x,
linewidth = 1.5,
alpha = .1,
color = "black"
) +
scale_size(
range = c(1, 20),
guide = "none"
) +
scale_color_viridis_d(name = "Benua") +
xlim(0, 50000) +
theme_minimal() +
theme(legend.position = "bottom") +
labs(
x = "PDB per kapita",
y = "Angka harapan hidup"
)
Persamaan garis untuk model linear tersebut ditunjukkan pada Persamaan 1.
\[ \text{lifeExp} = \text{50,89832} + \text{0,003358}\text{gdpPercap} \tag{1}\]
Berdasarkan model tersebut, angka harapan hidup (lifeExp
) naik 0,003358 tahun ketika PDB per kapitanya (gdpPercap
) naik 1 dolar. Dengan kata lain, angka harapan hidup itu secara rata-rata naik sekitar 3,4 tahun ketika PDB per kapitanya naik 1.000 dolar.
Apakah hubungan seperti itu juga terjadi pada tahun-tahun lainnya? Kita selidiki dengan memvisualisasikan data yang serupa, tapi untuk tahun 1987, 1992, 1997, dan 2002. Perhatikan Gambar 8!
gapminder |>
filter(year %in% c(1987, 1992, 1997, 2002)) |>
mutate(
continent = recode(continent, !!!terjemahan_benua)
) |>
ggplot(
aes(x = gdpPercap, y = lifeExp)
) +
geom_point(
aes(color = continent, size = pop),
alpha = .6
) +
geom_smooth(
method = "loess",
formula = y ~ x,
linewidth = 1,
alpha = .1,
color = "#427D9D"
) +
scale_size(
range = c(1, 10),
guide = "none"
) +
scale_color_viridis_d(name = "Benua") +
facet_wrap(
vars(year),
ncol = 2
) +
theme_minimal() +
theme(legend.position = "bottom") +
labs(
x = "PDB per kapita",
y = "Angka harapan hidup"
)
Berdasarkan Gambar 8, kita melihat hubungan yang serupa untuk tahun 1987, 1992, 1997, dan 2002. Semakin tinggi PBD per kapita sebuah negara, semakin tinggi juga angka harapan hidupnya.
Catatan Akhir
Kita telah melihat situasi dunia melalui jendela yang namanya statistik. Hal ini kita lakukan dengan menjelajah dan memvisualisasikan data Gapminder. Pada Bagian 2, kita telah melihat bagaimana tren angka harapan hidup dan PDB per kapita setiap tahunnya. Selain itu, kita juga telah melihat hubungan antara PDB per kapita dan angka harapan hidup untuk tahun 1987, 1992, 1997, 2002, dan 2007.
Apa selanjutnya? Kita mungkin menyadari adanya keterbatasan visualisasi data pada Gambar 6 dan Gambar 8. Pada kedua diagram tersebut, kita belum bisa menyajikan data untuk semua tahun yang tersedia. Bagaimana cara mengatasi keterbatasan ini? Salah satunya, kita dapat menganimasikan hubungan antara PDB per kapita dan angka harapan hidup mulai tahun 1952 sampai 2007.1 Alternatifnya, kita juga dapat membuat sebuah aplikasi interaktif yang memungkinkan pengguna untuk memilih tahun-tahunnya.2 Kedua cara tersebut akan didemonstrasikan pada pos-pos berikutnya. Untuk itu, silakan tunggu terus pembaharuan blog ini!
Catatan Kaki
Animasi dapat dibuat di R dengan menggunakan paket {gganimate}. Pos berikutnya mendemonstrasikan bagaimana menggunakan paket tersebut untuk memvisualisasikan hubungan antara PDB per kapita dan angka harapan hidup dari tahun ke tahun.↩︎
Pos selanjutnya memperlihatkan bagaimana menggunakan aplikasi interaktif ini dengan menggunakan {shiny}.↩︎