0% encontró este documento útil (0 votos)
85 vistas27 páginas

Resumen R - Tercera Parte PDF

El documento presenta un resumen de los conceptos clave del análisis de componentes principales (PCA). PCA permite reducir un conjunto de variables correlacionadas a un menor número de dimensiones o componentes principales sin perder mucha información. Los primeros componentes principales explican la mayor proporción de la varianza total y son ortogonales entre sí.

Cargado por

INES MURTAGH
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
85 vistas27 páginas

Resumen R - Tercera Parte PDF

El documento presenta un resumen de los conceptos clave del análisis de componentes principales (PCA). PCA permite reducir un conjunto de variables correlacionadas a un menor número de dimensiones o componentes principales sin perder mucha información. Los primeros componentes principales explican la mayor proporción de la varianza total y son ortogonales entre sí.

Cargado por

INES MURTAGH
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ITBA análisis de componentes principales.

pptx

PCA Concepto: reducir el número de variables que consideramos demasiado grandes a un


conjunto de valores menor que representa correctamente las características originales. Esto se
hace cuando tengo variables altamente correlacionadas

Usos: Simplificación, Eliminación de ruidos, Elección de variable, Visualización (2 o 3


dimensiones), Clusterización.

Tipos

● La eliminación de características: consiste en eliminar algunas variables por completo si


son redundantes con alguna otra variable o si no proporcionan información nueva sobre
el conjunto de datos.

● La extracción de características comunes: La formación de nuevas variables a partir de


las antiguas (componentes principales). Juntar la variables similares y formar una sola
variable con toda la información → PCA

Principal Component Analysis (PCA) es un método estadístico que permite simplificar la


complejidad de espacios muestrales con muchas dimensiones y a la vez conservar su
información. PCA permite encontrar un número de factores subyacentes (z<p) que explican
aproximadamente lo mismo que las p variables originales.

→ Busco hacer combinaciones lineales de las variables

Un individuo se caracteriza por p variables, es decir el espacio muestral es de p dimensiones.


PCA encuentra un número de factores z tal que z<p, que logra explicar aproximadamente lo mismo
que las p variable originales. Donde antes se necesitaban p valores para caracterizar a cada individuo,
ahora basta con z. Cada una de estas z variables nuevas se llaman componentes principales

Resultados: conjunto de ponderadores para cada variables del dataset, con algún criterio
decido qué variable me quedo a raíz de su ponderador.

Buscar ponderadores: los dos primeros componentes principales apuntan a darme la mayor
información ya que son ortogonales entre sí, irán en distintas direcciones

(1) Cálculo del primer componente principal:


la combinación lineal de las variables originales que tiene varianza máxima. Si queremos
maximizar la varianza , debemos restringir la maximización, sino el módulo puede crecer
infinito. Poniendo la restricción de que el módulo sea igual a uno, es suficiente para que solo se
maximice la varianza.
(2) Cálculo del segundo componente principal:
maximizar la varianza ortogonalmente a la primera

(3) Resultado final:


voy a tener tantos componentes principales
como dimensiones tenga.

La idea de esto entonces, es quedarnos con el primer componente que explica el 89% de la
variabilidad total y descartar el segundo que sólo explica el 11%.
Archivo: PCA_Europa.R

1. Hacer un segundo dataset con solo variables numéricas

2. Función para hacer componentes principales: prcomp(df, scale=TRUE)

● Esta función genera una lista

● scale sirve para centralizar las variables

● Lo que ocurre es que estamos utilizando variables medidas en escalas diferentes


(área en \(m^2\), GDP en millones, y el resto de variables en porcentajes!). Cuando
ocurre esto, un subconjunto de variables (en este caso GDP y Área) tienden a
'monopolizar' la variabilidad en los datos! Pero esto es debido exclusivamente al
efecto de 'escala' con el que hemos medido los datos. Por ello, en vez de utilizar la
matriz de covarianzas para hacer PCA, se utiliza la matriz de correlación. Scale =
True -> utilizamos la matriz de CORRELACIÓN para obtener las componentes!

3. Otra función para hacer PCA (usar esta): incluye el gráfico del círculo P
​ CA( df,
scale.unit = TRUE, … )

4. Ver resultados: summary(pca.Europa2)

desvest > 1 se conviene porque explica (proporcionalmente mas de una variable


aislada), desvest < 1 me explica menos que una variable aislada

5. Matriz de rotación: pca.Europa2$rotation. Cuánto contribuye cada variable al


componente principal.

6. Primer componente principal:


>PCATotal<-pca.Europa2$x
>PC1<-PCATotal[,1]
7. ¿Cómo seleccionar la cantidad de componentes principales?
Elegir los que tengan varianza mayor a 1. Se pueden ver a varianzas graficadas con un
línea que marca el 1 en el siguiente gráfico:
>screeplot(pca.Europa2, type = "l", npcs = 5, main = "Screeplot of the first 10 PCs")
>abline(h = 1, col="red", lty=5)
>legend("topright", legend=c("Eigenvalue = 1"), col=c("red"), lty=5, cex=0.6)

8. Ver la varianza total explicada para el número de componentes principales seleccionado


(gráfico):
>cumpro <- cumsum(pca.Europa2$sdev^2 / sum(pca.Europa2$sdev^2))
>plot(cumpro[0:7], xlab = "PC #", ylab = "Amount of explained variance",
main = "Cumulative variance plot")
>abline(v = 3, col="blue", lty=5)
>abline(h = 0.7825, col="blue", lty=5)

9. Ver solo las primeras 2 (concentran el 63%): plot(pca.Europa2$x[,1],pca.Europa2$x[,2],


xlab="PC1 (46.1%)", ylab = "PC2 (16.9%)", main = "PC1 / PC2 - plot")

10. Aplicar a clusters:


library("cluster")
library("factoextra")
hc4 <- diana(Europa2)
hc4$dc # divise coefficient
pltree(hc4, cex = 0.6, hang = -1, main = "Dendrogram of diana")

Gráfico cluster df original Gráfico cluster con PCA

clust <- cutree(hc4, k = 2) clust <- cutree(hc4, k = 2)


fviz_cluster(list(data = Europa2, cluster = clust)) fviz_cluster(list(data = PCATotal, cluster = clust))

Con ruido y superposición Dos grupos más definidos, sin ruido

Agregar al df las columnas del Dim del PCA:


df = cbind(df,pcamae$ind$coord[,1:3]) %>% as_tibble()
MCA.pptx

Análisis de multi correspondencia (MCA): PCA pero para variables categóricas.

Tabla original:

Transformación a una Tabla Completa Disyuntiva (TCD): Ahora se tiene una columna por cada
categoría de las columnas originales (muchas más columnas). Aquí el valor de cada elemento
es 1 si pertenece a tal categoría, 0 si no.

¿Cómo funciona el MCA? Se pondera cada atributo. Se divide cada elemento de la TCD por
la proporción de individuos con esas características, por lo que cuanto más rara es la
característica más distintiva se vuelve poseerla. Se resta 1 para centrar.

Representación:
● 2 individuos que tienen las mismas categorías: 𝑑_(𝑖,𝑖′)^2=0
● 2 individuos que tienen muchas categorías en común tendrán una distancia chica
● 2 individuos que tienen muchas categorías, pero uno tiene una característica rara, una
distancia grande.
● 2 individuos que comparten una categoría rara: distancia pequeña.
● 2 individuos con poca distancia entre sí, tienen simular distancia al origen.

Inercia:
La matriz resultante de Tabla Completa Disyuntiva (TCD) se proyecta sobre una serie de ejes
ortogonales (independientes) mediante Descomposición de Valores Singulares (SVD):
𝑆𝑉𝐷(𝑇𝐶𝐷)=𝑈∗𝛴∗𝑉^𝑇 .
En comparación a PCA, aquí lo que se verifica no es el la varianza, sino la inercia que
funcionan como análogos. Ambas son medidas de variabilidad de los datos.

Las primeras dos dimensiones explican el 23.86% de la variabilidad de los datos.

Análisis e interpretación

Gráfico típico: Tomamos las dos primeras columnas para representarlas en un gráfico y,
adicionalmente, coloreamos según si esa persona participa en, por ejemplo, jardinería
obtenemos este gráfico.
Gráfico para análisis general:

Gráfico para análisis de Dim 1 y Dim 2 en particular: El ratio de correlación, permite interpretar
cada dimensión resultante en términos de la variable original:
Gráfico variabilidad explicada por variables nuevas: Este análisis, realizado para todas las
variables respecto a las dimensiones nuevas 1 y 2 permite evaluar cuánta variabilidad
individual explican las variables nuevas.
mca.R
1. Transforma la tabla original en Tabla Completa Disyuntiva (TCD):
No sé si es necesario, en algunos casos lo hace y en otros no.

2. MCA + gráfico de la variabilidad explicada:


mca.df=MCA(df,graph = T)

Otra forma de hacer MCA con todo el df sin transformar:


mca.res <- MCA(hobbies,quali.sup=19:22,quanti.sup=23)

Arguments
● X: a data frame with n rows (individuals) and p columns (categorical variables)
● quanti.sup: a vector indicating the indexes of the quantitative supplementary variables
● quali.sup: a vector indicating the indexes of the categorical supplementary variables

Gráfico para una sola categoría (“Gardening”):


h3=cbind(hobbies_indicator,mcah$svd$U[,1:2] %>% as_tibble())

ggplot() + geom_point(aes(V1,V2,color=as.factor(Gardening_y)),alpha=0.35,data=h3)
+ labs(color="Gardening")
+ geom_point(aes(mean(h3$V1[h3$Gardening_y==1]),mean(h3$V2[h3$Gardening_y==1])))
+ geom_text(aes(label="Gardening_y",mean(h3$V1[h3$Gardening_y==1]),
mean(h3$V1[h3$Gardening_y==1])))
+ geom_point(aes(mean(h3$V1[h3$Gardening_y==0]),mean(h3$V2[h3$Gardening_y==0])))
+ geom_text(aes(label="Gardening_n",mean(h3$V1[h3$Gardening_y==0]),
mean(h3$V1[h3$Gardening_y==0]))) + geom_hline(yintercept = 0) + geom_vline(xintercept = 0)

Gráfico de % de varianza explicada:


mca.df=MCA(df)

fviz_screeplot(mca.df, addlabels = TRUE, ylim = c(0, 50))

Gráfico para análisis general:

p1=fviz_mca_var(mca.df,
col.var = "contrib", # Color by contributions to the PC
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE # Avoid text overlapping
)
Otro gráfico para cuando tengo 2 opciones:

h3=cbind(vote,mca.res.vote$svd$U[,1:2] %>% as_tibble())

ggplot() + geom_point(aes(V1,V2,color=as.factor(party)),alpha=0.95,data=h3)
+ geom_text(aes(label="Democrat",mean(h3$V1[h3$party=="democrat"]),
mean(h3$V1[h3$party=="democrat"])))
+ geom_text(aes(label="Republican",mean(h3$V1[h3$party!="democrat"]),
mean(h3$V2[h3$party!="democrat"])))
+ geom_hline(yintercept = 0)+geom_vline(xintercept = 0)
Más gráficos

plot(mca.res,invis=c("ind","quali.sup"),col.var=c(rep(c("black","red"),17),"black",rep("red",4)),
title="Graph of the active categories")

plot(mca.res,invisible=c("ind","var"),hab="quali",
palette=palette(c("blue","maroon","darkgreen","black","red")),
title="Graph of the supplementary categories")

plot(mca.res,choix="var",title="Graph of the variables")

plot(mca.res,choix="quanti.sup",title="Graph of the continuous variables")


PCA + Clusters
Archivo mio: Ejercicios 14 Octubre.R

Eliminar NA (mejor función): drop_na()

Linea para elegir componentes principales:


pca$svd$vs %>% enframe() %>% ggplot(aes(name,value)) + geom_line() +
geom_hline(yintercept = 1)

- Nro PCA: Elijo el mayor número entero por encima de la recta y=1

Gráfico pca variables escaladas


y sin escalar:

- Escaladas (negro)
wss= c()
for(i in 1:15) {
kbd = kmeans(x = scale(df),centers = i,nstart = 25)
wss = c(wss,kbd$tot.withinss)
}

- Sin escalar (rojo)


