1 Background

Istilah “brand personality” merujuk pada karakteristik sifat manusia yang berkaitan dengan nama suatu brand. Perusahaan akan berusaha meningkatkan keuntungannya dengan cara memiliki seperangkat sifat konsisten yang disukai oleh target segmen konsumennya. Seperangkat sifat inilah yang disebut sebagai brand personality. Brand personality menciptakan identitas dan reputasi brand di benak konsumen yang menjadikan suatu brand “kuat” personanya. Perusahaan sebaiknya mendefinisikan brand personality mereka sehingga dapat menyasar konsumen atau pasar yang tepat untuk memaksimumkan profitnya. Brand personality juga menjadi sangat penting di tengah era digital ini dengan adanya artificial intellegent dan otomatisasi. Dengan demikian, pemetaan untuk brand personality dari tiap perusahaan dapat digunakan untuk evaluasi dan merumuskan strategi brand positioning.

Salah satu metode yang sering digunakan untuk pemetaan brand personality adalah Correspondence Analysis. Dengan analisis korespondensi, dibuat 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 suatu perusahaan.

1.1 Analysis Objective

Untuk menemukan personality yang melekat pada masing-masing brand menurut konsumen, serta untuk melihat nama brand apa saja yang memiliki kesamaan dalam hal personality nya.

2 Load R Packages

#install.packages(c("FactoMineR", "factoextra"))
library("FactoMineR")
library("factoextra")
library("dplyr")
library("gplots") #untuk ballonplot
library("graphics") #untuk mosaicplot

3 Theory

Asosiasi antara Baris dan Kolom

Tabel kontingensi adalah tabel yang merangkum frekuensi bersama dari observasi pada setiap kategori variabel. Jika tabel kontingensi berukuran kecil, maka mudah untuk menginterpretasikannya. Akan tetapi jika tabel kontingensi yang lebih besar rumit untuk ditafsirkan secara visual dan beberapa metode diperlukan untuk membantu proses ini. Metode statistik yang dapat digunakan untuk mengecek asosiasi tabel kontingensi salah satunya dapat dilakukan dengan uji chi square dan analisis korespondensi.

3.1 Uji Chi Square

Uji Chi-Square digunakan untuk menguji apakah baris dan kolom dari tabel kontingensi secara statistik berhubungan secara signifikan.

  • \(H_0\) : Variabel baris dan kolom dari tabel kontingensi adalah independen
  • \(H_1\) : Variabel baris dan kolom adalah dependen

Untuk sel tertentu, nilai yang diharapkan dihitung sebagai berikut: \[E_i=\frac{row.sum * col.sum}{grand.total}\] Statistik Chi square dihitung sebagai berikut: \[χ^2= \frac{(O_i - E_i)^2}{E_i}\] keterangan:

  • χ2 = Statistik Chi-square
  • Oi = Nilai observasi (pengamatan) ke-i
  • Ei = Nilai ekspektasi ke-i

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, maka kita dapat menyimpulkan bahwa variabel baris dan kolom tidak independen satu sama lain. Sehingga mereka dikatakan terkait atau memiliki hubungan secara signifikan.

3.2 Correspondence Analysis

Analisis korespondensi (CA) diperlukan untuk tabel kontingensi besar untuk memvisualisasikan titik baris dan titik kolom secara grafis dalam ruang berdimensi rendah. CA adalah metode reduksi dimensi yang diterapkan pada tabel kontingensi. Informasi yang dipertahankan oleh setiap dimensi disebut nilai eigen. Total informasi (atau inersia) yang terkandung dalam data disebut phi (\(ϕ^2\)) dan dapat dihitung sebagai berikut: \[ϕ^2=\frac{χ^2}{grand.total}\] Untuk dimensi tertentu, nilai eigen dihitung sebagai berikut: \[\lambda = \sum\frac{row.sum}{grand.total}*row.coord^2 = \sum\frac{col.sum}{grand.total}*col.coord^2\]

row.coord dan col.coord adalah koordinat variabel baris dan kolom pada dimensi.

3.2.1 CA: Singular value decomposition of the standardized residuals

Analisis korespondensi (CA) digunakan untuk merepresentasikan secara grafis tabel jarak antar variabel baris atau antar variabel kolom. Pendekatan CA mencakup langkah-langkah berikut:

  1. Hitung standardized residuals (S) \[S = \frac{O - E}{\sqrt{E}}\] Standardized residuals adalah akar dari statistik \(χ^2\).

  2. Hitung SVD dari standardized residuals

