Correspondence Analysis adalah teknik statistik yang telah banyak digunakan dalam market research untuk memahami hubungan antara Brand Personality dan persepsi konsumen. Dengan analisis korespondensi, diperoleh plot yang menunjukkan interaksi dua variabel kategorik bersama yaitu variabel nama brand dan variabel brand personality. Sehingga dapat diketahui personality yang melekat dari masing-masing brand.
Untuk dapat mengikuti materi ini, peserta diharapkan sudah menginstall beberapa packages di bawah ini. Apabila package tersebut belum terinstall, silahkan jalankan chunk atau baris kode di bawah ini. Apabila sudah ter-install, lewati chunk tersebut dan muat package yang dibutuhkan dengan menjalankan chunk selanjutnya.
# install.packages(c("FactoMineR","factoextra", "dplyr", "ggpubr", "graphics", "ggplot2", "datasets"))## Warning: package 'dplyr' was built under R version 4.2.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
## Warning: package 'FactoMineR' was built under R version 4.2.3
## Warning: package 'factoextra' was built under R version 4.2.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.2.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
## Warning: package 'ggpubr' was built under R version 4.2.3
Dalam pembuatan report LBB ini, kami juga sudah menyediakan sebuah
data yang dapat digunakan yaitu graduation.csv. Data
tersebut merupakan data dari National Center for Education Statistics
(NCES) yang memberikan informasi mengenai persentase siswa SMA di
Amerika Serikat yang lulus pada tahun ajaran 2019-2020, berdasarkan
karakteristik seperti etnis, status miskin, bahasa Inggris sebagai
bahasa kedua, dan kecacatan. Data tersebut dapat digunakan untuk
memahami tingkat kelulusan siswa di Amerika Serikat dan perbedaan dalam
tingkat kelulusan di antara kelompok-kelompok tersebut
Deskripsi tiap kolomnya dapat dilihat pada link berikut
# Ubah file xlsx ke csv agar bisa menggunakan function row.names
library(readr)
write_csv(graduation, "data/graduation.csv")## Rows: 29
## Columns: 8
## $ State <chr> "Alabama", "Alaska", "Arizona", "Arkansas",…
## $ Black <dbl> 88.2, 74.0, 71.7, 84.5, 76.9, 76.6, 80.0, 8…
## $ White <dbl> 92.2, 84.4, 83.0, 90.9, 87.9, 86.1, 93.4, 9…
## $ Economically.disadvantaged <dbl> 85.5, 72.3, 73.6, 86.2, 81.2, 72.3, 80.6, 8…
## $ English.learner <dbl> 72.0, 68.0, 55.2, 84.4, 69.1, 70.2, 67.0, 7…
## $ Students.with.disabilities <dbl> 68.9, 59.0, 66.2, 84.1, 68.4, 61.8, 68.1, 7…
## $ Homeless.enrolled <dbl> 74.0, 58.0, 48.6, 78.0, 69.7, 56.7, 65.0, 7…
## $ Foster.care <dbl> 67.0, 54.0, 45.0, 65.0, 58.2, 31.0, 47.0, 7…
Deskripsi Kolom
Tabel kontingensi atau cross-tabulation adalah tabel yang berisi nilai frekuensi/kemunculan suatu kategori data. Correspondence Analysis memerlukan input yang disebut sebagai tabel kontingensi. Tabel kontingensi terdiri dari baris dan kolom, dengan setiap baris mewakili kategori dari variabel pertama, dan setiap kolom mewakili kategori dari variabel kedua.
Tabel di atas bukan merupakan tabel kontingensi, karena tabel kontingensi seharusnya punya index kolom dan index baris, sementara graduation belum memiliki index baris (index baris menjadi isi dari suatu kolom)
Untuk membuat graduation menjadi tabel kontingensi, kolom State akan dijadikan indeks baris. Sehingga index baris pada tabel menunjukkan variabel State dan index kolom menunjukkan atribut graduation.
# Assign nilai dari kolom brand menjadi index baris
rownames(graduation_df) <- graduation_df$State
graduation_df# Membuang kolom yang tidak digunakan
graduation_table <- graduation_df %>%
select(-State)
graduation_tableKita dapat dengan cepat memperoleh rangkuman dari data kita yang berisi five number summary menggunakan fungsi summary() di R.
## 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
Insight : - Secara umum tingkat kelulusan, range masyarakat ras kulit
putih lebih tinggi dari kulit hitam. - Diantara semua kolom, kolom
English.learner yang memiliki range atau terbesar dari (39
hingga 89 poin)
Kesimpulan : Terdapat beberapa negara yang berhasil memiliki tingkat kelulusan yang tinggi dan ada pula yang rendah.
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. Prinsip dasar pada ballon plot, 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 Brand Personalites") +
theme(plot.title = element_text(hjust = 0.5))Dari balloon plot di atas, kita dapat melihat bahwa:
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:
Formula: mosaicplot() dengan parameter:
datalas: style of axis label (1/2)shade = T -> colour gradientoff: spacing of cellmain: title of plot# Mosaic plot of observed values
mosaicplot(graduation_table,
las = 2,
shade = T,
off = 25,
main = "Mosaic plot for brand personalities")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:
Misal kita ingin menganalisis apakah terdapat hubungan antara tipe pekerjaan rumah dengan role keluarga. CA akan menghasilkan plot berikut untuk menunjukkan hubungan dari kedua variabel tersebut.
Untuk melakukan CA, dapat digunakan fungsi CA() dari package factomineR
CA(X, ncp = 5, graph = TRUE)
Keterangan:
## **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"
Untuk menginterpretasikan CA, perlu dilakukan uji chi square untuk memeriksa hubungan antara variabel baris dan kolom.
Dengan rumusan hipotesis sebagai berikut.
H0 : Tidak ada hubungan antara brand dan personality (independen) H1 : Ada hubungan antara brand dan personality (dependen) Catatan: H0 ditolak jika pvalue < 0.05
Kesimpulan: p-value = 0.99999 maka H0 diterima, artinya Tidak ada hubungan antara State dan Atribut Graduation. Meskipun demikian proses tetap saya lakukan sebagai bahan mempelajari alur CA dengan baik.
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
brand.ca kita dapat memanggil nilai eigen dengan $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
Note : Pada data brand, menggunakan 2 dimensi CA berhasil merangkum data kita sebesar 71.68337%
Komponen fungsi brand-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.
## Dim 1 Dim 2 Dim 3 Dim 4
## Alabama -0.033380129 0.035487857 -0.0231004098 -0.013008876
## Alaska 0.001180289 0.009298571 -0.0119273222 -0.046792397
## Arizona -0.017641217 -0.054904027 0.0599995460 -0.004905556
## Arkansas 0.039177234 0.048321216 0.0089500180 0.015691435
## California -0.006296293 0.020939341 -0.0143271783 0.008465513
## Colorado 0.081789722 -0.112793699 -0.0195202699 -0.014591585
## Connecticut 0.006705500 -0.053733032 -0.0082156321 0.004238630
## Delaware -0.026698651 0.074440852 -0.0011063594 -0.026446954
## District of Columbia -0.063009152 -0.026114661 -0.0017156639 -0.064008073
## Florida 0.059510646 0.013828570 -0.0090048090 0.024623187
## Idaho 0.035503017 -0.053936563 -0.0345313298 0.005821739
## Indiana 0.041453813 0.061116383 -0.0405998850 0.021955984
## Iowa 0.006455232 0.035231870 -0.0073723352 0.010506443
## Kansas 0.049078253 0.038840504 0.0296281957 -0.011947289
## Louisiana -0.079336938 -0.021430735 0.0084420700 0.045427187
## Maine 0.059366115 -0.003456203 0.0195358582 -0.030076882
## Maryland -0.055496133 -0.058737653 0.0016422089 0.019233483
## Massachusetts -0.012879272 -0.006647125 0.0294525767 -0.007899921
## Michigan 0.073690377 -0.047724953 -0.0362212450 -0.025352076
## Mississippi -0.082035520 0.026872484 -0.0733852322 -0.010422522
## Montana -0.049622575 0.068128351 0.0492951688 -0.015745581
## Nebraska -0.080023543 -0.025515027 0.0067967163 0.018977833
## Nevada 0.049805539 0.011356855 -0.0532601035 0.028590036
## New Hampshire 0.035634201 -0.062446150 0.0359616925 0.003151724
## New Jersey 0.013563402 -0.015473045 0.0088631743 0.027345863
## New York -0.152704852 -0.027540877 0.0103404996 0.028347944
## Oklahoma 0.080907302 0.040942866 0.0591061976 0.027756297
## Pennsylvania 0.001199766 0.004802213 0.0003157092 0.016820113
## Rhode Island -0.009975332 0.002882903 0.0082477980 -0.054065802
## Dim 5
## Alabama 0.0192904200
## Alaska 0.0024739898
## Arizona 0.0147285732
## Arkansas -0.0004491340
## California -0.0007968192
## Colorado 0.0142964913
## Connecticut 0.0009630815
## Delaware 0.0086622977
## District of Columbia -0.0479030319
## Florida 0.0062754801
## Idaho -0.0070844686
## Indiana -0.0052067782
## Iowa -0.0109092589
## Kansas -0.0076029371
## Louisiana 0.0055753554
## Maine 0.0173300830
## Maryland 0.0084349967
## Massachusetts 0.0026475175
## Michigan -0.0114578756
## Mississippi 0.0316641387
## Montana -0.0139720319
## Nebraska -0.0097766683
## Nevada -0.0251941731
## New Hampshire -0.0031520206
## New Jersey 0.0003933418
## New York -0.0033374173
## Oklahoma 0.0103317675
## Pennsylvania -0.0181370234
## Rhode Island 0.0155990827
Gunakan fungsi fviz_ca_row() [in factoextra] untuk memvisualisasikan hanya titik baris:
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.68337% 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.
## 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 brand. Semakin oranye warna suatu brand, semakin bagus kualitas representasi suatu brand 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.
## 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:
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.## 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
## 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
## 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)Sementara itu, untuk memvisualisasikan kontribusi kolom ke dua dimensi pertama:
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)
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.Cara interpretasi hubungan dari kategori baris dan kategori kolom:
Dengan demikian, berdasarkan profil baris (personality), berikut adalah pemetaan untuk data brand personality: