# install.packages("FactoMineR", "gglot2", "readxl")
# install.packages("devtools")
# devtools::install_github("kassambara/factoextra")
rm(list=ls(all=TRUE))
library("ggplot2")
library("FactoMineR")
library("factoextra")
library("readxl")
library("gplots")
library("corrplot")
library("graphics")
library("foreign")
library("readxl")
library("amap")

Ler os dados e atribuir ordem para variáveis

# ler os dados
arquivo <- read_excel("dados.xlsx")
arquivo
# atribuir níveis ao perfil e tipo sw aplicação
arquivo$proposta <- factor(arquivo$proposta, levels = c("método 1", "método 2", "método 3"))
arquivo$teoria <-factor(arquivo$teoria, levels = c("A", "B", "C"))
arquivo$tipo <-factor(arquivo$tipo, levels = c("X", "Y"))
dados <- arquivo[,2:4]

matriz de BURT

dados.burt <-burt(dados)
dados.burt
                  proposta.método 1 proposta.método 2 proposta.método 3 teoria.A teoria.B teoria.C
proposta.método 1                17                 0                 0        8        4        5
proposta.método 2                 0                25                 0        5       16        4
proposta.método 3                 0                 0                58        2       20       36
teoria.A                          8                 5                 2       15        0        0
teoria.B                          4                16                20        0       40        0
teoria.C                          5                 4                36        0        0       45
tipo.X                            5                11                41        5       16       36
tipo.Y                           12                14                17       10       24        9
                  tipo.X tipo.Y
proposta.método 1      5     12
proposta.método 2     11     14
proposta.método 3     41     17
teoria.A               5     10
teoria.B              16     24
teoria.C              36      9
tipo.X                57      0
tipo.Y                 0     43

as coordenadas geradas pela matriz de BURT são conhecidas como coordenadas principais.

# MCA with function dudi.acm
library(ade4)
# apply dudi.acm
mca1 <- dudi.acm(dados, scannf = FALSE)
# eig   eigenvalues, a vector with min(n,p) components
# c1    principal axes, data frame with p rows and nf columns
# co    column coordinates, data frame with p rows and nf columns
summary(mca1)
Class: acm dudi
Call: dudi.acm(df = dados, scannf = FALSE)

Total inertia: 1.667

Eigenvalues:
    Ax1     Ax2     Ax3     Ax4     Ax5 
 0.6023  0.4360  0.2765  0.1798  0.1721 

Projected inertia (%):
    Ax1     Ax2     Ax3     Ax4     Ax5 
  36.14   26.16   16.59   10.79   10.32 

Cumulative projected inertia (%):
    Ax1   Ax1:2   Ax1:3   Ax1:4   Ax1:5 
  36.14   62.30   78.89   89.68  100.00 
#coordenadas principais (BURT)
round(mca1$co, 3)
# coordenadas padrão (geradas com a matriz binária)
#round(mca1$c1, 3)
# number of categories per variable
cats = apply(dados, 2, function(x) nlevels(as.factor(x)))
# data frame for ggplot
mca1_vars_df = data.frame(mca1$co, Variable = rep(names(cats), cats))
# plot
ggplot(data = mca1_vars_df, 
       aes(x = Comp1, y = Comp2, label = rownames(mca1_vars_df))) +
  geom_hline(yintercept = 0, colour = "black") +
  geom_vline(xintercept = 0, colour = "black") +
  geom_text(aes(colour = Variable), size=8) +
  xlim(-1.5, 2) + ylim(-1.5, 2) +
  ggtitle("MCA plot of variables") + 
  theme_minimal() 