Misalkan matriks M adalah \[M = \frac{S}{\sqrt{grand.total}}\] Istilah SVD artinya mencari matriks ortogonal U dan V, bersama dengan matriks diagonal D dari matriks M sedemikian sehingga: \[M = UDV^T\] (Phillip M.Yelland, 2010)

  • U adalah matriks yang mengandung vektor eigen baris
  • D adalah matriks diagonal. Angka-angka pada diagonal matriks disebut nilai singular (\(\delta\)). Nilai eigen adalah nilai singular dikuadratkan, \(\lambda=\delta^2\).
  • V adalah matriks yang berisi vektor eigen kolom

Koordinat variabel baris pada sumbu tertentu adalah: \[row.coord = \frac{U * \delta}{\sqrt{row.sum/grand.total}}\] Koordinat variabel kolom pada sumbu tertentu adalah: \[col.coord = \frac{V * \delta}{\sqrt{col.sum/grand.total}}\]

4 Data

Data yang digunakan pada analisis ini didapat dari paper milik Jack Hoare & Tim Bock (2019). Data tersebut merupakan sebuah tabel kontingensi untuk 28 brand dan 15 atribut personality. Data dikumpulkan menggunakan metode nonprobability sampling dari 3173 orang dewasa di Australia pada tahun 2005. Responden diminta untuk menentukan tiga atribut personality untuk setiap brand yang ditunjukkan. Untuk setiap atribut personality, responden ditunjukkan 10 brand.

4.1 Loading Data

Pada data awal, terdapat 16 kolom dengan 1 kolom berisi nama-nama brand (“Brand”) dan 15 kolom lainnya merupakan atribut-atribut personality.

data_brand <- readxl::read_excel("brand.xlsx")
data_brand <- as.data.frame(data_brand)

Nilai kolom brand dijadikan sebagai index row untuk memudahkan visualisasi. selanjutnya kolom “Brand” dibuang. Berikut adalah 6 baris pertama dari data:

# meng-assign nilai dari kolom brand menjadi rownames
rownames(data_brand) <- data_brand$Brand

# membuang kolom yang tidak digunakan
data_brand <- data_brand %>% 
  select(-Brand)
head(data_brand)

Deskripsi kolom data:

  • charming : skor atribut/personality “menarik”
  • cheerful : skor atribut/personality “ceria”
  • daring : skor atribut/personality “berani”
  • down_to_earth : skor atribut/personality “bersahaja”
  • honest : skor atribut/personality “jujur”
  • imaginative : skor atribut/personality “imajinatif”
  • intelligent : skor atribut/personality “cerdas”
  • outdoorsy : skor atribut/personality “tipe luar ruangan”
  • reliable : skor atribut/personality “dapat diandalkan”
  • spirited : skor atribut/personality “bersemangat”
  • successful : skor atribut/personality “sukses”
  • tough : skor atribut/personality “tangguh”
  • up_to_date : skor atribut/personality “terkini”
  • upper_class : skor atribut/personality “kelas sosial atas”
  • wholesome : skor atribut/personality “sehat/baik”

5 Exploratory Data Analysis

Sebelum melakukan analisis, kita harus mengenali data yang akan kita gunakan yaitu data brand yang berisi nama brand dan atribut-atribut personality-nya. Langkah ini disebut juga sebagai Exploratory Data Analysis. Kita dapat dengan cepat memperoleh rangkuman dari data kita yang berisi five number summary menggunakan fungsi summary() di R.