wss_pca = c()
for(i in 1:15) {
kbd_pca = kmeans(x = df_pca,centers = i,nstart = 25)
wss_pca = c(wss_pca,kbd_pca$tot.withinss)
}

wss_df <- wss %>% enframe()


colnames(wss_df)[2] = "wss"
wss_pca_df <- wss_pca %>% enframe()
colnames(wss_pca_df)[2] = "wss_pca"
- Gráfico

left_join(wss_df, wss_pca_df) %>% ggplot() + geom_point(aes(name,wss)) +


geom_line(aes(name,wss)) + geom_point(aes(name,wss_pca), col = "red") +
geom_line(aes(name,wss_pca), col = "red")

Interpretación: En este caso los resultados son bastante similares. Ambos parecería que
concluyen en 4 clusters, pero puede pasar que la escalada (negra) de un número de cluster
más acertado si en gráficos de orden de magnitud dió como el segundo ejemplo.

Si grafico de orden de magnitud dió así: ¿Qué línea usar?

usar línea roja, pca sin escalar

usar línea negra, pca escalado


PCA datos escalados

Gráfico dimensiones:

→ esto tiene más o menos el mismo orden de magnitud

→ cuando el gráfico se ve así, se nota que estas variables no tiene el mismo orden de
magnitud
Otra forma de hacer los gráficos anteriores:

df_pca = pca$ind$coord[,1:3] %>% as_tibble


df_pca %>% ggplot() + geom_density(aes(Dim.1), fill = "blue", alpha = 0.2)
+ geom_density(aes(Dim.2), fill = "yellow", alpha = 0.2)
+ geom_density(aes(Dim.3), fill = "red", alpha = 0.2)
→ antes de hacer este gráfico hay que hacer el pca y guardarlo en una variables llamada pca

Análisis con k medias escaladas vs PCA sin escalar:


A veces conviene PCA sin escalar porque no es tan sensible a los valores extremos
como k medias

Procedimiento:

● PCA con 2 dimensiones: pca <- PCA( df, scale=FALSE)


● Agrego Dim 1 y Dim 2 al df: df = cbind(df,pca$ind$coord[,1:2]) %>% as_tibble()
● k medias con base original (sin escalar): kmeans = kmeans(x =df ,centers = 4, nstart = 25)
● Agrego clusters al df que tiene PCA: df["c"] = as.factor(kmeans$cluster)
● Gráfico: df %>% ggplot(aes(Dim.1, Dim.2)) + geom_point(aes(col= as.factor(c)))

Atajo flechita de asignación <- : alt + -


Análisis Factorial.pptx
PCA vs Análisis Factorial

● PCA parte de la base de que hay algún componente no observado que es causado por
una combinación lineal de las variables originales. Lo observado “causa” lo
no-observado.

● El Análisis Factorial revierte esta relación y lo que se propone es encontrar factores


latentes (no observados) que afecten a una o más variables observables. Tengo las
variables observadas que dependen de una serie de factores comunes que yo no
observo.
○ El ejemplo clásico es la “Ansiedad” que causa que los individuos respondan un
cuestionario de una forma determinada, es decir el factor “causa” la respuesta.
Es decir lo no-observado “causa” lo observado. Encontrar estos factores
comunes es el propósito de análisis factorial

● PCA busca explicar la variabilidad conjunta de los datos, análisis factorial busca explicar
la covarianza de los datos, no la variabilidad total, sino extraer factores que expliquen la
variabilidad de combinaciones de datos.

● v(1), v(2),…v(m) indica los factor loading, es decir, la importancia del factor
F(1),F(2),…,F(m) en la variable p. Entre v y F se explica la variabilidad común de los
datos, que no es toda la varianza.

El análisis factorial supone que:


1. Los factores comunes están estandarizados, es decir, µ= 0 y S^2 =1
2. Los factores específicos están estandarizados, es decir, E[e(p)] = 0 y Var[e(p)] =1 y son
independientes los unos de los otros Covar[e(pk), e(pj)] = 0 si j!=k
3. Que los factores comunes no están correlacionados a los factores específicos
Covar[F(m), e(p)] = 0
4. Finalmente, los factores comunes pueden estar o no correlacionados entre sí: Si son
independientes, es decir Covar[F(mk), F(mj)] = 0, estamos ante un modelo de factores
ortogonales.
○ Si no son independientes, es decir Covar[F(mk), F(mj)] != 0, estamos ante un
modelo de factores rotado.
○ Las rotaciones pueden ser:
■ Si son independientes, es decir Covar[F(mk), F(mj)] = 0, estamos ante
un modelo de factores ortogonales.
■ Si no son independientes, es decir Covar[F(mk), F(mj)] != 0, estamos
ante un modelo de factores rotado.

