“EVERYONE DESERVES AN EDUCATION BECAUSE IT IS A HUMAN RIGHT” adalah kalimat yang tepat untuk menggambarkan bahwa kesetaraan dan kesempatan harus dapat dirasakan oleh seluruh umat manusia tak terkecuali pendidikan, namun, tidak semua berasal dari latar belakang yang sama, disini peran pemerintah sangat penting untuk mengatasi masalah sejak dari hulu (latar belakang ekonomi dan/atau sosial) hingga ke hilir (penyerapan tenaga kerja pada dunia professional).
Correspondence Analysis adalah teknik visualisasi data untuk mendapatkan informasi hubungan antara dua atau lebih kategori. Pada kesempatan kali ini, kita akan mencari tahu karakteristik kelulusan pelajar yang melekat ke masing-masing Negara Bagian sehingga dapat ditindaklanjuti dengan tepat.
#data cleaning
#data wrangling
library("dplyr")
library("tibble")
#data analysis
library("FactoMineR")
library("factoextra")
#data visualization
library("ggpubr") #untuk balloonplot
library("graphics") #untuk mosaicplot
library("ggplot2")
library("plotly") #interaktif balloon plot
#data reference
library("datasets")Pada analisa kali ini, saya menggunakan data dari National Center for Education Statistics (NCES) https://nces.ed.gov/ccd/tables/ACGR_RE_and_characteristics_2019-20.asp yang didalamnya terdapat informasi mengenai persentase siswa SMA di Amerika Serikat yang lulus pada tahun ajaran 2019-2020 dengan detail atribut yang meliputi warna kulit, status ekonomi, kemampuan berbahasa serta yang berkebutuhan khusus.
graduation <- readxl::read_xlsx("data/graduation.xlsx")
graduationDengan keterangan sebagai berikut:
State : Negara BagianBlack dan White : skor karakteristik “warna kulit”Economically disadvantaged : skor karakteristik “Ketidakberuntungan Ekonomi/ Kesulitan Ekonomi”English Learner : skor karakteristik “Pelajar Bahasa Inggris”Students with disabilities : skor karakteristik “Pelajar berkebutuhan khusus”Homeless enrolled : skor karakteristik “Pelajar yang tidak memiliki rumah”Foster care : skor karakteristik “Pelajar yang berasal dari rumah yatim piatu”Data tersebut diubah menjadi data table agar dapat digunakan pada fungsi Correspondence Analysis
graduation_table <- graduation %>%
column_to_rownames(var="State")
graduation_tablesummary(graduation_table)## Black White Economically disadvantaged English learner
## Min. :69.00 Min. :82.80 Min. :62.00 Min. :39.00
## 1st Qu.:75.00 1st Qu.:87.80 1st Qu.:75.90 1st Qu.:65.00
## Median :78.90 Median :90.30 Median :79.60 Median :69.00
## Mean :78.98 Mean :89.53 Mean :79.43 Mean :69.04
## 3rd Qu.:84.50 3rd Qu.:92.20 3rd Qu.:85.00 3rd Qu.:76.00
## Max. :88.20 Max. :95.00 Max. :89.80 Max. :89.00
## Students with disabilities Homeless enrolled Foster care
## Min. :55.40 Min. :48.60 Min. :31.00
## 1st Qu.:63.00 1st Qu.:61.00 1st Qu.:50.00
## Median :68.60 Median :66.00 Median :56.00
## Mean :69.95 Mean :66.62 Mean :55.39
## 3rd Qu.:75.00 3rd Qu.:74.00 3rd Qu.:62.00
## Max. :88.10 Max. :88.00 Max. :74.00
Nama State (Negara Bagian) sudah kita jadikan index row sehingga summary hanya ditampilkan untuk setiap kolom yang ada pada data yang merupakan atribut karakteristik. Dikarenakan tujuan analisis kali ini adalah ingin mengidentifikasi karakteristik yang melekat pada tiap Negara Bagian, maka nilai statistik yang menarik untuk diperhatikan adalah nilai maksimum.
Insight:
Terdapat empat atribut karakteristik (English Learner, Students with Disabilities, Homeless Enrolled dan Foster Care) yang skor maksimumnya jauh lebih besar dibanding atribut karakteristik lainnya.
Meskipun fungsi summary memberikan rangkuman data, kita tetap kesulitan untuk menginterpretasikan data. Sehingga kita perlu suatu visualisasi untuk membantu kita menjelaskan data. Dikarenakan data input kita spesial yaitu merupakan tabel kontingensi, maka akan dikenalkan visualisasi khusus untuk tabel kontingensi.
Balloon plot adalah salah satu jenis plot untuk memvisualisasikan data kategorik yang berukuran besar.
Fungsi balloon plot adalah membuat tabel grafis dimana setiap sel menampilkan lingkaran berwarna yang ukurannya mencerminkan besar nilainya.
Secara visual, plot ini dapat menghighlight poin data yang nilainya menonjol ditunjukkan semakin besarnya lingkaran, semakin besar ukuran lingkaran maka semakin besar pula nilai datanya.
my_cols <- c("#0D0887FF", "#6A00A8FF", "#B12A90FF","#E16462FF", "#FCA636FF", "#F0F921FF")
ggballoonplot(graduation_table, fill = "value") +
scale_fill_gradientn(colours = my_cols) +
labs(title = "Balloonplot for State Characteristics") +
theme(plot.title = element_text(hjust = 0.5))# ggplotly(plot1,height = 1200, width = 800)Plot di atas sudah dimodifikasi agar warna lingkaran juga dapat menunjukkan besarnya nilai, yaitu warna kuning menunjukkan nilai yang semakin besar sementara warna navy menunjukkan nilai semakin kecil. Pada ballon plot di atas, dapat diketahui bahwa terdapat beberapa Negara Bagian dengan nilai frekuensi atribut karakteristik yang tinggi dibanding Negara lainnya. Vice Versa.
Dari balloon plot di atas, kita dapat melihat bahwa:
Lulusan sedikit lebih didominasi oleh pelajar berkulit putih
Negara Bagian Colorado, Idaho, Michigan dan New Hampshire relatif menyumbang sangat kecil pelajar yang memiliki karakteristik dari Foster Care
Negara Bagian New York menyumbang sangat kecil pelajar yang mempelajari Bahasa Inggris
Negara Bagian Delaware menyumbang keragaman atribut yang cukup seimbang
Mosaic plot digunakan untuk memvisualisasikan tabel kontingensi dan untuk memeriksa hubungan antara variabel kategori. Untuk setiap sel, tinggi batang sebanding dengan frekuensi relatif yang diamati yang dikandungnya:
\[ \frac{cell.value}{column.sum}\]
Warna pada plot menunjukkan standardized residuals, yang memberikan intuisi signifikansi hubungan. Standardized residuals adalah akar dari statistik Chi-square yang akan dibahas pada section selanjutnya.
Mosaic plot dapat diinterpresaikan sebagai berikut:
# Mosaic plot of observed values
mosaicplot(graduation_table,
las = 2,
shade = T,
off = 25,
main = "Mosaic plot for State Characteristics")Dari mosaic plot di atas, kita dapat melihat bahwa:
Correspondence Analysis (CA) adalah jenis teknik dimentionality reduction yang dapat digunakan untuk memvisualisasikan dan mengeksplorasi hubungan variabel kategorikal dalam sebuah dataset.
Analisis korespondensi (CA) diperlukan untuk tabel kontingensi besar untuk memvisualisasikan titik baris dan titik kolom secara grafis dalam ruang berdimensi dua dimensi.
Plot hasilnya menampilkan:
graduation.ca <- CA(graduation_table, graph = FALSE)
graduation.ca## **Results of the Correspondence Analysis (CA)**
## The row variable has 29 categories; the column variable has 7 categories
## The chi square of independence between the two variables is equal to 102.977 (p-value = 0.9999802 ).
## *The results are available in the following objects:
##
## name description
## 1 "$eig" "eigenvalues"
## 2 "$col" "results for the columns"
## 3 "$col$coord" "coord. for the columns"
## 4 "$col$cos2" "cos2 for the columns"
## 5 "$col$contrib" "contributions of the columns"
## 6 "$row" "results for the rows"
## 7 "$row$coord" "coord. for the rows"
## 8 "$row$cos2" "cos2 for the rows"
## 9 "$row$contrib" "contributions of the rows"
## 10 "$call" "summary called parameters"
## 11 "$call$marge.col" "weights of the columns"
## 12 "$call$marge.row" "weights of the rows"
Dalam menginterpretasikan hasil dari analisis korespondensi, terdapat beberapa output yang dihasilkan yaitu statistik Chi-square, nilai Eigen, komponen baris dan komponen kolom. Selanjutnya, akan dibahas satu per satu terkait output ini.
Uji chi-square adalah sebuah tes statistik yang membantu kita menentukan apakah ada hubungan yang signifikan antara dua variabel kategorik.
Uji ini sering digunakan dalam social science research, studi medis dan bidang lain di mana kita ingin memeriksa hubungan antara variabel.
Sebagai contoh, misalnya kita ingin mengetahui apakah terdapat hubungan yang signifikan antara usia seseorang dengan tingkat merokok. Kita bisa mengumpulkan data dari sekelompok orang dan menggunakan uji chi-square untuk melihat apakah ada perbedaan yang signifikan kelompok usia tertentu dengan tingkat merokoknya.
Uji hipotesis untuk Chi-Square Test adalah sebagai berikut.
Catatan:
Statistik Chi-square yang dihitung ini dibandingkan dengan nilai kritis (diperoleh dari tabel statistik) dengan derajat kebebasan df = ( r − 1 ) ( c − 1 ) dan alpha = 0,05. r adalah jumlah baris dan c adalah jumlah kolom pada tabel kontingensi.
Jika statistik Chi-kuadrat yang dihitung lebih besar dari nilai kritis atau p-value < 0.05, maka kita dapat menyimpulkan bahwa variabel baris dan kolom tidak independen satu sama lain. Sehingga mereka dikatakan terkait atau memiliki hubungan secara signifikan.
Uji hipotesis Chi-Square Test untuk menguji apakah ada perbedaan yang signifikan kelompok usia tertentu dengan tingkat merokoknya.
Catatan: H0 ditolak jika pvalue < 0.05
Kesimpulan: p-value > 0.999 , maka H0 kita gagal tolak, artinya tidak ada hubungan antara Negara Bagian dan atribut personality
Sama seperti di PCA, eigen atau variance juga menunjukkan banyak informasi yang dipertahankan oleh setiap dimensi. Dimensi 1 menjelaskan variansi terbanyak, diikuti oleh dimensi 2 dan seterusnya. Pada summary graduation.ca kita dapat memanggil nilai eigen dengan $eig.
graduation.ca$eig## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.0030475075 43.678769 43.67877
## dim 2 0.0019539062 28.004596 71.68337
## dim 3 0.0009356291 13.410018 85.09338
## dim 4 0.0006744599 9.666778 94.76016
## dim 5 0.0002193719 3.144174 97.90433
## dim 6 0.0001462165 2.095665 100.00000
Pada data graduation saat menggunakan 2 dimensi, CA berhasil merangkum data kita sebesar 71.68%
Komponen fungsi graduation.ca$row berisi:
$coord: koordinat setiap titik baris pada setiap dimensi (1,2,dst). Digunakan untuk membuat plot.$cos2: kualitas representasi baris.$contrib: kontribusi baris (dalam %) terhadap definisi dimensi.CA menghasilkan koordinat baru untuk variabel baris pada dimensi baru, yang dapat dipanggil dengan $coord.
#Ditampilkan hanya 5 Negara Bagian untuk memperingkas tampilan.
head(graduation.ca$row$coord, 5)## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Alabama -0.033380129 0.035487857 -0.023100410 -0.013008876 0.0192904200
## Alaska 0.001180289 0.009298571 -0.011927322 -0.046792397 0.0024739898
## Arizona -0.017641217 -0.054904027 0.059999546 -0.004905556 0.0147285732
## Arkansas 0.039177234 0.048321216 0.008950018 0.015691435 -0.0004491340
## California -0.006296293 0.020939341 -0.014327178 0.008465513 -0.0007968192
Gunakan fungsi fviz_ca_row() [in factoextra] untuk memvisualisasikan hanya titik baris:
fviz_ca_row(graduation.ca, repel = TRUE)Kita dapat mengidentifikasi kesamaan atau ketidaksamaan dalam kategori baris dengan memperhatikan jarak antar titik koordinat baris.
Sehingga, berdasarkan plot titik koordinat baris insight yang didapatkan adalah:
CA dapat merangkum data dan memvisualisasikannya dalam plot dua dimensi. Perhatikan bahwa dua dimensi baru (dimensi 1 & 2) dapat mempertahankan 71.68% dari variasi yang terkandung dalam data. Namun, tidak semua titik data ditampilkan dengan sama baiknya dalam dua dimensi. Kualitas representasi baris pada peta faktor disebut cosinus kuadrat (cos2). \[cos2 = \frac{row.coord^2}{d^2}\] dengan row.coord adalah koordinat baris pada sumbu \(d^2\) adalah jarak kuadrat dari rata-rata profil baris.
head(graduation.ca$row$cos2)## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Alabama 0.3208277048 0.36262303 0.15365093 0.048727638 1.071468e-01
## Alaska 0.0005477674 0.03399787 0.05593777 0.860933906 2.406662e-03
## Arizona 0.0413277017 0.40030644 0.47805747 0.003195661 2.880750e-02
## Arkansas 0.3553169804 0.54053539 0.01854369 0.056999851 4.669822e-05
## California 0.0471891564 0.52191335 0.24433953 0.085305878 7.557741e-04
## Colorado 0.3295693941 0.62678571 0.01877245 0.010489489 1.006951e-02
Catatan:
Nilai cos2 adalah 0 sampai 1
Jika kategori baris terwakili dengan baik oleh dua dimensi, jumlah dari cos2 mendekati 1
Berikut divisualisasikan nilai cos2 untuk masing-masing Negara Bagian. Semakin oranye warna suatu Negara Bagian, semakin bagus kualitas representasi suatu Negara Bagian tersebut pada plot CA.
# Color by cos2 values: quality on the factor map
fviz_ca_row(graduation.ca, col.row = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE,
title="Row Poins based on Their Quality Cos2")Note: semakin dekat suatu titik koordinat dengan pusat kuadran, biasanya semakin sedikit informasi yang diperoleh. Sehingga umumnya titik koordinat yang jauh dari kuadran yang memiliki banyak insight
Variabel baris dengan nilai yang lebih besar, berkontribusi paling besar terhadap definisi dimensi. Baris yang paling berkontribusi pada Dim.1 dan Dim.2 adalah yang paling penting dalam menjelaskan variabilitas dalam kumpulan data.
#Pengambilan hanya 5 data teratas hanya untuk kepentingan meringkas tampilan.
head(graduation.ca$row$contrib)## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Alabama 1.357023946 2.3922806 2.1168588 0.9312786 6.295913228
## Alaska 0.001454745 0.1408262 0.4838792 10.3311634 0.088791155
## Arizona 0.306721525 4.6337934 11.5564424 0.1071648 2.970109247
## Arkansas 1.955633220 4.6401996 0.3324365 1.4175350 0.003570555
## California 0.045073366 0.7775302 0.7601732 0.3681674 0.010028446
## Colorado 6.762571461 20.0597339 1.2546630 0.9725411 2.870365634
Besar kontribusi variabel baris pada dimensi 1 dan 2 dapat dilihat dengan visualisasi berikut:
# Contributions of rows to dimension 1
fviz_contrib(graduation.ca, choice = "row", axes = 1)# Contributions of rows to dimension 2
fviz_contrib(graduation.ca, choice = "row", axes = 2)Insight:
Interpretasi untuk komponen kolom sama persis dengan komponen baris.
Komponen fungsi graduation-ca$col berisi:
$coord: koordinat setiap titik kolom pada setiap dimensi (1,2,dst). Digunakan untuk membuat plot.$cos2: kualitas representasi kolom.$contrib: kontribusi kolom (dalam %) terhadap definisi dimensi.# Koordinat kolom
head(graduation.ca$col$coord)## Dim 1 Dim 2 Dim 3 Dim 4
## Black -0.02694753 -0.031162726 -0.001803787 -0.01846495
## White -0.03379917 -0.054668035 -0.001439753 -0.01828960
## Economically disadvantaged -0.01047897 -0.016735097 -0.004384464 0.01904894
## English learner 0.11856755 0.023156333 -0.012581688 -0.02912370
## Students with disabilities 0.03262476 0.001175325 0.061467729 0.03102843
## Homeless enrolled -0.00239575 0.021551945 -0.053284101 0.03966462
## Dim 5
## Black 0.0220179065
## White -0.0217767766
## Economically disadvantaged 0.0171858717
## English learner -0.0007318496
## Students with disabilities -0.0053372382
## Homeless enrolled -0.0086446672
# Kualitas representasi tiap kategori kolom pada plot 2 dimensi
head(graduation.ca$col$cos2)## Dim 1 Dim 2 Dim 3 Dim 4
## Black 0.257760741 0.3447067724 0.001154914 0.12102505
## White 0.230350457 0.6026207115 0.000417978 0.06745053
## Economically disadvantaged 0.070698512 0.1803141191 0.012376740 0.23362267
## English learner 0.900620857 0.0343518285 0.010141172 0.05433799
## Students with disabilities 0.180905188 0.0002347861 0.642171039 0.16363488
## Homeless enrolled 0.001134624 0.0918209917 0.561260307 0.31101093
## Dim 5
## Black 1.720802e-01
## White 9.562343e-02
## Economically disadvantaged 1.901588e-01
## English learner 3.431263e-05
## Students with disabilities 4.841607e-03
## Homeless enrolled 1.477289e-02
# Kontribusi tiap kategori kolom ke dimensi CA
head(graduation.ca$col$contrib)## Dim 1 Dim 2 Dim 3 Dim 4
## Black 3.69775916 7.71281211 0.05396503 7.844870
## White 6.59461929 26.90827087 0.03897581 8.725186
## Economically disadvantaged 0.56236030 2.23704747 0.32066510 8.396688
## English learner 62.57900025 3.72286738 2.29517497 17.059991
## Students with disabilities 4.80019745 0.00971676 55.50087665 19.618807
## Homeless enrolled 0.02465356 3.11179228 39.72216486 30.534570
## Dim 5
## Black 34.29388767
## White 38.03022162
## Economically disadvantaged 21.01283687
## English learner 0.03312108
## Students with disabilities 1.78468478
## Homeless enrolled 4.45920072
Seperti titik baris, titik kolom juga dapat diwarnai berdasarkan kualitas representasinya pada plot CA yang ditunjukkan nilai cos2:
fviz_ca_col(graduation.ca, col.col = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE)Note: semakin dekat suatu titik koordinat dengan pusat kuadran, biasanya semakin sedikit informasi yang diperoleh. Sehingga umumnya titik koordinat yang jauh dari kuadran yang memiliki banyak insight
Sementara itu, untuk memvisualisasikan kontribusi kolom ke dua dimensi pertama:
# Contributions of columns to dimension 1
fviz_contrib(graduation.ca, choice = "col", axes = 1)# Contributions of columns to dimension 2
fviz_contrib(graduation.ca, choice = "col", axes = 2)Insight:
Plot standar analisis korespondensi adalah biplot simetris di mana baris (titik biru) dan kolom (segitiga merah) direpresentasikan dalam ruang yang sama menggunakan koordinat baru.
Biplot pada CA artinya gabungan dua plot, yaitu plot untuk variabel baris dan plot untuk variabel kolom. Koordinat pada biplot CA mewakili profil baris dan kolom. Biplot CA di R dapat diperoleh menggunakan fungsi fviz_ca_biplot(ca objek, repel = TRUE)
fviz_ca_biplot(graduation.ca, repel = TRUE)Berikut adalah beberapa poin yang perlu diperhatikan dalam menginterpretasi biplot CA:
CA() sudah secara otomatis melakukan scaling.arrow untuk menampilkan panah baris dan kolom pada biplot.fviz_ca_biplot(graduation.ca, repel = TRUE, arrows = c(TRUE, TRUE))Cara interpretasi hubungan dari kategori baris dan kategori kolom:
Dengan demikian, berdasarkan profil baris (personality), berikut adalah pemetaan untuk data State and Personality:
Correspondence Analysis memberikan hasil visualisasi yang mudah diinterpretasi sehingga kita dengan mudah menemukan asosiasi dari dua kategori variabel. CA dapat membantu kita mendefinisikan atribut karakteristik (variabel kolom) dari suatu Negara Bagian (variabel baris) serta mempetakannya sesuai dengan masing-masing Negara Bagian. Jika dibandingkan dengan ballon plot dan mosaicplot, ada beberapa hasil pemetaan yang sama. Namun, CA memberikan hasil pemetaan yang lebih kuat dengan memvisualisasikan hubungan kedua variabel pada biplot.
Setelah mengetahui pemetaan atribut karakteristik untuk masing-masing Negara Bagian, pemerintah negara setempat dapat menyesuaikan kebijakan untuk masyarakatnya diantaranya :
Membantu pengadaan tempat tinggal (untuk mengatasi Homeless) atau membuka lapangan kerja sehingga mereka dapat menyewa/ membeli rumah,
Mengurangi angka disabilitas dengan meningkatkan standard kualitas hidup(untuk mengatasi Students with Disabilities) semisal gizi yang baik dan penyuluhan akan pentingnya gizi seimbang untuk tumbuh kembang anak,
Memperbaiki ekonomi negara secara keseluruhan(untuk mengatasi Economy Disadvantage),
Memperbaiki kualitas hidup keluarga (untuk mengatasi Foster Care).