summary(data_brand)
#>     charming        cheerful         daring      down_to_earth  
#>  Min.   : 7.00   Min.   : 9.00   Min.   : 6.00   Min.   : 5.00  
#>  1st Qu.:12.00   1st Qu.:22.00   1st Qu.:11.00   1st Qu.:14.00  
#>  Median :20.00   Median :27.00   Median :20.00   Median :24.00  
#>  Mean   :24.72   Mean   :31.48   Mean   :24.24   Mean   :26.52  
#>  3rd Qu.:33.00   3rd Qu.:43.00   3rd Qu.:32.00   3rd Qu.:35.00  
#>  Max.   :59.00   Max.   :64.00   Max.   :76.00   Max.   :68.00  
#>      honest       imaginative     intelligent      outdoorsy        reliable   
#>  Min.   : 6.00   Min.   :11.00   Min.   : 5.00   Min.   : 2.00   Min.   : 9.0  
#>  1st Qu.:18.00   1st Qu.:17.00   1st Qu.:15.00   1st Qu.:11.00   1st Qu.:30.0  
#>  Median :27.00   Median :29.00   Median :24.00   Median :22.00   Median :41.0  
#>  Mean   :29.14   Mean   :31.66   Mean   :30.93   Mean   :30.21   Mean   :42.9  
#>  3rd Qu.:38.00   3rd Qu.:43.00   3rd Qu.:44.00   3rd Qu.:48.00   3rd Qu.:55.0  
#>  Max.   :56.00   Max.   :62.00   Max.   :75.00   Max.   :87.00   Max.   :82.0  
#>     spirited    successful        tough         up_to_date     upper_class   
#>  Min.   : 7   Min.   :17.00   Min.   : 4.00   Min.   :19.00   Min.   : 3.00  
#>  1st Qu.:16   1st Qu.:37.00   1st Qu.:12.00   1st Qu.:29.00   1st Qu.: 9.00  
#>  Median :24   Median :48.00   Median :20.00   Median :37.00   Median :33.00  
#>  Mean   :27   Mean   :47.38   Mean   :26.38   Mean   :38.48   Mean   :32.48  
#>  3rd Qu.:35   3rd Qu.:56.00   3rd Qu.:36.00   3rd Qu.:51.00   3rd Qu.:40.00  
#>  Max.   :64   Max.   :83.00   Max.   :79.00   Max.   :78.00   Max.   :94.00  
#>    wholesome    
#>  Min.   : 6.00  
#>  1st Qu.:16.00  
#>  Median :23.00  
#>  Mean   :25.66  
#>  3rd Qu.:29.00  
#>  Max.   :80.00

Dikarenakan tujuan analisis kali ini adalah ingin mengidentifikasi atribut personality yang melekat pada tiap brand, maka nilai statistik yang menarik untuk diperhatikan adalah nilai maksimum. karena nama brand sudah kita jadikan index row, maka summary hanya ditampilkan untuk setiap kolom yang ada pada data yang merupakan atribut personality. Dari summary, sekilas kita bisa mendapatkan bahwa:

  • terdapat brand yang dikenal “charming” dengan perolehan suara maksimum sebanyak 59
  • terdapat brand yang dikenal “cheerful” dengan perolehan suara maksimum sebanyak 64
  • terdapat brand yang dikenal “upper_class” dengan perolehan suara maksimum sebanyak 94
  • terdapat brand yang dikenal “wholesome” dengan perolehan suara maksimum sebanyak 80

Dari summary, kita bisa mendapatkan bahwa ada beberapa atribut personality yang nilai maksimumnya sangat tinggi dibanding atribut lainnya. Sepertinya, semakin tinggi nilai maksimum untuk suatu atribut personality pada suatu brand maka semakin yakin suara dari para responden.

5.1 Ballon plot

Ballon plot adalah salah satu jenis plot untuk memvisualisasikan data kategorik yang berukuran besar. Fungsi balloon plot membuat tabel grafis di mana setiap sel menampilkan lingkaran berwarna yang ukurannya mencerminkan besar nilainya. Secara visual, plot ini dapat menghighlight poin data yang nilainya menonjol, dengan mempertahankan detail dari datanya. Pada ballon plot, semakin besar ukuran lingkaran maka semakin besar pula nilai datanya.

library(ggpubr)
my_cols <- c("#0D0887FF", "#6A00A8FF", "#B12A90FF","#E16462FF", "#FCA636FF", "#F0F921FF")
ggballoonplot(data_brand, fill = "value")+
   scale_fill_gradientn(colors = my_cols) +
  labs(title = "Ballon Plot for Brand Personalities") +
  theme(plot.title=element_text(hjust=0.5))

Plot di atas sudah dimodifikasi agar warna lingkaran juga dapat menunjukkan besarnya nilai, yaitu warna kuning menunjukkan nilai yang semakin besar sementara warna ungu menunjukkan nilai semakin kecil. Pada ballon plot di atas, dapat diketahui bahwa terdapat beberapa brand dengan nilai frekuensi atribut yang tinggi dibanding brand lainnya. Contohnya adalah sebagai berikut:

  • Brand Mercedes, Porsche dan Calvin Klein Perfume sangat tinggi nilainya di atribut upper class, yang ditandai dengan besarnya ukuran lingkaran dan semakin kuning warna lingkaran. Kita dapat mengartikan bahwa jika menyebut brand-brand tersebut maka yang melekat dalam pikiran orang-orang adalah brand tersebut adalah brand yang dimiliki oleh orang-orang dari kelas sosial atas (sangat kaya).

  • Jika menyebut brand yang outdoorsy atau brand yang biasa digunakan untuk kegiatan di luar ruangan, berdasarkan plot maka brand yang langsung dipikirkan adalah Nike dan Reebok.

  • Jika menyebut brand yang successful, maka brand yang dipikirkan adalah Mercedes, Porsche dan Visa.

  • Jika menyebut brand yang wholesome, maka brand yang dipikirkan adalah Campbell’s Soup.