Los Métodos de rotación pueden ser:


● Varimax
● Quartimax
● Equamax
● Oblimin
● Promax
Las rotaciones pueden ser:
● Ortogonales: Preservan la independencia de los factores.
● Oblicuas: Introducen correlaciones entre los factores obtenidos

Metodología de Análisis:

1. Formulación del problema (¿Qué tipo de análisis o factor tengo en mente que pueden
surgir de estos datos?)

2. Análisis de la matriz de correlaciones

3. Selección de número de factores:

La función nScree permite recomendar, dada una matriz de correlaciones, el número de


factores usando distintos criterios:
● noc: Optimal Coordinates: Toma la derivada previa y posterior de cada punto.
● naf: Acceleration Factor, toma la derivada en cada punto, y reporta la posición en
la cual el cambio de pendiente es mayor.
● nparallel : Análisis Paralelo Compara, si los datos fueran aleatorios, si existen
diferencias significativas.
● nkaiser: Criterio de Kaiser, selecciona aquellos autovalores mayores que 1.

4. Extracción de factores
5. Rotación de factores:

Una rotación que preserva la ortogonalidad, pero


que cambia las cargas de cada factor a cada
variable es llamada “Varimax”, la cual busca otra
matriz ortogonal que minimiza la carga de unas
variables en un factor y que las maximice en el
otro y viceversa

Completar F: ​falta completar con F, que es el


valor que los factores subyacentes toman para
dar como resultado las observaciones
efectivamente registradas.

6. Interpretación:

Factor-Scores Interpretabilidad de los factores: Las cargas factoriales permiten interpretar


los factores en términos de las variables originales, más allá de las relaciones con las
variables opcionales. Igualmente, dado que cada factor-score va a estar asociado a cada
observación es posible, por ejemplo, en el caso de las marcas, buscar el promedio de
cada marca para cada factor.

Por ejemplo, las marcas de mejor calidad son B y C.


factorAnalysis.R
Librerías:

library(nFactors)
library(GPArotation)
library(tidyverse)
library(ggcorrplot)
library(RColorBrewer)
library(gplots)
library(semPlot)

Matriz de correlaciones: matrizCorr = cor(df)

Calcular autovectores y autovalores: eigens <- eigen(matrizCorr)


● Ver autovalores: eigens$values
● Ver autovectores: eigens$vectors

Visualización de Correlación: ggcorrplot(matrizCorr)

Elegir cantidad de factores:

a. Autovalores: (eigens$values/sum(eigens$values)) %>% enframe() %>%


ggplot(aes(name,value))+ geom_col()
b. Scree test:
eigendf = enframe(eigens$values)
eigendf$random = eigens$values
nS = nScree(matrizCorr)
nS$Components
plotnScree(nS)
c. guardo la cantidad: nfactors=2 (se suele preferir un número chico)

Función para hacer análisis factorial: factanal(df, factors=, rotacion=, scores=)

Hacer Codigo para ver el “peso” de cada factor:

f <- factanal(brand.sc[, 1:9], factors=2)


f$loadings

Gráfico para ver las cargas factoriales de cada factor:


f2 = factanal(df, factors=nfactors, rotation = 'varimax',scores="Bartlett")
f2$scores[1,1]

semPaths(f2, what="est", residuals=FALSE, cut=0.1, posCol=c("white", "darkgreen"),


negCol=c("white", "red"), edge.label.cex=0.75, nCharNodes=7)

Los valores de este gráfico coinciden con los loadings del código anterior
Gráfico para ver diferencia de rotaciones:
​f2oblimin$scores %>% as_tibble() %>% ggplot(aes(Factor1,Factor2))+geom_point()
f2$scores %>% as_tibble() %>% ggplot(aes(Factor1,Factor2))+geom_point()