LS0tDQp0aXRsZTogJ0Fuw6FsaXNlIGRlIENvcnJlc3BvbmTDqm5jaWEgTcO6bHRpcGxhLSBFeGVtcGxvIHBhcmEgYW7DoWxpc2UgYmlibGlvbcOpdHJpY2EgLSBQcm9qZXRvIE1lc3RyYWRvIFVORVNQJw0KYXV0aG9yOiAiTGVvbmksIFIuIEMuIFByb2Zlc3NvciBEci4iDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQNCiAgaHRtbF9kb2N1bWVudDogZGVmYXVsdA0KLS0tDQoqKioNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEYpDQpybShsaXN0PWxzKGFsbD1UUlVFKSkNCmBgYA0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFfQ0KIyBpbnN0YWxsLnBhY2thZ2VzKCJGYWN0b01pbmVSIiwgImdnbG90MiIsICJyZWFkeGwiKQ0KIyBpbnN0YWxsLnBhY2thZ2VzKCJkZXZ0b29scyIpDQojIGRldnRvb2xzOjppbnN0YWxsX2dpdGh1Yigia2Fzc2FtYmFyYS9mYWN0b2V4dHJhIikNCnJtKGxpc3Q9bHMoYWxsPVRSVUUpKQ0KbGlicmFyeSgiZ2dwbG90MiIpDQpsaWJyYXJ5KCJGYWN0b01pbmVSIikNCmxpYnJhcnkoImZhY3RvZXh0cmEiKQ0KbGlicmFyeSgicmVhZHhsIikNCmxpYnJhcnkoImdwbG90cyIpDQpsaWJyYXJ5KCJjb3JycGxvdCIpDQpsaWJyYXJ5KCJncmFwaGljcyIpDQpsaWJyYXJ5KCJmb3JlaWduIikNCmxpYnJhcnkoInJlYWR4bCIpDQpsaWJyYXJ5KCJhbWFwIikNCmBgYA0KDQojIyMgTGVyIG9zIGRhZG9zIGUgYXRyaWJ1aXIgb3JkZW0gcGFyYSB2YXJpw6F2ZWlzDQpgYGB7cn0NCiMgbGVyIG9zIGRhZG9zDQphcnF1aXZvIDwtIHJlYWRfZXhjZWwoImRhZG9zLnhsc3giKQ0KYXJxdWl2bw0KDQojIGF0cmlidWlyIG7DrXZlaXMgYW8gcGVyZmlsIGUgdGlwbyBzdyBhcGxpY2HDp8Ojbw0KYXJxdWl2byRwcm9wb3N0YSA8LSBmYWN0b3IoYXJxdWl2byRwcm9wb3N0YSwgbGV2ZWxzID0gYygibcOpdG9kbyAxIiwgIm3DqXRvZG8gMiIsICJtw6l0b2RvIDMiKSkNCmFycXVpdm8kdGVvcmlhIDwtZmFjdG9yKGFycXVpdm8kdGVvcmlhLCBsZXZlbHMgPSBjKCJBIiwgIkIiLCAiQyIpKQ0KYXJxdWl2byR0aXBvIDwtZmFjdG9yKGFycXVpdm8kdGlwbywgbGV2ZWxzID0gYygiWCIsICJZIikpDQoNCmRhZG9zIDwtIGFycXVpdm9bLDI6NF0NCg0KYGBgDQoNCiMjIyBtYXRyaXogZGUgQlVSVCANCmBgYHtyfQ0KZGFkb3MuYnVydCA8LWJ1cnQoZGFkb3MpDQpkYWRvcy5idXJ0DQpgYGANCg0KDQojIyMgYXMgY29vcmRlbmFkYXMgZ2VyYWRhcyBwZWxhIG1hdHJpeiBkZSBCVVJUIHPDo28gY29uaGVjaWRhcyBjb21vIGNvb3JkZW5hZGFzIHByaW5jaXBhaXMuIA0KDQpgYGB7ciwgZmlnLmhlaWdodD05LCBmaWcud2lkdGg9MTJ9DQojIE1DQSB3aXRoIGZ1bmN0aW9uIGR1ZGkuYWNtDQpsaWJyYXJ5KGFkZTQpDQoNCiMgYXBwbHkgZHVkaS5hY20NCm1jYTEgPC0gZHVkaS5hY20oZGFkb3MsIHNjYW5uZiA9IEZBTFNFKQ0KIyBlaWcJZWlnZW52YWx1ZXMsIGEgdmVjdG9yIHdpdGggbWluKG4scCkgY29tcG9uZW50cw0KIyBjMQlwcmluY2lwYWwgYXhlcywgZGF0YSBmcmFtZSB3aXRoIHAgcm93cyBhbmQgbmYgY29sdW1ucw0KIyBjbwljb2x1bW4gY29vcmRpbmF0ZXMsIGRhdGEgZnJhbWUgd2l0aCBwIHJvd3MgYW5kIG5mIGNvbHVtbnMNCg0Kc3VtbWFyeShtY2ExKQ0KI2Nvb3JkZW5hZGFzIHByaW5jaXBhaXMgKEJVUlQpDQpyb3VuZChtY2ExJGNvLCAzKQ0KIyBjb29yZGVuYWRhcyBwYWRyw6NvIChnZXJhZGFzIGNvbSBhIG1hdHJpeiBiaW7DoXJpYSkNCiNyb3VuZChtY2ExJGMxLCAzKQ0KDQojIG51bWJlciBvZiBjYXRlZ29yaWVzIHBlciB2YXJpYWJsZQ0KY2F0cyA9IGFwcGx5KGRhZG9zLCAyLCBmdW5jdGlvbih4KSBubGV2ZWxzKGFzLmZhY3Rvcih4KSkpDQojIGRhdGEgZnJhbWUgZm9yIGdncGxvdA0KbWNhMV92YXJzX2RmID0gZGF0YS5mcmFtZShtY2ExJGNvLCBWYXJpYWJsZSA9IHJlcChuYW1lcyhjYXRzKSwgY2F0cykpDQoNCiMgcGxvdA0KZ2dwbG90KGRhdGEgPSBtY2ExX3ZhcnNfZGYsIA0KICAgICAgIGFlcyh4ID0gQ29tcDEsIHkgPSBDb21wMiwgbGFiZWwgPSByb3duYW1lcyhtY2ExX3ZhcnNfZGYpKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvdXIgPSAiYmxhY2siKSArDQogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDAsIGNvbG91ciA9ICJibGFjayIpICsNCiAgZ2VvbV90ZXh0KGFlcyhjb2xvdXIgPSBWYXJpYWJsZSksIHNpemU9OCkgKw0KICB4bGltKC0xLjUsIDIpICsgeWxpbSgtMS41LCAyKSArDQogIGdndGl0bGUoIk1DQSBwbG90IG9mIHZhcmlhYmxlcyIpICsgDQogIHRoZW1lX21pbmltYWwoKSANCg0KYGBgDQoNCg==