Dengan menggunakan ballon plot kita dapat dengan cepat menginterpretasikan data kategorik meskipun kita memiliki data yang berukuran besar.

5.2 Mosaic plot

Plot mosaik 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. Seperti yang telah dijelaskan di atas, standardized residuals adalah akar dari statistik Chi-square. Residual dapat diinterpretasikan sebagai berikut: sebuah sel diarsir biru jika kita yakin bahwa sel tersebut lebih tinggi dari sel lain dalam baris yang sama. Sebuah sel diarsir dengan warna merah jika kita yakin bahwa sel tersebut lebih pendek dari sel lain pada baris yang sama

# Mosaic plot of observed values
mosaicplot(data_brand, 
           las=2,
           shade = T,
           off = 25,
           main = "A Mosaic Plot for Brand & Their Personality")

Dari mosaicplot di atas, kita dapat melihat bahwa:

  • Brand avoncosmetics, CalvinKleinPerfume, Hallmarks Cards, OlofOlayLotion, dan RevlonCosmetics memiliki persona charming dibanding brand lain
  • Brand MattelToys, McDonald’s, dan PepsiCola memiliki persona cheerful dibanding brand lain
  • Brand LeeJeans, Levi’sJeans, Michelin Tires, Nike dan Reebok memiliki persona outdoorsy dibanding brand lain
  • Brand American Express, CalvinKleinPerfume, Guess Jeans, Lexus, Mercedes, dan Porsche memiliki persona upper_class dibanding brand lain
  • Campbel’s Soup, Colgate Toothpaste, Kmart, dan OlofOlayLotion memiliki persona wholesome dibanding brand lainnya

6 Correspondence Analysis

Correspondence analysis atau analisis korespondensi adalah ekstensi dari Principal Component Analysis yang digunakan untuk mengeksplorasi hubungan antara variabel kualitatif (atau data kategorikal). Seperti PCA, CA dapat merangkum data dan memvisualisasikannya dalam plot dua dimensi.

Saat menganalisis tabel kontingensi dua arah, pertanyaan umumnya adalah apakah elemen baris tertentu diasosiasikan dengan beberapa elemen elemen kolom. Analisis korespondensi adalah pendekatan geometris untuk memberikan visualisasi asosiasi baris dan kolom pada tabel kontingensi dalam sejumlah kecil dimensi. Tujuannya adalah untuk memiliki pandangan global terhadap data yang berguna untuk interpretasi.

Untuk melakukan CA, dapat digunakan fungsi CA() dari package factomineR

CA(X, ncp = 5, graph = TRUE)

Keterangan:

  • X: data (tabel kontingensi)
  • ncp: jumlah dimensi yang disimpan di hasil akhir.
  • graph: nilai boolean. Jika TRUE grafik ditampilkan.
