Inicialmente, observé que habían muchas categorías del sector, entonces quise ver la frecuencia de cada una y luego hice un Boxplot comparativo con todas las categorías del sector vs el Margen EBITDA (indicador importante) y la región.

#Frecuencia de sectores (22 sectores)--sector con mayor freq=Salud, petróleo, servicios públicos,alimentos...
Freq <- table(Sector)
Tabla <- transform(Freq, CumFreq = cumsum(Freq), Rel = prop.table(Freq), CumRel=cumsum(prop.table(Freq)))

Tabla

Construí un Pareto para saber qué sectores agrupar en una sola categoría. También se muestra una tabla de frecuencias ordenada de mayor a menor para complementar el gráfico.

require(ggplot2)
require(ggQC)

ggplot(datos, aes(x=Sector, y=Frecuencia)) +
  stat_pareto()+geom_path(aes(y=cum, group=1))+
  theme(axis.text.x = element_text(angle=90, vjust=0.6, hjust = 1))+
  labs(x = "Sector", y = "Frecuencia")

datos

Decidí agrupar aquellas categorías del sector con frecuencias inferiores a 4 en una categoría llamada “Otros”.

A continuación, algunos Boxplots comparativos.

#Boxplot Margen EBITDA por Sector

ggplot(data = BDempresas, aes(x = sectorn, y = jitter(Margen_EBITDA))) +
geom_boxplot(fill="palegreen") + ylab("Margen EBITDA (%)") + theme(legend.position="top") + theme(axis.text.x=element_text(angle=90)) + xlab("Sector") +  stat_summary(fun.y=mean, colour="darkred", geom="point", shape=18, size=3,show_guide = FALSE)

mean(Margen_EBITDA, na.rm = T)
## [1] 14.874
margensectores2
#Boxplot Margen EBITDA por Región
ggplot(data = BDempresas, aes(x = Región, y = Margen_EBITDA, fill=Región)) +
geom_boxplot() + ylab("Margen EBITDA (%)") + theme(legend.position="none")+ scale_fill_brewer(palette = "Accent") + stat_summary(fun.y=mean, colour="darkred", geom="point", shape=18, size=3,show_guide = FALSE)

margenregion2

Otro indicador que me pareció importante fue el % del nivel de endeudamiento, también lo mostré por regiones y por sector. Hay dos datos atípicos (observación 85 y 81, Savia salud y Asmet salud, respectivamente).

#Boxplot Nivel de endeudamiento por región sin datos atípicos

ggplot(data = BDempresas[c(-85,-81),], aes(x = Región[c(-85,-81)], y = jitter(Nivel_endeudamiento), fill =Región[c(-85,-81)])) + geom_boxplot() + ylab("% Nivel de endeudamiento") + xlab("Región") + theme(legend.position="none") + scale_fill_brewer(palette = "Accent") + stat_summary(fun.y=mean, colour="darkred", geom="point", shape=18, size=3,show_guide = FALSE)

mean(Nivel_endeudamiento[c(-85,-81)], na.rm = T)
## [1] 61.67959
endeudaregion2

Aquí va el % nivel de endeudamiento por sector (sin las dos observaciones atípicas).

#Boxplot % Nivel de endeudamiento por Sector sin datos atípicos
ggplot(data = BDempresas[c(-85,-81),], aes(x = sectorn[c(-85,-81)], y = jitter(Nivel_endeudamiento))) + geom_boxplot(fill="palegreen") + ylab("% Nivel de endeudamiento") + theme(legend.position="top")+
theme(axis.text.x=element_text(angle=90)) + xlab("Sector")+ stat_summary(fun.y=mean, colour="darkred", geom="point", shape=18, size=3,show_guide = FALSE)

endeudasector2

También podrían hacerse los mismos gráficos anteriores para variables como los ingresos operacionales o la utilidad neta, los resultados serían similares, pero hay que tener cuidado porque empresas como Ecopetrol y el Éxito (primera y segunda en el ránking) poseen ingresos operacionales muy altos comparados con las demás.

require(plotly)

#Relación Ingresos operacionales con Margen EBITDA
omebitda <- ggplot(BDempresas[-(1:2),], aes(Ingresos_operacionales/1000000,Margen_EBITDA)) + geom_jitter(width = .5, size=2) + labs(y="Margen EBITDA (%)", x="Ingresos operacionales (en millones de pesos)") + geom_hline(yintercept=mean(Margen_EBITDA[c(-1,-2)], na.rm = T), color="red")

ggplotly(omebitda)
#Relación puesto con Margen EBITDA
opuesto <- ggplot(BDempresas[-(1:2),], aes(Puesto,Margen_EBITDA)) + 
geom_jitter(width = .5, size=2) + labs(y="Margen EBITDA (%)", x="Puesto año 2017") + geom_hline(yintercept=mean(Margen_EBITDA[c(-1,-2)], na.rm = T), color="red")

ggplotly(opuesto)
#Relación puesto con nivel de endeudamiento
endeudapuesto <- ggplot(BDempresas[-c(85,81),], aes(Puesto, Nivel_endeudamiento)) + geom_jitter(width = .5, size=2) + labs(y="% Nivel de endeudamiento", x="Puesto año 2017") + geom_hline(yintercept=mean(Nivel_endeudamiento[c(-85,-81)], na.rm = T), color="red")

ggplotly(endeudapuesto)
#Relación ingresos operacionales con utilidad neta
operneta <- ggplot(BDempresas[-(1:2),], aes(Ingresos_operacionales/1000000,Utilidad_neta/1000000)) + 
geom_jitter(width = .5, size=2) + labs(y="Utilidad neta (en millones de pesos)", x="Ingresos operacionales (en millones de pesos)") + geom_hline(yintercept=mean(Utilidad_neta[c(-1,-2)]/1000000, na.rm = T), color="red")

ggplotly(operneta)
#Relación puesto con utilidad neta

q <- ggplot(BDempresas[-(1:2),], aes(Puesto,Utilidad_neta/1000000)) + 
  geom_jitter(width = .5, size=2) + labs(y="Utilidad neta (en millones de pesos)", x="Puesto en el año 2017")+geom_hline(yintercept=mean(Utilidad_neta[c(-1,-2)]/1000000, na.rm = T), color="red")

ggplotly(q)
#Relación puesto con utilidad operativa
operpuesto <- ggplot(BDempresas[-(1:2),], aes(Puesto,Utilidad_operacional/1000000)) + 
geom_jitter(width = .5, size=2) + labs(y="Utilidad operativa (en millones de pesos)", x="Puesto en el año 2017") + geom_hline(yintercept=mean(Utilidad_operacional[c(-1,-2)]/1000000, na.rm = T), color="red")

ggplotly(operpuesto)
#Relación puesto con EBITDA
puestoebitda <- ggplot(BDempresas[-(1:2),],aes(Puesto,EBITDA/1000000)) +  geom_jitter(width = .5, size=2) + labs(y="EBITDA (en millones de pesos)", x="Puesto en el año 2017") + geom_hline(yintercept=mean(EBITDA[c(-1,-2)]/1000000, na.rm = T), color="red")

ggplotly(puestoebitda)
#Relación puesto con rentabilidad del activo (sin observaciones 81 y 85)

prentactivo <- ggplot(BDempresas[-c(85,81),],
aes(Puesto,Rentabilidad_neta_activo, col = sectorn[c(-85, -81)])) + 
geom_jitter(width = .5, size=2) + labs(y="Rentabilidad neta del activo (%)", x="Puesto en el año 2017") + labs(color='Sector') + geom_hline(yintercept=mean(Rentabilidad_neta_activo[c(-85,-81)], na.rm = T), color="black")

ggplotly(prentactivo)
#Relación puesto con rentabilidad del patrimonio sin observación 97 (OPESE), por ser dato atípico
prentpatrimonio <- ggplot(BDempresas[-97,],
aes(Puesto,Rentabilidad_neta_patrimonio, col = sectorn[-97])) + 
geom_jitter(width = .5, size=2) + labs(y="Rentabilidad neta del patrimonio (%)", x="Puesto en el año 2017") + labs(color='Sector') + geom_hline(yintercept=mean(Rentabilidad_neta_patrimonio[-97], na.rm = T), color="black")

ggplotly(prentpatrimonio)

Más relaciones como las anteriores se pudiesen graficar, pero hay que tener cuidado porque muchas variables fueron calculadas a partir de otras. Por esa razón, mejor quise graficar un correlograma para mirar las relaciones entre cada par de variables y como puede observarse, era de esperarse que muchas de ellas tuviesen una alta correlación dado que la mayoría fueron calculadas a partir de otras (se utilizaron mucho los ingresos operacionales para calcular otros indicadores, por ejemplo).

