Statistik Adalah Jendela Dunia

Statistik dapat digunakan untuk menyingkap fakta-fakta tentang dunia. Secara khusus, statistik dapat dimanfaatkan untuk melihat angka harapan hidup dan PDB per kapita berbagai negara.

statistik dunia
tutorial
visualisasi data
Pengarang
Afiliasi
Terbit

August 5, 2024

Dimodifikasi

August 10, 2024

Kata kunci

Gapminder, harapan hidup, produk domestik bruto, PDB, diagram pencar, diagram garis

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}.

library(tidyverse)
library(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().

load(url("https://github.com/jennybc/gapminder/raw/main/data/gapminder.rdata"))

Setelah kita menjalankan baris kode di atas, kita mendapatkan data dengan nama gapminder. Untuk melihat strukturnya, kita dapat menggunakan fungsi glimpse().

glimpse(gapminder)
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.

Tabel 1: Keterangan variabel-variabel dalam 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().

unique(gapminder$year)
 [1] 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 2002 2007

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)
Gambar 1: Tren angka harapan hidup setiap negara pada tahun 1952 - 2007.

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
  )
Gambar 2: Tren angka harapan hidup setiap negara pada tahun 1952 - 2007, dengan penambahan informasi negara-negara yang angka harapan hidupnya relatif rendah.

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
  )
Gambar 3: Tren angka harapan hidup setiap negara pada tahun 1952 - 2007.

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)
Gambar 4: Tren PDB per kapita setiap negara pada tahun 1952 - 2007.

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: Tren nilai tengah PDB per kapita setiap negara pada tahun 1952 - 2007.

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"
  )
Gambar 6: Hubungan antara PDB per kapita dan angka harapan hidup pada tahun 2007.

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.

Catatan

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"
  )
Gambar 7: Hubungan antara PDB per kapita dan angka harapan hidup pada tahun 2007 ketika PDB per kapitanya di antara 0 dan 7.500 dolar internasional

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"
  )
Gambar 8: Hubungan antara PDB per kapita dan angka harapan hidup pada tahun 1987, 1992, 1997, dan 2002.

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

  1. 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.↩︎

  2. Pos selanjutnya memperlihatkan bagaimana menggunakan aplikasi interaktif ini dengan menggunakan {shiny}.↩︎

Penggunaan Kembali