brand.ca <- CA(data_brand, graph = FALSE)
summary(brand.ca)
#> 
#> Call:
#> CA(X = data_brand, graph = FALSE) 
#> 
#> The chi square of independence between the two variables is equal to 3841.76 (p-value =  0 ).
#> 
#> Eigenvalues
#>                        Dim.1   Dim.2   Dim.3   Dim.4   Dim.5   Dim.6   Dim.7
#> Variance               0.102   0.076   0.036   0.031   0.011   0.007   0.006
#> % of var.             35.985  27.000  12.643  10.966   4.040   2.566   2.155
#> Cumulative % of var.  35.985  62.985  75.629  86.595  90.635  93.201  95.356
#>                        Dim.8   Dim.9  Dim.10  Dim.11  Dim.12  Dim.13  Dim.14
#> Variance               0.004   0.003   0.003   0.001   0.001   0.001   0.000
#> % of var.              1.277   1.233   0.988   0.504   0.348   0.201   0.094
#> Cumulative % of var.  96.633  97.865  98.854  99.358  99.705  99.906 100.000
#> 
#> Rows (the 10 first)
#>                       Iner*1000    Dim.1    ctr   cos2    Dim.2    ctr   cos2  
#> AmericanExpress     |    10.595 | -0.430  4.991  0.479 | -0.263  2.482  0.179 |
#> Applecomputers      |     8.272 | -0.110  0.415  0.051 | -0.296  4.028  0.371 |
#> Avoncosmetics       |     6.700 |  0.424  3.530  0.535 | -0.244  1.555  0.177 |
#> CalvinKleinPerfume  |    18.327 | -0.483  7.452  0.413 | -0.339  4.891  0.203 |
#> Campbell’sSoup      |    21.229 |  0.671 13.988  0.670 | -0.094  0.366  0.013 |
#> ColgateToothpaste   |    10.186 |  0.433  7.096  0.708 | -0.085  0.361  0.027 |
#> DietCoke            |     4.645 |  0.138  0.514  0.113 |  0.156  0.871  0.143 |
#> GuessJeans          |     6.779 | -0.417  3.349  0.502 |  0.093  0.223  0.025 |
#> HallmarkCards       |    12.027 |  0.288  3.078  0.260 | -0.392  7.573  0.480 |
#> IBMComputers        |    10.905 | -0.134  0.636  0.059 | -0.254  3.051  0.213 |
#>                      Dim.3    ctr   cos2  
#> AmericanExpress     -0.140  1.507  0.051 |
#> Applecomputers      -0.213  4.453  0.192 |
#> Avoncosmetics        0.237  3.129  0.167 |
#> CalvinKleinPerfume   0.452 18.584  0.362 |
#> Campbell’sSoup       0.080  0.569  0.010 |
#> ColgateToothpaste   -0.117  1.485  0.052 |
#> DietCoke             0.120  1.091  0.084 |
#> GuessJeans           0.339  6.306  0.332 |
#> HallmarkCards        0.187  3.697  0.110 |
#> IBMComputers        -0.449 20.407  0.668 |
#> 
#> Columns (the 10 first)
#>                       Iner*1000    Dim.1    ctr   cos2    Dim.2    ctr   cos2  
#> charming            |    21.917 | -0.117  0.715  0.033 | -0.418 12.087  0.420 |
#> cheerful            |    23.790 |  0.418 11.557  0.494 | -0.008  0.006  0.000 |
#> daring              |    16.867 | -0.432  9.510  0.573 |  0.156  1.640  0.074 |
#> down_to_earth       |    25.282 |  0.592 19.512  0.784 |  0.163  1.963  0.059 |
#> honest              |    11.628 |  0.353  7.632  0.667 | -0.100  0.809  0.053 |
#> imaginative         |    14.850 |  0.041  0.109  0.007 | -0.156  2.156  0.111 |
#> intelligent         |    20.739 | -0.203  2.686  0.132 | -0.260  5.854  0.215 |
#> outdoorsy           |    34.698 | -0.134  1.136  0.033 |  0.685 39.576  0.870 |
#> reliable            |     7.381 |  0.140  1.752  0.241 | -0.044  0.235  0.024 |
#> spirited            |     7.879 | -0.210  2.491  0.321 |  0.183  2.526  0.244 |
#>                      Dim.3    ctr   cos2  
#> charming             0.404 24.088  0.392 |
#> cheerful             0.222  9.254  0.139 |
#> daring               0.238  8.230  0.174 |
#> down_to_earth        0.073  0.850  0.012 |
#> honest              -0.077  1.031  0.032 |
#> imaginative         -0.050  0.472  0.011 |
#> intelligent         -0.436 35.181  0.606 |
#> outdoorsy            0.094  1.600  0.016 |
#> reliable            -0.152  5.937  0.287 |
#> spirited             0.102  1.693  0.077 |

Dalam menginterpretasikan summary 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.

6.1 Uji Chi Square

Untuk menginterpretasikan CA, perlu dilakukan uji chi square untuk memeriksa hubungan antara variabel baris dan kolom.

Dengan rumusan hipotesis sebagai berikut.

  • \(H_0\) : Variabel nama brand dan atribut personality dari tabel kontingensi adalah independen
  • \(H_1\) : Variabel nama brand dan atribut personality adalah dependen

Pada summary di atas, diketahui bahwa p-value yang diperoleh adalah sebesar p-value = 0 < alpha = 0.05. Maka \(H_0\) ditolak, dan dapat disimpulkan terdapat hubungan yang signifikan antara nama brand dan atribut personality.

