Latihan Praktikum, Teknik Peubah Ganda - STA1342
Muhammad Hafiz Fazli - G1401231081
Kita memiliki data perdagangan komoditas global (UN) yang tersedia di Kaggle, dengan kolom utama seperti:
country_or_area, year,
comm_code, commodity, flow
(Export/Import), trade_usd, serta category
(kategori komoditas).
Sitasi:
United Nations. (n.d.). Global Commodity Trade Statistics [Data set]. Kaggle. Retrieved December 15, 2025, from https://www.kaggle.com/datasets/unitednations/global-commodity-trade-statistics
Untuk Indonesia, kategori komoditas apa yang “melekat” pada
periode/tahun tertentu (dan sebaliknya), jika dilihat dari komposisi
nilai perdagangannya?
Intinya: apakah ada pergeseran struktur komoditas dari tahun ke
tahun, bukan sekadar naik-turun total nilai.
country_or_area = "Indonesia"flow = "Export"category (ambil
top-5 berdasarkan total trade_usd)year (ambil 5 tahun
terakhir di data)trade_usd
(sum(trade_usd)) untuk setiap kombinasi
category × yearcategory × year.year dan titik categoryyear yang berdekatan → profil komposisi kategori
komoditas miripcategory yang dekat dengan suatu year →
kategori itu relatif lebih dominan pada tahun tersebut dibanding
rata-rata## Warning: package 'readr' was built under R version 4.4.3
path <- "C:/Users/Muhammad Hafiz F/Downloads/commodity_trade_statistics_data.csv"
df <- read_csv(path, show_col_types = FALSE)
df## # A tibble: 8,225,871 × 10
## country_or_area year comm_code commodity flow trade_usd weight_kg
## <chr> <dbl> <chr> <chr> <chr> <dbl> <dbl>
## 1 Afghanistan 2016 010410 Sheep, live Expo… 6088 2339
## 2 Afghanistan 2016 010420 Goats, live Expo… 3958 984
## 3 Afghanistan 2008 010210 Bovine animals, li… Impo… 1026804 272
## 4 Albania 2016 010290 Bovine animals, li… Impo… 2414533 1114023
## 5 Albania 2016 010392 Swine, live except… Impo… 14265937 9484953
## 6 Albania 2016 010511 Fowls, live domest… Impo… 2671732 254652
## 7 Albania 2016 010511 Fowls, live domest… Expo… 87581 5320
## 8 Albania 2016 010519 Poultry, live exce… Impo… 26485 2908
## 9 Albania 2016 010591 Fowls, live domest… Impo… 2421513 1926850
## 10 Albania 2016 010599 Poultry, live exce… Impo… 251318 211177
## # ℹ 8,225,861 more rows
## # ℹ 3 more variables: quantity_name <chr>, quantity <dbl>, category <chr>
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
df_idn_exp <- df %>%
filter(country_or_area == "Indonesia", flow == "Export")
df_idn_exp %>% count(country_or_area, flow)## # A tibble: 1 × 3
## country_or_area flow n
## <chr> <chr> <int>
## 1 Indonesia Export 28625
df_idn_exp %>% summarise(
n_rows = n(),
year_min = min(year, na.rm = TRUE),
year_max = max(year, na.rm = TRUE)
)## # A tibble: 1 × 3
## n_rows year_min year_max
## <int> <dbl> <dbl>
## 1 28625 1989 2016
category × yearlibrary(tidyr)
library(tibble)
# 1) Ambil 5 tahun terakhir (berdasarkan data Indonesia-Export yang ada)
last5_years <- df_idn_exp %>%
summarise(max_year = max(year, na.rm = TRUE)) %>%
pull(max_year) %>%
(\(y) (y - 4):y)()
df_last5 <- df_idn_exp %>%
filter(year %in% last5_years)
# 2) Ambil top-5 category berdasarkan total trade_usd (di 5 tahun terakhir)
top5_cat <- df_last5 %>%
filter(category != "all_commodities") %>% # drop "all_commodities" sebelum ambil top-5
group_by(category) %>%
summarise(total_trade_usd = sum(trade_usd, na.rm = TRUE), .groups = "drop") %>%
arrange(desc(total_trade_usd)) %>%
slice_head(n = 5) %>%
pull(category)
df_top5 <- df_last5 %>%
filter(category %in% top5_cat)
# 3) Tabel kontingensi: baris=category, kolom=year, isi=sum(trade_usd)
cont_tbl <- df_top5 %>%
group_by(category, year) %>%
summarise(trade_usd = sum(trade_usd, na.rm = TRUE), .groups = "drop") %>%
pivot_wider(names_from = year, values_from = trade_usd, values_fill = 0) %>%
arrange(match(category, top5_cat))
# matrix untuk Chi-square / CA (rowname=category)
cont_mat <- cont_tbl %>%
column_to_rownames("category") %>%
as.matrix()
last5_years## [1] 2012 2013 2014 2015 2016
## [1] "27_mineral_fuels_oils_distillation_products_etc"
## [2] "15_animal_vegetable_fats_and_oils_cleavage_products_et"
## [3] "71_pearls_precious_stones_metals_coins_etc"
## [4] "64_footwear_gaiters_and_the_like_parts_thereof"
## [5] "26_ores_slag_and_ash"
## # A tibble: 5 × 6
## category `2012` `2013` `2014` `2015` `2016`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 27_mineral_fuels_oils_distillation_pr… 6.34e10 5.74e10 5.11e10 3.47e10 2.79e10
## 2 15_animal_vegetable_fats_and_oils_cle… 2.33e10 2.11e10 2.36e10 2.06e10 2.07e10
## 3 71_pearls_precious_stones_metals_coin… 2.89e 9 2.75e 9 4.65e 9 5.49e 9 6.37e 9
## 4 64_footwear_gaiters_and_the_like_part… 3.52e 9 3.86e 9 4.11e 9 4.51e 9 4.64e 9
## 5 26_ores_slag_and_ash 5.08e 9 6.54e 9 1.92e 9 3.38e 9 3.57e 9
## 2012 2013
## 27_mineral_fuels_oils_distillation_products_etc 63385110545 57413344503
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 23344188665 21120339786
## 71_pearls_precious_stones_metals_coins_etc 2888507428 2751273080
## 64_footwear_gaiters_and_the_like_parts_thereof 3524592216 3860393881
## 26_ores_slag_and_ash 5082623155 6544111736
## 2014 2015
## 27_mineral_fuels_oils_distillation_products_etc 51133125282 34652205368
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 23593139533 20611270672
## 71_pearls_precious_stones_metals_coins_etc 4648183342 5494813580
## 64_footwear_gaiters_and_the_like_parts_thereof 4108448480 4507024372
## 26_ores_slag_and_ash 1918637694 3378428967
## 2016
## 27_mineral_fuels_oils_distillation_products_etc 27874676922
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 20682787965
## 71_pearls_precious_stones_metals_coins_etc 6368669445
## 64_footwear_gaiters_and_the_like_parts_thereof 4639859302
## 26_ores_slag_and_ash 3567655091
##
## Pearson's Chi-squared test
##
## data: cont_mat
## X-squared = 1.4989e+10, df = 16, p-value < 2.2e-16
## 2012 2013
## 27_mineral_fuels_oils_distillation_products_etc 56571015468 52806972426
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 26384793916 24629239431
## 71_pearls_precious_stones_metals_coins_etc 5344784018 4989160260
## 64_footwear_gaiters_and_the_like_parts_thereof 4980173247 4648809450
## 26_ores_slag_and_ash 4944255361 4615281418
## 2014 2015
## 27_mineral_fuels_oils_distillation_products_etc 49185547845 39534185539
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 22940202378 18438794663
## 71_pearls_precious_stones_metals_coins_etc 4647010980 3735158036
## 64_footwear_gaiters_and_the_like_parts_thereof 4330000929 3480352819
## 26_ores_slag_and_ash 4298772200 3455251902
## 2016
## 27_mineral_fuels_oils_distillation_products_etc 36360741342
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 16958696233
## 71_pearls_precious_stones_metals_coins_etc 3435333582
## 64_footwear_gaiters_and_the_like_parts_thereof 3200981806
## 26_ores_slag_and_ash 3177895762
## 2012 2013
## 27_mineral_fuels_oils_distillation_products_etc 28649.114 20045.34
## 15_animal_vegetable_fats_and_oils_cleavage_products_et -18719.023 -22358.64
## 71_pearls_precious_stones_metals_coins_etc -33597.904 -31682.87
## 64_footwear_gaiters_and_the_like_parts_thereof -20625.960 -11563.37
## 26_ores_slag_and_ash 1967.816 28391.93
## 2014 2015
## 27_mineral_fuels_oils_distillation_products_etc 8781.64705 -24553.285
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 4310.94776 15998.848
## 71_pearls_precious_stones_metals_coins_etc 17.19788 28792.089
## 64_footwear_gaiters_and_the_like_parts_thereof -3366.91816 17402.831
## 26_ores_slag_and_ash -36301.89403 -1306.926
## 2016
## 27_mineral_fuels_oils_distillation_products_etc -44503.069
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 28597.241
## 71_pearls_precious_stones_metals_coins_etc 50046.918
## 64_footwear_gaiters_and_the_like_parts_thereof 25432.100
## 26_ores_slag_and_ash 6913.957
Hasil uji menunjukkan nilai X-squared = 1.4989 × 10¹⁰, df = 16, dengan p-value < 2.2 × 10⁻¹⁶.
Keputusan: Tolak H0.
Kesimpulan: Terdapat hubungan yang signifikan antara kategori komoditas (category) dan tahun (year). Artinya, komposisi ekspor Indonesia menurut kategori komoditas tidak bersifat konstan antar tahun, melainkan mengalami perubahan/ketergantungan pola dari waktu ke waktu. Oleh karena itu, analisis lanjutan menggunakan Analisis Korespondensi (CA) layak dilakukan untuk memetakan asosiasi kategori–tahun serta mengidentifikasi tahun dan kategori yang paling membedakan struktur ekspor.
## Warning: package 'FactoMineR' was built under R version 4.4.3
## Warning: package 'factoextra' was built under R version 4.4.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.4.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
# 1) Run CA
ca_res <- CA(cont_mat, graph = FALSE)
# 2) Lihat eigenvalues / inertia (proporsi variasi tiap dimensi)
ca_res$eig## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 3.116111e-02 8.462916e+01 84.62916
## dim 2 5.604125e-03 1.522001e+01 99.84917
## dim 3 5.552286e-05 1.507922e-01 99.99996
## dim 4 1.373783e-08 3.730999e-05 100.00000
## Dim 1 Dim 2
## 27_mineral_fuels_oils_distillation_products_etc 29.8488925 4.2263945
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 14.9269960 2.0032076
## 71_pearls_precious_stones_metals_coins_etc 43.0628445 0.1268890
## 64_footwear_gaiters_and_the_like_parts_thereof 11.6755747 0.9240877
## 26_ores_slag_and_ash 0.4856922 92.7194212
## Dim 3 Dim 4
## 27_mineral_fuels_oils_distillation_products_etc 0.8575534 7.47387600
## 15_animal_vegetable_fats_and_oils_cleavage_products_et 15.0213277 41.18688765
## 71_pearls_precious_stones_metals_coins_etc 2.9830771 48.38582229
## 64_footwear_gaiters_and_the_like_parts_thereof 79.3815330 2.94863697
## 26_ores_slag_and_ash 1.7565088 0.00477709
## Dim 1 Dim 2 Dim 3 Dim 4
## 2012 21.4117556 0.1991404 37.899723 16.36101
## 2013 16.9066605 30.5483063 16.456177 13.56590
## 2014 0.0239067 62.2830987 3.999974 12.71466
## 2015 15.6295100 0.2068181 22.024236 45.27752
## 2016 46.0281672 6.7626365 19.619889 12.08091
Kecocokan pemetaan 2 dimensi (inertia)
Berdasarkan eigenvalues, Dimensi 1 menjelaskan 84,63% variasi (inertia) dan Dimensi 2 menjelaskan 15,22%. Secara kumulatif, dua dimensi pertama menjelaskan 99,85% variasi total.
Artinya, biplot 2D sudah sangat memadai untuk interpretasi pola asosiasicategory × year.
Interpretasi Dimensi 1 (pola utama)
Dimensi 1 menangkap pergeseran struktur ekspor dari tahun-tahun awal ke tahun-tahun akhir pada periode yang dianalisis.
- Titik tahun 2012–2013 berada di sisi kiri (Dim1 negatif) dan paling dekat dengan kategori 27 (mineral fuels/oils) → menunjukkan bahwa pada 2012–2013, struktur ekspor relatif lebih “fuel-heavy” dibanding pola rata-rata periode.
- Titik tahun 2015–2016 berada di sisi kanan (Dim1 positif) dan lebih dekat dengan kategori 71 (pearls/precious stones/metals), serta juga searah dengan 64 (footwear) dan 15 (animal/vegetable fats & oils) → menunjukkan pada 2015–2016, struktur ekspor relatif bergeser dari dominasi fuels menuju kategori-kategori tersebut.
Kontribusi kategori ke Dimensi 1 juga menegaskan pola bahwa kategori 71 dan 27 adalah pendorong utama Dimensi 1 (kontribusi terbesar), sehingga Dimensi 1 dapat dibaca sebagai sumbu “fuel vs non-fuel (71/64/15)”.
Interpretasi Dimensi 2 (pola sekunder / kejadian spesifik)
Dimensi 2 terutama dipengaruhi oleh kategori 26 (ores, slag and ash):
- Pada kontribusi baris, kategori 26 menyumbang ~92,72% terhadap Dimensi 2 → artinya Dimensi 2 pada dasarnya adalah “sumbu ores”.
- Pada titik tahun, 2013 berada di sisi Dim2 positif (lebih dekat ke kategori 26), sedangkan 2014 berada di sisi Dim2 negatif (berlawanan arah dari kategori 26). Interpretasi ringkasnya: 2013 relatif lebih terkait dengan peningkatan porsi ores (26), sedangkan 2014 relatif menjauh dari ores (26) dibanding pola rata-rata.
Ringkasan asosiasi yang paling menonjol dari biplot
- 2012–2013 ↔︎ 27 (mineral fuels/oils): asosiasi kuat pada awal periode.
- 2016 ↔︎ 71 (pearls/precious stones/metals): asosiasi paling kuat pada akhir periode (posisi paling ekstrem di Dim1).
- 2015–2016 ↔︎ 64 (footwear) dan 15 (fats/oils): ikut menguat pada periode akhir.
- 2013 ↔︎ 26 (ores) (Dim2 positif), sedangkan 2014 cenderung berlawanan arah dengan 26 (ores) (Dim2 negatif).
Secara keseluruhan, CA menunjukkan adanya perubahan struktur ekspor Indonesia: dari kecenderungan “fuel-dominant” (2012–2013) menuju komposisi yang relatif lebih terkait dengan kategori 71/64/15 pada periode akhir (terutama 2016), serta adanya dinamika spesifik pada ores (26) yang terutama membedakan 2013 vs 2014.
Berdasarkan tabel kontingensi category × year
(Indonesia, ekspor, 5 tahun terakhir, top-5
kategori berdasarkan nilai trade_usd), uji
Chi-Square menunjukkan hasil yang sangat signifikan (p-value
< 2.2e-16). Ini menegaskan bahwa komposisi ekspor Indonesia
menurut kategori komoditas berbeda antar tahun (tidak
independen), sehingga terdapat perubahan struktur ekspor dari waktu ke
waktu.
Analisis Korespondensi (CA) memberikan pemetaan yang sangat representatif karena Dimensi 1 (84,63%) dan Dimensi 2 (15,22%) sudah menjelaskan 99,85% variasi total. Biplot CA memperlihatkan pola utama bahwa 2012–2013 berasosiasi kuat dengan kategori 27 (mineral fuels/oils), sedangkan 2015–2016 bergeser ke sisi yang lebih terkait dengan kategori 71 (pearls/precious stones/metals) serta turut searah dengan kategori 64 (footwear) dan kategori 15 (fats & oils).
Dimensi 2 terutama menangkap dinamika spesifik pada kategori 26 (ores, slag and ash), yang membedakan 2013 (lebih dekat ke ores) dan 2014 (cenderung berlawanan arah dari ores).
Secara keseluruhan, hasil ini menunjukkan adanya pergeseran struktur ekspor Indonesia dari pola yang lebih “fuel-dominant” pada awal periode menuju komposisi yang relatif lebih kuat pada kategori non-fuel tertentu di periode akhir, dengan variasi tambahan yang dipengaruhi oleh pergerakan kategori ores pada tahun tertentu.