Ahora, nuevamente tuve que correr otro correlograma eliminando las dos primeras empresas del ránking justamente por sus altísimos ingresos operacionales. Observen el cambio en las correlaciones.

require(ggcorrplot)
corr <- round(cor(cuantis,use="complete.obs"), 1)
ggcorrplot(corr, hc.order = TRUE, type = "upper", lab = TRUE, lab_size = 3, method="circle", colors = c("tomato2", "white", "springgreen3"), title="Correlograma", ggtheme=theme_bw)

#Correlaciones sin tener en cuenta observaciones de las dos primeras empresas por alto valor de ingresos
corr <- round(cor(cuantis[-c(1,2),],use="complete.obs"), 1)
ggcorrplot(corr, hc.order = TRUE, type = "upper", lab = TRUE, lab_size = 3, method="circle", colors = c("tomato2", "white", "springgreen3"), title="Correlograma", ggtheme=theme_bw)

Esto era lo que quería mostrarles como un primer análisis gráfico muy general de la base de datos.

ZOOM A COMERCIO AL POR MENOR

#Relación ingresos con rentabilidad del activo 

rentactivo <- ggplot(BDmenor100,aes(Ingresos_operacionales,
Rentabilidad_neta_activo, col= Empresa, shape = Empresa)) + geom_point(size = 5) + scale_colour_manual(name = "Empresa", values = c("salmon", "firebrick3","red2", "chocolate2","gold1","lawngreen" ,"olivedrab", "forestgreen","deepskyblue", "deepskyblue3", "dodgerblue4", "mediumorchid1","mediumorchid3", "mediumorchid4")) + scale_shape_manual(name = "Empresa",values = c(19, 17, 19, 17, 19, 19, 19, 19, 19, 17, 19, 19, 17, 17)) + labs(y="Rentabilidad neta del activo (%)", x="Ingresos")

rentactivo

#Relación ingresos con rentabilidad del patrimonio 

rentpatrimonio <- ggplot(BDmenor100,aes(Ingresos_operacionales,
Rentabilidad_neta_patrimonio, colour = Empresa, shape = Empresa)) + geom_point(size = 5) + scale_colour_manual(name = "Empresa", values = c("salmon", "firebrick3","red2", "chocolate2","gold1","lawngreen" ,"olivedrab", "forestgreen","deepskyblue", "deepskyblue3", "dodgerblue4", "mediumorchid1","mediumorchid3", "mediumorchid4")) + scale_shape_manual(name = "Empresa",values = c(19, 17, 19, 17, 19, 19, 19, 19, 19, 17, 19, 19, 17, 17)) + labs(y="Rentabilidad neta del patrimonio (%)", x="Ingresos") 

rentpatrimonio

#Relación ingresos con nivel de endeudamiento

endeudamenor <- ggplot(BDmenor100,aes(Ingresos_operacionales,
Nivel_endeudamiento, col = Empresa, shape = Empresa)) + geom_point(size = 5) + scale_colour_manual(name = "Empresa", values = c("salmon", "firebrick3","red2", "chocolate2","gold1","lawngreen" ,"olivedrab", "forestgreen","deepskyblue", "deepskyblue3", "dodgerblue4", "mediumorchid1","mediumorchid3", "mediumorchid4")) + scale_shape_manual(name = "Empresa",values = c(19, 17, 19, 17, 19, 19, 19, 19, 19, 17, 19, 19, 17, 17)) + labs(y="% Nivel de endeudamiento", x="Ingresos")

endeudamenor

Para complementar los gráficos anteriores, a continuación se muestran correlogramas de la Base de datos de comercio al por menor:

#Correlaciones BD Comercio al por menor
corrmenor <- round(cor(cuantismenor), 1)
ggcorrplot(corrmenor, hc.order = TRUE, type = "upper", lab = TRUE, lab_size = 3, method="circle", colors = c("tomato2", "white", "springgreen3"), title="Correlograma empresas comercio al por menor", ggtheme=theme_bw)

#Correlaciones BD Comercio al por menor sin el ÉXITO

corrmenor <- round(cor(cuantismenor[-1,]), 1)
ggcorrplot(corrmenor, hc.order = TRUE, type = "upper", lab = TRUE, lab_size = 3, method="circle", colors = c("tomato2", "white", "springgreen3"), title="Correlograma empresas comercio al por menor sin el ÉXITO", ggtheme=theme_bw)