6.2 Nilai Eigen / Variance

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.

brand.ca$eig
#>          eigenvalue percentage of variance cumulative percentage of variance
#> dim 1  0.1016068450            35.98514267                          35.98514
#> dim 2  0.0762365463            26.99998211                          62.98512
#> dim 3  0.0356997982            12.64346247                          75.62859
#> dim 4  0.0309644217            10.96637863                          86.59497
#> dim 5  0.0114072819             4.04000996                          90.63498
#> dim 6  0.0072451320             2.56594041                          93.20092
#> dim 7  0.0060861501             2.15547467                          95.35639
#> dim 8  0.0036043001             1.27650116                          96.63289
#> dim 9  0.0034801183             1.23252085                          97.86541
#> dim 10 0.0027901258             0.98815267                          98.85357
#> dim 11 0.0014229304             0.50394591                          99.35751
#> dim 12 0.0009812083             0.34750532                          99.70502
#> dim 13 0.0005686232             0.20138394                          99.90640
#> dim 14 0.0002642847             0.09359923                         100.00000

Nilai eigen dapat digunakan untuk menentukan jumlah dimensi yang dipertahankan. Tidak ada “aturan praktis” untuk memilih jumlah dimensi yang akan disimpan untuk interpretasi data, tergantung pada pertanyaan penelitian dan kebutuhan peneliti.

6.3 Rows Components

Fungsi get_ca_row() dari package factoextra dapat digunakan untuk mengekstrak hasil komponen variabel baris pada summary(brand.ca).

row <- get_ca_row(brand.ca)

Komponen fungsi get_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.

6.3.1 Rows Coordinat

CA menghasilkan koordinat baru untuk variabel baris pada dimensi baru, yang diperoleh dari perhitungan: \[row.coord = \frac{U * \delta}{\sqrt{row.sum/grand.total}}\]

head(row$coord)
#>                         Dim 1       Dim 2       Dim 3        Dim 4
#> AmericanExpress    -0.4300943 -0.26274259 -0.14006556  0.135092794
#> Applecomputers     -0.1096303 -0.29594656 -0.21293975 -0.204124786
#> Avoncosmetics       0.4243850 -0.24395914  0.23683297  0.004318099
#> CalvinKleinPerfume -0.4833259 -0.33917232  0.45242792  0.010585488
#> Campbell’sSoup      0.6706219 -0.09390081  0.08016308  0.390171002
#> ColgateToothpaste   0.4326740 -0.08456799 -0.11733869  0.145138207
#>                            Dim 5
#> AmericanExpress    -0.1143892938
#> Applecomputers      0.0945932165
#> Avoncosmetics       0.0520569517
#> CalvinKleinPerfume  0.0197906060
#> Campbell’sSoup     -0.0006043648
#> ColgateToothpaste  -0.1105428705

Gunakan fungsi fviz_ca_row() [in factoextra] untuk memvisualisasikan hanya titik baris:

fviz_ca_row(brand.ca, repel = TRUE)

Plot di atas menunjukkan hubungan antara titik baris (brand):

  • Baris dengan profil serupa dikelompokkan bersama. Sehingga brand yang memiliki karakteristik personality serupa akan cenderung saling berdekatan atau berada dalam kuadran yang sama. Seperti Nike, Reebok, Levi’s Jeans, dan Michelin Tires berada berdekatan dan dalam satu kuadran yang sama. Nampaknya keempat brand ini memiliki kemiripan personality outdoorsy jika ditelusuri lewat ballon plot.
  • Baris berkorelasi negatif diposisikan di sisi berlawanan dari asal plot (kuadran berlawanan). Sehingga brand yang memiliki karakteristik personality yang bertolak belakang akan berada pada kuadran yang berlawanan.

6.3.2 Quality of representation of rows

