# 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
investidor <- read_excel("perfil investidor x aplicacao x estadocivil.xlsx")
investidor
# atribuir níveis ao perfil e tipo sw aplicação
investidor$perfil <- factor(investidor$perfil, levels = c("Conservador", "Moderado", "Agressivo"))
investidor$aplicacao <-factor(investidor$aplicacao, levels = c("Poupança", "CDB", "Ações"))
investidor$estado_civil <-factor(investidor$estado_civil, levels = c("Solteiro", "Casado"))
dados <- investidor[,2:4]
matbinaria <- matlogic(dados)
matbinaria
perfil.Agressivo perfil.Conservador perfil.Moderado aplicacao.Ações aplicacao.CDB
1 1 0 0 1 0
2 1 0 0 1 0
3 1 0 0 1 0
4 1 0 0 1 0
5 1 0 0 1 0
6 1 0 0 1 0
7 1 0 0 1 0
8 1 0 0 1 0
9 1 0 0 0 1
10 1 0 0 0 1
11 1 0 0 0 1
12 1 0 0 0 1
13 1 0 0 0 0
14 1 0 0 0 0
15 1 0 0 0 0
16 1 0 0 0 0
17 1 0 0 0 0
18 0 1 0 1 0
19 0 1 0 1 0
20 0 1 0 1 0
21 0 1 0 1 0
22 0 1 0 1 0
23 0 1 0 0 1
24 0 1 0 0 1
25 0 1 0 0 1
26 0 1 0 0 1
27 0 1 0 0 1
28 0 1 0 0 1
29 0 1 0 0 1
30 0 1 0 0 1
31 0 1 0 0 1
32 0 1 0 0 1
33 0 1 0 0 1
34 0 1 0 0 1
35 0 1 0 0 1
36 0 1 0 0 1
37 0 1 0 0 1
38 0 1 0 0 1
39 0 1 0 0 0
40 0 1 0 0 0
41 0 1 0 0 0
42 0 1 0 0 0
43 0 0 1 1 0
44 0 0 1 1 0
45 0 0 1 0 1
46 0 0 1 0 1
47 0 0 1 0 1
48 0 0 1 0 1
49 0 0 1 0 1
50 0 0 1 0 1
51 0 0 1 0 1
52 0 0 1 0 1
53 0 0 1 0 1
54 0 0 1 0 1
55 0 0 1 0 1
56 0 0 1 0 1
57 0 0 1 0 1
58 0 0 1 0 1
59 0 0 1 0 1
60 0 0 1 0 1
61 0 0 1 0 1
62 0 0 1 0 1
63 0 0 1 0 1
64 0 0 1 0 1
65 0 0 1 0 0
66 0 0 1 0 0
67 0 0 1 0 0
68 0 0 1 0 0
69 0 0 1 0 0
70 0 0 1 0 0
71 0 0 1 0 0
72 0 0 1 0 0
73 0 0 1 0 0
74 0 0 1 0 0
75 0 0 1 0 0
76 0 0 1 0 0
77 0 0 1 0 0
78 0 0 1 0 0
79 0 0 1 0 0
80 0 0 1 0 0
81 0 0 1 0 0
82 0 0 1 0 0
83 0 0 1 0 0
84 0 0 1 0 0
85 0 0 1 0 0
86 0 0 1 0 0
87 0 0 1 0 0
88 0 0 1 0 0
89 0 0 1 0 0
90 0 0 1 0 0
91 0 0 1 0 0
92 0 0 1 0 0
93 0 0 1 0 0
94 0 0 1 0 0
95 0 0 1 0 0
96 0 0 1 0 0
97 0 0 1 0 0
98 0 0 1 0 0
99 0 0 1 0 0
100 0 0 1 0 0
aplicacao.Poupança estado_civil.Casado estado_civil.Solteiro
1 0 0 1
2 0 0 1
3 0 0 1
4 0 1 0
5 0 0 1
6 0 0 1
7 0 0 1
8 0 0 1
9 0 0 1
10 0 0 1
11 0 1 0
12 0 0 1
13 1 1 0
14 1 1 0
15 1 0 1
16 1 1 0
17 1 0 1
18 0 1 0
19 0 0 1
20 0 0 1
21 0 0 1
22 0 1 0
23 0 1 0
24 0 0 1
25 0 0 1
26 0 0 1
27 0 0 1
28 0 1 0
29 0 1 0
30 0 0 1
31 0 0 1
32 0 1 0
33 0 0 1
34 0 0 1
35 0 1 0
36 0 0 1
37 0 1 0
38 0 0 1
39 1 1 0
40 1 1 0
41 1 1 0
42 1 0 1
43 0 1 0
44 0 1 0
45 0 1 0
46 0 1 0
47 0 0 1
48 0 1 0
49 0 0 1
50 0 0 1
51 0 1 0
52 0 1 0
53 0 0 1
54 0 0 1
55 0 0 1
56 0 0 1
57 0 0 1
58 0 0 1
59 0 0 1
60 0 1 0
61 0 1 0
62 0 1 0
63 0 0 1
64 0 1 0
65 1 0 1
66 1 1 0
67 1 1 0
68 1 0 1
69 1 1 0
70 1 0 1
71 1 1 0
72 1 1 0
73 1 1 0
74 1 1 0
75 1 0 1
76 1 1 0
77 1 1 0
78 1 1 0
79 1 1 0
80 1 1 0
81 1 1 0
82 1 0 1
83 1 1 0
84 1 1 0
85 1 1 0
86 1 1 0
87 1 1 0
88 1 1 0
89 1 1 0
90 1 1 0
91 1 1 0
92 1 1 0
93 1 0 1
94 1 1 0
95 1 1 0
96 1 1 0
97 1 1 0
98 1 1 0
99 1 1 0
100 1 1 0
dados.burt <-burt(dados)
dados.burt
perfil.Agressivo perfil.Conservador perfil.Moderado
perfil.Agressivo 17 0 0
perfil.Conservador 0 25 0
perfil.Moderado 0 0 58
aplicacao.Ações 8 5 2
aplicacao.CDB 4 16 20
aplicacao.Poupança 5 4 36
estado_civil.Casado 5 11 41
estado_civil.Solteiro 12 14 17
aplicacao.Ações aplicacao.CDB aplicacao.Poupança
perfil.Agressivo 8 4 5
perfil.Conservador 5 16 4
perfil.Moderado 2 20 36
aplicacao.Ações 15 0 0
aplicacao.CDB 0 40 0
aplicacao.Poupança 0 0 45
estado_civil.Casado 5 16 36
estado_civil.Solteiro 10 24 9
estado_civil.Casado estado_civil.Solteiro
perfil.Agressivo 5 12
perfil.Conservador 11 14
perfil.Moderado 41 17
aplicacao.Ações 5 10
aplicacao.CDB 16 24
aplicacao.Poupança 36 9
estado_civil.Casado 57 0
estado_civil.Solteiro 0 43
# 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 = "gray70") +
geom_vline(xintercept = 0, colour = "gray70") +
geom_text(aes(colour = Variable)) +
ggtitle("MCA plot of variables")