Guardar la mejor rotación: brand.scores = f2$scores %>% as_tibble()

Gráfico para ver las marcas:


brand.scores = f2$scores %>% as_tibble()
brand.scores["brand"] = brand.ratings[,10]
brand.fa.mean <- aggregate(. ~brand, data=brand.scores, mean)
names(brand.fa.mean)=c("brand","precio","calidad")
rownames(brand.fa.mean)=brand.fa.mean[, 1]

brand.fa.mean %>%
ggplot(aes(precio,calidad,col=brand))+geom_point(size=3)+geom_label(aes(x=precio,y=calidad
,label=brand))

Heat map factores:


brand.fa.mean <- brand.fa.mean[, -1]
heatmap.2(as.matrix(brand.fa.mean),
col=brewer.pal(9, "GnBu"), trace="none", key=FALSE, dend="none",
cexCol=1.2, main="\n\n\n\n\n\nMean factor score by brand")

¿Qué método elegir?


● Si no necesito que sean obligatoriamente independientes las variables uso oblimin
● Si lo necesito, uso varimax
Oblimin: Cuando sabes que las variables son independientes, ejemplo los del depto con los
amenities del edificio
Como que uno no depende o varía con el otro
Y varimax cuando queres eliminar la colinealidad de variables
O al revez, no se, ver que pinta en el momento

PCA vs Análisis factorial


PCA: quiero crear una variable que explique todos mis datos.
Análisis factorial: tengo mis datos y quiero saber cual es el factor latente que está afectando
mis datos. Este factor latente puede ser una sola variable o distintas combinaciones entre ellas.

Una es como explican mis factores una variable (PCA) y la otra como se ven afectadas mis
variables por un factor (Análisis factorial)
Net Promoter Score
Archivo: Presentacion_trab.pptx

Net Promoter Score (NPS)

¿Qué es? NPS, esta probabilidad se mide en una escala del 0 al 10, donde 10 significa que el
cliente recomendaría la marca o la compañía con total seguridad.

¿Cómo se calcula?

Gráfico biplot

Una biplot de un intento inicial en PCA


para las calificaciones de las marcas de los
consumidores.

Vemos agrupaciones de adjetivos en el


flechas de carga variable en rojo y ganancia
algo de información sobre las áreas donde
las calificaciones Clúster (como áreas
densas de observación puntos).
Gráfico con media de las marcas

a, b, c, d, e, f, g, h, i, j
1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Las marcas f y g son altas en "valor", por


ejemplo, mientras que a y j son
relativamente altas en "diversión", que es
opuesta en dirección a los adjetivos de
liderazgo ("líder" y "serio").

Archivo: ejemplo4.Rmd
Procedimiento:
1. Importar el dataset
2. Normalizar los datos (excepto la columna de brand): brand.sc[, 1:9] <-
scale(brand.ratings[, 1:9])
3. Corrplot:
library(corrplot)
corrplot(cor(brand.sc[, 1:9]), order="hclust")

4. Calcular la media de todas las variables agrupadas por marca: brand.mean <- brand.sc
%>% group_by(brand) %>% summarise(Mperform=mean(perform),
Mleader=mean(leader), Mlatest=mean(latest), Mfun=mean(fun),
Mserious=mean(serious), Mbargain=mean(bargain), MValue=mean(value),
Mtrendy=mean(trendy), Mrebuy=mean(rebuy))

Esto lo guardo en una variable, lo voy a usar más adelante


5. Hacer PCA con el dataset original:
library(gplots)
library(RColorBrewer)
brand.pc <- prcomp(brand.sc[, 1:9])
6. Elijo cantidad de PC:
plot(brand.pc, type="l")
abline(h =1, col = "red")

Varianza > 1, elijo 3


7. Biplot: biplot(brand.pc)
Lo que tengo que poner como argumento no es el df original sino la variable donde
guardé el PCA

8. Hago PCA con la base que tiene todos los promedios agrupados por marca:
brand.mu.pc <- prcomp(brand.mean[,2:10], scale=TRUE)
9. Biplot: biplot(brand.mu.pc, main="Brand positioning", cex=c(1.5, 1))

También podría gustarte