CA dapat merangkum data dan memvisualisasikannya dalam plot dua dimensi. Perhatikan bahwa dua dimensi baru (dimensi 1 & 2) dapat mempertahankan 62.89% dari total inersia (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(row$cos2)
#>                         Dim 1      Dim 2       Dim 3        Dim 4
#> AmericanExpress    0.47865009 0.17862894 0.050763739 0.0472231809
#> Applecomputers     0.05094028 0.37121579 0.192182277 0.1766002553
#> Avoncosmetics      0.53539088 0.17692336 0.166738278 0.0000554289
#> CalvinKleinPerfume 0.41313819 0.20344923 0.362004553 0.0001981696
#> Campbell’sSoup     0.66951479 0.01312633 0.009566509 0.2266285701
#> ColgateToothpaste  0.70784155 0.02704123 0.052059124 0.0796485554
#>                              Dim 5
#> AmericanExpress    0.0338580256331
#> Applecomputers     0.0379244968931
#> Avoncosmetics      0.0080557958669
#> CalvinKleinPerfume 0.0006926812326
#> Campbell’sSoup     0.0000005437547
#> ColgateToothpaste  0.0462036061552

Nilai cos2 adalah 0 sampai 1. Jumlah cos2 untuk baris pada semua dimensi CA sama dengan satu. Jika item baris terwakili dengan baik oleh dua dimensi, jumlah dari cos2 mendekati satu. 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(brand.ca, col.row = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE,
            title="Row Poins based on Their Quality Cos2")

# Cos2 of rows on Dim.1 and Dim.2
fviz_cos2(brand.ca, choice = "row", axes = 1:2)

6.3.3 Contributions of rows to the dimensions

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.

head(row$contrib)
#>                         Dim 1     Dim 2      Dim 3        Dim 4        Dim 5
#> AmericanExpress     4.9909437 2.4824248  1.5065215  1.615770807 3.1446111483
#> Applecomputers      0.4146927 4.0276460  4.4528252  4.717549052 2.7499558788
#> Avoncosmetics       3.5304969 1.5549262  3.1293734  0.001199392 0.4731666399
#> CalvinKleinPerfume  7.4518700 4.8908655 18.5840840  0.011729161 0.1112869233
#> Campbell’sSoup     13.9884797 0.3655220  0.5688805 15.537637760 0.0001011939
#> ColgateToothpaste   7.0957696 0.3612848  1.4853114  2.620000369 4.1255335476

Besar kontribusi variabel baris pada dimensi 1 dan 2 dapat dilihat dengan visualisasi berikut:

# Contributions of rows to dimension 1
fviz_contrib(brand.ca, choice = "row", axes = 1)

# Contributions of rows to dimension 2
fviz_contrib(brand.ca, choice = "row", axes = 2)

Dapat dilihat bahwa:

  • item baris Campbell’s Kmart, Porsche adalah yang paling penting dalam definisi dimensi pertama.
  • item baris Lee Jeans berkontribusi paling besar pada dimensi 2.

6.4 Columns Components

Fungsi get_ca_col() dari package factoextra dapat digunakan untuk mengekstrak hasil komponen variabel baris pada summary(brand.ca). Berikut adalah output yang dihasilkan untuk komponen variabel kolom, yaitu $coord, $cos2 dan $contrib yang memiliki arti serupa dengan output komponen baris.

col <- get_ca_col(brand.ca)

6.4.1 Columns Coordinat

Pada komponen kolom, cos2 memiliki formula: \[cos2 = \frac{col.coord^2}{d^2}\]

head(col$coord)
#>                     Dim 1        Dim 2       Dim 3       Dim 4       Dim 5
#> charming      -0.11737879 -0.418163663  0.40396413  0.15319744  0.08982199
#> cheerful       0.41831869 -0.008226802  0.22189043 -0.32437698 -0.04503380
#> daring        -0.43244316  0.155536449  0.23846887 -0.04804722 -0.03034045
#> down_to_earth  0.59226080  0.162709583  0.07327456  0.15314815 -0.05017338
#> honest         0.35335280 -0.099681167 -0.07699910  0.12707796  0.07533147
#> imaginative    0.04052672 -0.156084506 -0.04996894 -0.36735381  0.22016171

6.4.2 Quality of representation of column

head(col$cos2)
#>                     Dim 1        Dim 2      Dim 3      Dim 4       Dim 5
#> charming      0.033127834 0.4204422544 0.39237325 0.05643088 0.019398990
#> cheerful      0.493577624 0.0001908987 0.13887308 0.29678433 0.005720292
#> daring        0.572866461 0.0741070791 0.17420424 0.00707183 0.002819937
#> down_to_earth 0.784165294 0.0591844903 0.01200295 0.05243305 0.005627667
#> honest        0.666850851 0.0530686284 0.03166525 0.08624862 0.030308505
#> imaginative   0.007462045 0.1106864590 0.01134423 0.61311790 0.220220875

Seperti titik baris, titik kolom juga dapat diwarnai dengan nilai cos2:

fviz_ca_col(brand.ca, col.col = "cos2", 
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel = TRUE)

fviz_cos2(brand.ca, choice = "col", axes = 1:2)

6.4.3 Contributions of columns to the dimensions

head(col$contrib)
#>                    Dim 1       Dim 2      Dim 3      Dim 4      Dim 5
#> charming       0.7145703 12.08698709 24.0884326  3.9941901  3.7271069
#> cheerful      11.5566478  0.00595716  9.2544727 22.8022329  1.1929861
#> daring         9.5095497  1.63955506  8.2304292  0.3852107  0.4169527
#> down_to_earth 19.5118693  1.96272261  0.8500345  4.2811101  1.2472700
#> honest         7.6316834  0.80944856  1.0314109  3.2389465  3.0895622
#> imaginative    0.1090617  2.15609846  0.4718964 29.4048067 28.6690710

Untuk memvisualisasikan kontribusi kolom ke dua dimensi pertama:

# Contributions of columns to dimension 1
fviz_contrib(brand.ca, choice = "col", axes = 1)

# Contributions of columns to dimension 2
fviz_contrib(brand.ca, choice = "col", axes = 2)

Dapat dilihat bahwa:

  • item kolom upper_class dan down_to_earth adalah yang paling penting dalam definisi dimensi pertama.
  • item kolom outdoorsy berkontribusi paling besar pada dimensi 2.

6.5 Biplot

Plot standar analisis korespondensi adalah biplot simetris di mana baris (titik biru) dan kolom (segitiga merah) direpresentasikan dalam ruang yang sama menggunakan koordinat baru. Koordinat ini mewakili profil baris dan kolom.

fviz_ca_biplot(brand.ca, repel = TRUE)

Dari biplot simetris di atas, diperoleh bahwa jarak brand Nike, Reebok dan Michelin Tires sangat dekat sehingga mereka memiliki kesamaan profil personality (profil baris). Jika diperhatikan atribut personality yang berada di sekitar mereka adalah outdoorsy, tough dan spirited.

Kita bisa mendefinisikan kemiripan atribut personality yang dimiliki oleh tiap brand dengan melihat jarak antar brand dalam satu kuadran, dan mengetahui atribut personality mana yang sekiranya dimiliki dengan melihat dalam satu kuadran atribut personality yang terdekat.

Dengan demikian, berdasarkan profil baris (personality), berikut adalah pemetaan yang terlihat jelas dari biplot di atas:

  • Outdoorsy, tough, & spirited: Nike, Reebok, Michelin Tires
  • Daring: GuessJeans
  • Upper_class: CalvinKleinPerfume, AmericanExpress, Lexus
  • Intellegent: IBMCoumputers, Apple, Sony Televisions
  • Charming: Revlon Cosmetics
  • Down_to_eart: Kmart
  • Wholesome: Campbell’s Soup, Avoncosmetics
  • Cheerful & honest: Lego, Mattel Toys, Colgate Toothpaste
  • Successful: Visa

7 Conclusion

CA memberikan hasil visualisasi yang mudah diinterpretasi sehingga kita dengan mudah menemukan asosiasi dari dua kategori variabel. Correspondence analysis dapat membantu kita mendefinisikan personality (variabel 1) dari suatu brand (variabel 2). Sebelumnya, telah dibahas juga detail komponen analisis korespondensi dan intuisi matematikanya. Berdasarkan analisis yang telah dilakukan, diperoleh terdapat beberapa pemetaan personality untuk brand-brand yang ada. Yaitu brand Nike, Reebok dan Michelin Tires tampaknya memiliki personality yang outdoorsy, tough & spirited; brand Guess Jeans memiliki personality darin; brand Calvin Klein Perfume, American Express dan Lexus memiliki personality upper class; brand IBM, Apple & Sony Televisions memiliki personality intellegent; brand Revlonn Cosmetics memiliki personality charming; brand Kmart memiliki personality charming; brand Campbell’s Soup dan Avoncosmetics memiliki personality wholesome; brand Lego, Mattel Toys, Colgate Toothpaste memiliki personality cheerful & honest; dan brand Visa memiliki personality successful. Jika dibandingkan dengan ballon plot dan mosaicplot, ada beberapa hasil pemetaan yang sama. Namun, CA memberikan hasil pemetaan yang lebih kuat dengan memvisualisasikan kedua variabel pada biplot.

Setelah mengetahui pemetaan personality untuk masing-masing brand, perusahaan dapat memaksimalkan marketingnya dengan memperkuat personality yang telah melekat serta merumuskan strategi brand positioning.