# 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==