estados15<-readRDS(file="C:/Users/Julian/Desktop/MineriaD/Taller 3/estadossuper2015.rds")
primeras 5 filas
head(estados15,5)
## NIT RAZON SOCIAL
## 1 800000001 AGROINDUSTRIA EL TRIUNFO LIMITADA.
## 2 800000090 INGENIEROS SERVICIOS CONSTRUCTIVOS S.A.
## 3 800000251 INGENIERIA Y DISEÑO I E P LTDA
## 4 800000268 DISEÑO DE INTERIORES S A S
## 5 800000276 AVICOLA EL MADROÑO S A
## DIRECCION DE DOMICILIO CIUDAD
## 1 CALLE 15 16 41 VILLAVICENCIO
## 2 CL 8 B 30 73 MEDELLIN
## 3 CRA 67 NO. 167 - 61 OF. 519 BOGOTA D.C.
## 4 CARRERA 53 82 115 BARRANQUILLA
## 5 KM 6 VIA GIRON CRA 12 N. 57-88 BUCARAMANGA
## DEPARTAMENTO CIIU
## 1 META A0111
## 2 ANTIOQUIA F4111
## 3 BOGOTA D.C. C1101
## 4 ATLANTICO L6810
## 5 SANTANDER A0145
## SECTOR 1105 CAJA
## 1 AGRICULTURA, GANADERÃ\215A, CAZA Y ACTIVIDADES DE SERVICIOS CON NA
## 2 CONSTRUCCIÓN DE EDIFICIOS 5695
## 3 ELABORACIÓN DE BEBIDAS NA
## 4 ACTIVIDADES INMOBILIARIAS 593
## 5 AGRICULTURA, GANADERÃ\215A, CAZA Y ACTIVIDADES DE SERVICIOS CON 651655
## 3710 PERDIDAS ACUMULADAS 3705 UTILIDADES ACUMULADAS TOTAL PASIVO Y PATRIMONIO
## 1 27500 49108 3181078
## 2 920635 631158 7565765
## 3 NA 139783 1823336
## 4 NA 219423 3570859
## 5 918209 3317792 132914239
## TOTAL ACTIVO TOTAL PASIVO 37 RESULTADOS DE EJERCICIOS ANTERIORES
## 1 3181078 550473 21608
## 2 7565765 5225121 -289477
## 3 1823336 827137 139783
## 4 3570859 2654376 219423
## 5 132914239 92079304 2399583
## TOTAL PATRIMONIO 41 INGRESOS OPERACIONALES UTILIDAD BRUTA
## 1 2630605 597173 231485
## 2 2340644 1956706 974267
## 3 996199 506447 173398
## 4 916483 269483 263983
## 5 40834935 290442025 36781758
## UTILIDAD OPERACIONAL UTILIDAD ANTES DE IMPUESTOS 59 GANANCIAS Y PERDIDAS
## 1 43025 22930 12490
## 2 321575 170726 104365
## 3 -22453 30156 30156
## 4 66726 20455 20455
## 5 4679333 1857985 264070
## EFECTIVO AÑO ANTERIOR EFECTIVO PRESENTE AÑO 14 SUBTOTAL INVENTARIOS (CP)
## 1 1647 8661 435250
## 2 0 18970 1006099
## 3 261311 206912 309200
## 4 45199 204794 29484
## 5 1992556 1951397 26883828
str(estados15)
## Classes 'tbl_df', 'tbl' and 'data.frame': 25337 obs. of 23 variables:
## $ NIT : num 8e+08 8e+08 8e+08 8e+08 8e+08 ...
## $ RAZON SOCIAL : chr "AGROINDUSTRIA EL TRIUNFO LIMITADA." "INGENIEROS SERVICIOS CONSTRUCTIVOS S.A. " "INGENIERIA Y DISEÑO I E P LTDA" "DISEÑO DE INTERIORES S A S" ...
## $ DIRECCION DE DOMICILIO : chr "CALLE 15 16 41" "CL 8 B 30 73" "CRA 67 NO. 167 - 61 OF. 519" "CARRERA 53 82 115" ...
## $ CIUDAD : Factor w/ 306 levels "ACACIAS ",..: 298 155 31 27 34 31 31 31 31 49 ...
## $ DEPARTAMENTO : Factor w/ 31 levels "AMAZONAS ",..: 20 2 5 4 27 5 5 5 5 6 ...
## $ CIIU : chr "A0111" "F4111" "C1101" "L6810" ...
## $ SECTOR : Factor w/ 84 levels "ACTIVIDADES ADMINISTRATIVAS Y DE APOYO DE OFICINA Y OTRAS AC",..: 31 39 45 27 31 70 73 35 75 27 ...
## $ 1105 CAJA : num NA 5695 NA 593 651655 ...
## $ 3710 PERDIDAS ACUMULADAS : num 27500 920635 NA NA 918209 ...
## $ 3705 UTILIDADES ACUMULADAS : num 49108 631158 139783 219423 3317792 ...
## $ TOTAL PASIVO Y PATRIMONIO : num 3.18e+06 7.57e+06 1.82e+06 3.57e+06 1.33e+08 ...
## $ TOTAL ACTIVO : num 3.18e+06 7.57e+06 1.82e+06 3.57e+06 1.33e+08 ...
## $ TOTAL PASIVO : num 550473 5225121 827137 2654376 92079304 ...
## $ 37 RESULTADOS DE EJERCICIOS ANTERIORES: num 21608 -289477 139783 219423 2399583 ...
## $ TOTAL PATRIMONIO : num 2630605 2340644 996199 916483 40834935 ...
## $ 41 INGRESOS OPERACIONALES : num 5.97e+05 1.96e+06 5.06e+05 2.69e+05 2.90e+08 ...
## $ UTILIDAD BRUTA : num 231485 974267 173398 263983 36781758 ...
## $ UTILIDAD OPERACIONAL : num 43025 321575 -22453 66726 4679333 ...
## $ UTILIDAD ANTES DE IMPUESTOS : num 22930 170726 30156 20455 1857985 ...
## $ 59 GANANCIAS Y PERDIDAS : num 12490 104365 30156 20455 264070 ...
## $ EFECTIVO AÑO ANTERIOR : num 1647 0 261311 45199 1992556 ...
## $ EFECTIVO PRESENTE AÑO : num 8661 18970 206912 204794 1951397 ...
## $ 14 SUBTOTAL INVENTARIOS (CP) : num 435250 1006099 309200 29484 26883828 ...
Nuestra base de datos tiene estructura de tabla clásica. Aunque incluye algunos elementos geográficos, éstos no están georreferenciados.
Cada caso representa un Nit (empresa). Para cada una de las 25337 empresas disponibles tenemos 23 variables. Tipos de variables Al revisar las variables, se encuentra que la mayoría de ellas son numéricas, y dados sus encabezados tiene sentido que lo sean, excepto por el NIT.
Hay otros dos tipos de variables: factor y char. Las variables factor corresponden a variables categóricas, y las char a simple texto.
Resulta lógico que, por ahora, mantengamos la dirección de domicilio como char pero el código único de la actividad de la empresa CIIu quizás sea una variable categórica de interés. Por eso le damos formato creando una nueva variable que la convierta en categórica.
Al Nit lo convertimos en caracter
ciuu-> categorica Nit->caracter
estados15$CIIU2<-as.factor(estados15$CIIU)
estados15$NIT<-as.character(estados15$NIT)
Estamos haciendo un proceso de la preparación de datos (format data) aún cuando no hemos explorado a profundidad la tabla.
En la base de datos es posible identificar las 3 dimensiones clave de los casos.
Granularidad. Hay diferentes posibles niveles de granularidad para esta información.
Actualmente la granularidad es por empresa, pero podría interesarnos trabajar por ciudad, departamento, actividad económica, o inclusive trabajar por grandes agrupaciones de actividad económica (el código CIIU marca actividades y subactividades). La pregunta y los objetivos específicos nos pueden llevar a esa agrupación, tanto como la exploración descriptiva, como veremos más adelante.
Temporalidad. Aunque la base de datos contiene información de un único año (es estática o seccional) algunas columnas nos permiten mirar temporalidad. Es el caso de las pérdidas y utilidades acumuladas, o el resultado de ejercicios anteriores. De hecho, una de ellas será clave para un KPI que calcularemos más adelante.
Geografía. La información geográfica esta detallada a 3 niveles de granularidad: departamento, ciudad y dirección específica.
Realizar visualización y análisis geográfico es claramente posible.
Para explorar los datos de manera univariada, vamos a separar las variables escalares de las variables categóricas.
estadnumericos <- sapply(estados15, is.numeric)
estadnum<- estados15[ , estadnumericos]
#y ahora los factores
estadfactores <- sapply(estados15, is.factor)
estadfact<- estados15[ , estadfactores]
variables escalares.
Ahora vamos a obtener un conjunto de descriptivos para las variables escalares.
library(psych)
## Warning: package 'psych' was built under R version 4.1.1
#creo una función para el coeficiente de variación pues la librería no lo obtiene ni R lo tiene
# CV (o "r"): también denominado como coeficiente de variación de Pearson, es una medida estadística que nos informa acerca de la dispersión relativa de un conjunto de datos.
#Es decir, nos informa al igual que otras medidas de dispersión, de si una variable se mueve mucho, poco, más o menos que otra.
#Su cálculo se obtiene de dividir la desviación típica entre el valor absoluto de la media del conjunto y por lo general se expresa en porcentaje para su mejor comprensión.
# desviación típica/|x| x 100
# ejm Puedo comparar peso de elefantes (kgs) vs ratones (gramos)
CV <- function(var){(sd(var)/mean(var))*100}
#luego lo calculo para todas las columnas
cvs<-apply(estadnum,2,CV)
#obtengo la descriptiva
numdescriptive<-describe(estadnum)
#uno el Coeficiente de variación
numdescriptive<-cbind(numdescriptive,cvs)
numdescriptive
## vars n mean sd
## 1105 CAJA 1 21280 70298.37 620288.2
## 3710 PERDIDAS ACUMULADAS 2 8533 1747018.06 15108906.9
## 3705 UTILIDADES ACUMULADAS 3 18614 1620912.18 9887666.7
## TOTAL PASIVO Y PATRIMONIO 4 25337 14881996.45 62491237.4
## TOTAL ACTIVO 5 25337 14881996.45 62491237.4
## TOTAL PASIVO 6 25337 7021750.22 45347272.5
## 37 RESULTADOS DE EJERCICIOS ANTERIORES 7 25337 602453.10 12115551.0
## TOTAL PATRIMONIO 8 25337 7860246.23 36445422.2
## 41 INGRESOS OPERACIONALES 9 25337 11234494.05 93708581.5
## UTILIDAD BRUTA 10 25337 3399713.78 70083314.5
## UTILIDAD OPERACIONAL 11 25337 681118.79 6963388.7
## UTILIDAD ANTES DE IMPUESTOS 12 25337 634389.83 7793268.9
## 59 GANANCIAS Y PERDIDAS 13 25337 381597.00 7132954.6
## EFECTIVO AÑO ANTERIOR 14 25337 583387.02 4266306.7
## EFECTIVO PRESENTE AÑO 15 25337 738908.38 19571183.4
## 14 SUBTOTAL INVENTARIOS (CP) 16 25337 1953597.60 13742934.1
## median trimmed mad min
## 1105 CAJA 3200 13275.3 4538.239 0
## 3710 PERDIDAS ACUMULADAS 153009 402946.5 226851.143 0
## 3705 UTILIDADES ACUMULADAS 443803 711637.3 575218.407 0
## TOTAL PASIVO Y PATRIMONIO 5353340 7465589.2 5545442.910 50
## TOTAL ACTIVO 5353340 7465589.2 5545442.910 50
## TOTAL PASIVO 2051406 3237123.8 2557943.123 0
## 37 RESULTADOS DE EJERCICIOS ANTERIORES 156947 376197.1 401191.560 -995960000
## TOTAL PATRIMONIO 2204730 3416729.3 2549664.285 -910723000
## 41 INGRESOS OPERACIONALES 2727658 4735768.0 3821635.751 0
## UTILIDAD BRUTA 948693 1463234.3 1264309.389 -789124779
## UTILIDAD OPERACIONAL 167979 333898.7 341576.214 -804018063
## UTILIDAD ANTES DE IMPUESTOS 145169 290445.3 270337.284 -794796715
## 59 GANANCIAS Y PERDIDAS 88012 185120.8 198093.151 -794796715
## EFECTIVO AÑO ANTERIOR 121965 231509.1 172421.932 0
## EFECTIVO PRESENTE AÑO 131087 249525.9 185575.559 0
## 14 SUBTOTAL INVENTARIOS (CP) 145038 634667.7 215033.339 0
## max range skew
## 1105 CAJA 69467861 69467861 73.11737
## 3710 PERDIDAS ACUMULADAS 995960000 995960000 41.63896
## 3705 UTILIDADES ACUMULADAS 944145883 944145883 57.55872
## TOTAL PASIVO Y PATRIMONIO 5027555000 5027554950 44.96116
## TOTAL ACTIVO 5027555000 5027554950 44.96116
## TOTAL PASIVO 5938278000 5938278000 94.74321
## 37 RESULTADOS DE EJERCICIOS ANTERIORES 944145883 1940105883 -4.23859
## TOTAL PATRIMONIO 3492203650 4402926650 42.37479
## 41 INGRESOS OPERACIONALES 13077490000 13077490000 111.58280
## UTILIDAD BRUTA 10988307000 11777431779 152.03886
## UTILIDAD OPERACIONAL 311038129 1115056192 -53.54865
## UTILIDAD ANTES DE IMPUESTOS 396593754 1191390469 -29.57933
## 59 GANANCIAS Y PERDIDAS 357229754 1152026469 -44.73451
## EFECTIVO AÑO ANTERIOR 532664326 532664326 84.49630
## EFECTIVO PRESENTE AÑO 3085517000 3085517000 154.61826
## 14 SUBTOTAL INVENTARIOS (CP) 1554203000 1554203000 69.65093
## kurtosis se cvs
## 1105 CAJA 7555.091 4252.141 NA
## 3710 PERDIDAS ACUMULADAS 2387.610 163561.910 NA
## 3705 UTILIDADES ACUMULADAS 4778.387 72472.620 NA
## TOTAL PASIVO Y PATRIMONIO 3099.432 392592.075 419.9117
## TOTAL ACTIVO 3099.432 392592.075 419.9117
## TOTAL PASIVO 11781.432 284887.619 645.8115
## 37 RESULTADOS DE EJERCICIOS ANTERIORES 3526.798 76114.180 2011.0364
## TOTAL PATRIMONIO 3522.460 228963.044 463.6677
## 41 INGRESOS OPERACIONALES 15084.835 588710.481 834.1148
## UTILIDAD BRUTA 23820.372 440288.191 2061.4475
## UTILIDAD OPERACIONAL 7365.087 43746.473 1022.3457
## UTILIDAD ANTES DE IMPUESTOS 4813.245 48960.074 1228.4669
## 59 GANANCIAS Y PERDIDAS 6572.492 44811.746 1869.2376
## EFECTIVO AÑO ANTERIOR 9803.918 26802.449 731.2996
## EFECTIVO PRESENTE AÑO 24357.107 122953.103 2648.6617
## 14 SUBTOTAL INVENTARIOS (CP) 6961.951 86337.977 703.4680
Hay muchas posibles observaciones sobre estos descriptivos. Haré una por cada una de las tres preguntas descriptivas que hemos planteado. Obsérvese que hasta ahora estamos arañando la superficie de los datos pero ya hay cosas interesantes por decir.
Al revisar los valores mínimos y máximos, parece tener sentido de negocio que las utilidades puedan tener valores negativos, y todas las demás variables no. Que haya patrimonios negativos resulta llamativo, y nos invitaría a explorar si ello es posible.
Así mismo los máximos, aunque dificiles de explorar, presentan un dato llamativo: los ingresos y utilidades brutas más altas son dos escalas de dimensión superiores a las utilidades operacionales más altas. Esos ingresos y utilidades brutas están en dimensiones de 10 a la 14 en pesos.
Si se piensa que el presupuesto nacional está en el orden de 10 a la 15 y el PIB en el orden de 10 a la 16 pesos, el valor es viable pero merece revisión. Al chequear la utilidad operacional máxima está en el orden de 10 a la 13 cuando las utilidades de Ecopetrol están en el orden de 10 a la 12 lo que hace creer que hay datos erróneos en la base de datos.
Implicaciones de análisis. La variabilidad es muy grande, las asimetrías y las curtosis son muy grandes. Cualquier algoritmo que tenga dificultades con datos atípicos no podría aplicarse antes de hacer un tratamiento de los mismos. Es posible que los gráficos no sean viables antes de esa preparación. Hay también variables con datos perdidos o inexistentes.
Conocimiento obtenido. La utilidad final media antes de impuestos (usando la media recortada) para una empresa grande (o vigilada) colombiana es de cerca de 290 millones de pesos y la mediana de 145 millones de pesos aproximadamente. Ese podría ser un buen referente para analizar propuestas de financiación a nuevos negocios.
Variables categóricas. Para las variables categóricas lo usual es tener una tabla, si desea con porcentajes y gráfico. Veamos una:
deptos<-table(estadfact$DEPARTAMENTO)
barplot(deptos,main="Empresas x Departamento", ylab="# de empresas", cex.names=0.5, las=2)
sector<-table(estadfact$SECTOR)
barplot(sector,main="Empresas x Sector", ylab="# de empresas", cex.names=0.5, las=2)
#ciudad<-table(estadfact$CIUDAD)
#barplot(ciudad,main="Empresas x Ciudad", ylab="# de empresas", cex.names=0.5, las=2)
prop.table(deptos)
##
## AMAZONAS ANTIOQUIA ARAUCA
## 1.578719e-04 1.470971e-01 6.314875e-04
## ATLANTICO BOGOTA D.C. BOLIVAR
## 4.834827e-02 5.147018e-01 2.091803e-02
## BOYACA CALDAS CAQUETA
## 5.288708e-03 1.132731e-02 6.709555e-04
## CASANARE CAUCA CESAR
## 2.960098e-03 3.433714e-03 3.236374e-03
## CHOCO CORDOBA CUNDINAMARCA
## 2.762758e-04 5.683388e-03 4.657221e-02
## GUAVIARE HUILA LA GUAJIRA
## 7.893594e-05 6.314875e-03 9.866993e-04
## MAGDALENA META NARINO
## 7.498915e-03 8.564550e-03 4.380945e-03
## NORTE DE SANTANDER PUTUMAYO QUINDIO
## 1.211667e-02 2.762758e-04 4.341477e-03
## RISARALDA SAN ANDRES Y PROVIDENCIA SANTANDER
## 1.373485e-02 5.091368e-03 3.157438e-02
## SUCRE TOLIMA VALLE
## 2.565418e-03 8.446146e-03 8.264593e-02
## VICHADA
## 7.893594e-05
#prop.table(ciudad)
Primero vamos a transformar los datos numéricos a millones para hacerlos más entendibles.
estadnum2<-estadnum/1000
estad1<-cbind(estadfact,estadnum2)
Vamos a limpiar y seleccionar datos (select and clean).
Vamos a realizar los siguientes cambios:
Retirar las empresas con más de $500.000 millones de ingresos operacionales. La razón de esto, es que es el valor mínimo de las 235 empresas más grandes de Colombia, clasificadas por la revista Dinero en 2017 como “millonarias” o “billonarias”. Vamos a trabajar en la suposición de que o son errores o no nos interesan en el análisis por pertenecer a una categoría diferente.
Así mismo vamos a retirar porque no nos interesan empresas inactivas (ingresos inferiores a 1 millon de pesos al mes- 12 millones anuales).
Dada la alta existencia de extremos y atípicos en las utilidades antes de impuestos, vamos a buscar un punto de corte basado en cuantiles:
quantile(estad1$`UTILIDAD ANTES DE IMPUESTOS`,c(.05,.95))
## 5% 95%
## -633.8474 3042.7106
quantile(estad1$`UTILIDAD ANTES DE IMPUESTOS`,c(.01,.99))
## 1% 99%
## -4050.357 10935.392
quantile(estad1$`UTILIDAD ANTES DE IMPUESTOS`,c(.005,.995))
## 0.5% 99.5%
## -7260.204 17614.913
quantile(estad1$`UTILIDAD ANTES DE IMPUESTOS`,c(.001,.999))
## 0.1% 99.9%
## -23032.28 60831.84
Decidimos cortar un 0,5% por arriba y 0,5% por abajo, después de observar estos valores y comparar con los listados de la revista Dinero.
Ahora vamos a efectuar las 3 operaciones.
estad2<-subset(estad1,estad1$`41 INGRESOS OPERACIONALES `<=500000 & estad1$`41 INGRESOS OPERACIONALES `>=12)
t1<-quantile(estad1$`UTILIDAD ANTES DE IMPUESTOS`,.005)
t2<-quantile(estad1$`UTILIDAD ANTES DE IMPUESTOS`,.995)
estad3<-subset(estad2, estad2$`UTILIDAD ANTES DE IMPUESTOS`>t1 & estad2$`UTILIDAD ANTES DE IMPUESTOS`<t2)
A pesar del corte, aún un histograma o un diagrama de caja y bigotes no son muy visibles:
hist(estad3$`41 INGRESOS OPERACIONALES `)
boxplot(estad3$`UTILIDAD ANTES DE IMPUESTOS`)
Una posible solución para observar mejor lo que ocurre es crear una nueva variable que use una función que reduzca monótonamente los valores, como el logaritmo.
log 100 = log10 100 = log10 10*2 = 2
En estadística, el logaritmo de base 10 (log10) se puede utilizar para transformar datos por las razones siguientes:
Para hacer que los datos con asimetría positiva sean más “normales” Para explicar una curvatura en un modelo lineal Para estabilizar la variación dentro de grupos
visualizar ejemplos de transformaciónes aqui:
Transformación de datos para que parezcan mas normales
Variación en los grupos para que parezcan mas normales
Utilizaremos la base 10 porque de esa manera la interpretación se mantiene. Para los ingresos basta con aplicarla:
hist(log10(estad3$`41 INGRESOS OPERACIONALES `))
boxplot(log10(estad3$`41 INGRESOS OPERACIONALES `))
Obsérvese que la moda de ingresos está entre mil y diez mil millones de pesos en ingresos. (10 a la 3 y 10 a la 4)
Para la variable utilidades finales el cambio es un poquito más sofisticado. Aumentamos uno al logaritmo para garantizar que una utilidad de cero va a corresponder efectivamente al cero, y ponemos valores positivos a las utilidades y negativos a las pérdidas:
estad3$lognet<-ifelse(estad3$`59 GANANCIAS Y PERDIDAS`<0,-1*log10(abs(1+estad3$`59 GANANCIAS Y PERDIDAS`)),log10(abs(1+estad3$`59 GANANCIAS Y PERDIDAS`)))
hist(estad3$lognet)
Se genera, ahora sí, visible, una distribución bimodal que deja ver, en general, que hay más empresas con ganancias que con pérdidas, aunque la moda en ambos casos está alrededor de los cientos a miles de millones.
Este archivo tiene directamente los 3 profits básicos: gross profit (utilidad bruta), net profit (ganancias y pérdidas) y operational profit (utilidad operacional).
Por eso vamos a calcular 3 KPI´s: EL margen porcentual de utilidad (net profit margin), una aproximación al crecimiento del ingreso (growth revenue rate) y, bajo ciertas suposiciones, un acercamiento a el ciclo de conversión a efectivo (cash conversion cycle).
En este caso se deben dividir las utilidades finales sobre los ingresos.
estad3$netmargin<-estad3$`59 GANANCIAS Y PERDIDAS`/estad3$`41 INGRESOS OPERACIONALES `
hist(estad3$netmargin)
describe(estad3$netmargin)
## vars n mean sd median trimmed mad min max range skew
## X1 1 22766 0.1 5.37 0.03 0.05 0.05 -187.84 312.52 500.36 21.79
## kurtosis se
## X1 1659.62 0.04
summary(estad3$netmargin)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -187.84341 0.00678 0.03421 0.09554 0.08459 312.51524
quantile(estad3$netmargin,c(.005,.01,.99,.995))
## 0.5% 1% 99% 99.5%
## -5.675783 -3.488295 2.694256 6.224662
Por la enorme distancia entre minimo y percentil 1, y máximo y percentil 99 sería natural que nos concentráramos en el 99% de las empresas
t3<-quantile(estad3$netmargin,.005)
t4<-quantile(estad3$netmargin,.995)
estad3a<-subset(estad3, estad3$netmargin>t3 & estad3$netmargin<t4)
summary(estad3a$netmargin)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -5.67150 0.00698 0.03421 0.04138 0.08378 6.19294
hist(estad3a$netmargin)
describe(estad3a$netmargin)
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 22538 0.04 0.58 0.03 0.05 0.05 -5.67 6.19 11.86 -0.95 40.51 0
boxplot(estad3a$netmargin)
summary(estad3a$netmargin)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -5.67150 0.00698 0.03421 0.04138 0.08378 6.19294
El 50% de las empresas obtienen márgenes positivos entre el 0,6% y el 8%, con una tendencia central entre el 3% y el 5%. ¿cómo se compara esto contra el costo del dinero en ese año? La asimetría negativa indica que las empresas tienden a dar ganancias pero hay una cola más larga de lo usual en las pérdidas.
Si bien por definición es la tasa de aumento del ingreso, en este caso vamos a entender y manejar un indicador diferente (por los datos que tenemos) como el cambio en la utilidad final que se obtuvo de año a año, frente a los ingresos operacionales, es decir, el cambio en el margen neto:
estad3a$rgr<-(estad3a$`59 GANANCIAS Y PERDIDAS`- estad3a$`37 RESULTADOS DE EJERCICIOS ANTERIORES`)/estad3a$`41 INGRESOS OPERACIONALES `
summary(estad3a$rgr)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -4391.581 -0.282 -0.009 -0.729 0.061 4218.141
describe(estad3a$rgr)
## vars n mean sd median trimmed mad min max range skew
## X1 1 22538 -0.73 43.13 -0.01 -0.13 0.2 -4391.58 4218.14 8609.72 -4.44
## kurtosis se
## X1 8850.33 0.29
hist(estad3a$rgr)
quantile(estad3a$rgr,c(.005,.01,.99,.995))
## 0.5% 1% 99% 99.5%
## -44.987107 -26.522910 7.448301 18.230899
De nuevo resulta sorpresivo que tengamos empresas cuyo cambio en ganancias de un año a otro sea el ¡4000% de sus ingresos operacionales!
Vamos a hacer un conjunto de suposiciones para este cash conversion cycle, algunas de ellas bastante fuertes.
• Vamos a tomar el costo de ventas como el valor del costo de las mercancías vendidas. Ese costo de ventas es (ingresos operacionales- utilidad bruta)- suposición fuerte.
• Vamos a tomar como una aproximación al promedio de inventarios el valor del inventario final (suposición muy fuerte).
• Vamos a calcularlo en las indusrias en que más tiene sentido: manufactura y comercio. Esas empresas corresponden a los valores C y G del código CIIU. Por eso vamos a crear una nueva variable que sea únicamente la primera letra del código CIIU.
estad3a$industria<-substr(estad3a$CIIU2,1,1)
table(estad3a$industria)
##
## A B C D E F G H I J K L M N O P
## 1449 379 3289 41 43 2680 5985 545 454 677 1044 2483 2093 968 3 109
## Q R S U
## 83 91 121 1
estad4<-subset(estad3a, estad3a$industria=="C"|estad3a$industria=="G")
head(estad4,10)
## CIUDAD DEPARTAMENTO
## 3 BOGOTA D.C. BOGOTA D.C.
## 7 BOGOTA D.C. BOGOTA D.C.
## 8 BOGOTA D.C. BOGOTA D.C.
## 13 BARRANQUILLA ATLANTICO
## 14 BARRANQUILLA ATLANTICO
## 15 MEDELLIN ANTIOQUIA
## 17 CALI VALLE
## 20 BOGOTA D.C. BOGOTA D.C.
## 22 CALI VALLE
## 24 BOGOTA D.C. BOGOTA D.C.
## SECTOR CIIU2 1105 CAJA
## 3 ELABORACIÓN DE BEBIDAS C1101 NA
## 7 OTRAS INDUSTRIAS MANUFACTURERAS C3290 3.070
## 8 COMERCIO AL POR MAYOR Y EN COMISIÓN O POR CONTRATA, EXCEPTO G4690 2.100
## 13 CONFECCIÓN DE PRENDAS DE VESTIR C1410 0.749
## 14 FABRICACIÓN DE PRODUCTOS ELABORADOS DE METAL, EXCEPTO MAQUI C2511 9.521
## 15 FABRICACIÓN DE PRODUCTOS DE CAUCHO Y DE PLÃ\201STICO C2229 1.000
## 17 COMERCIO AL POR MENOR (INCLUSO EL COMERCIO AL POR MENOR DE C G4773 42.501
## 20 COMERCIO AL POR MAYOR Y EN COMISIÓN O POR CONTRATA, EXCEPTO G4690 287.415
## 22 COMERCIO, MANTENIMIENTO Y REPARACIÓN DE VEHÃ\215CULOS AUTOMOTO G4530 3.381
## 24 OTRAS INDUSTRIAS MANUFACTURERAS C3290 28.373
## 3710 PERDIDAS ACUMULADAS 3705 UTILIDADES ACUMULADAS
## 3 NA 139.783
## 7 NA 850.290
## 8 NA 200.000
## 13 NA 2446.140
## 14 NA 62.348
## 15 0 0.000
## 17 NA 1096.850
## 20 NA 5609.771
## 22 NA 854.972
## 24 NA 127.901
## TOTAL PASIVO Y PATRIMONIO TOTAL ACTIVO TOTAL PASIVO
## 3 1823.336 1823.336 827.137
## 7 5527.977 5527.977 2141.147
## 8 2469.360 2469.360 972.206
## 13 4288.923 4288.923 741.814
## 14 3673.282 3673.282 1977.463
## 15 1255.148 1255.148 260.468
## 17 3645.474 3645.474 1486.599
## 20 15135.029 15135.029 6840.587
## 22 3917.938 3917.938 1860.049
## 24 3137.462 3137.462 1852.719
## 37 RESULTADOS DE EJERCICIOS ANTERIORES TOTAL PATRIMONIO
## 3 139.783 996.199
## 7 850.290 3386.830
## 8 200.000 1497.154
## 13 2446.140 3547.109
## 14 62.348 1695.819
## 15 0.000 994.680
## 17 1096.850 2158.875
## 20 5609.771 8294.442
## 22 854.972 2057.889
## 24 127.901 1284.743
## 41 INGRESOS OPERACIONALES UTILIDAD BRUTA UTILIDAD OPERACIONAL
## 3 506.447 173.398 -22.453
## 7 7683.606 2929.919 298.207
## 8 3775.448 1348.126 144.602
## 13 2916.743 1016.072 406.257
## 14 1842.664 833.437 379.268
## 15 1496.758 432.175 196.913
## 17 9467.564 913.885 -1014.804
## 20 17002.908 2398.747 581.259
## 22 3965.743 1346.443 453.128
## 24 4719.709 2267.862 566.399
## UTILIDAD ANTES DE IMPUESTOS 59 GANANCIAS Y PERDIDAS EFECTIVO AÑO ANTERIOR
## 3 30.156 30.156 261.311
## 7 212.893 127.046 328.608
## 8 231.610 149.020 141.090
## 13 406.674 268.405 40.409
## 14 76.981 50.807 2032.067
## 15 194.544 127.269 2.125
## 17 548.588 343.258 594.093
## 20 114.598 80.219 2.707
## 22 278.762 174.424 873.659
## 24 149.851 98.903 310.697
## EFECTIVO PRESENTE AÑO 14 SUBTOTAL INVENTARIOS (CP) lognet netmargin
## 3 206.912 309.200 1.493542 0.059544237
## 7 490.230 1349.219 2.107366 0.016534684
## 8 86.895 758.823 2.176149 0.039470812
## 13 25.674 985.136 2.430406 0.092022163
## 14 1787.315 2022.544 1.714388 0.027572580
## 15 9.521 36.198 2.108122 0.085029778
## 17 394.709 1070.513 2.536884 0.036256211
## 20 15.595 2879.211 1.909658 0.004717958
## 22 831.612 2241.948 2.244089 0.043982679
## 24 167.020 1277.692 1.999579 0.020955317
## rgr industria
## 3 -0.216462927 C
## 7 -0.094128200 C
## 8 -0.013503033 G
## 13 -0.746632460 C
## 14 -0.006263215 C
## 15 0.085029778 C
## 17 -0.079597244 G
## 20 -0.325212134 G
## 22 -0.171606683 G
## 24 -0.006144023 C
table(estad4$industria)
##
## C G
## 3289 5985
summary(estad4$`14 SUBTOTAL INVENTARIOS (CP)`)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 247.9 879.3 2583.5 2485.5 773598.7
Ahora calculamos el Cash Conversion Cycle, teniendo en cuenta que hay empresas con inventario en 0 o muy bajo (se corta en 12 millones de pesos en inventario). A esas empresas les vamos a asignar 0 en su CCC.
#primero lo hacemos rotación
estad4$rotacion<-ifelse(estad4$`14 SUBTOTAL INVENTARIOS (CP)`<12,0,(estad4$`41 INGRESOS OPERACIONALES `-estad4$`UTILIDAD BRUTA`)/estad4$`14 SUBTOTAL INVENTARIOS (CP)`)
#luego obtenemos el CCC
estad4$ccc<-ifelse(estad4$rotacion==0,0,365/estad4$rotacion)
summary(estad4$ccc)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -9552345 2 54 26585 292 124437625
hist(estad4$ccc)
describe(estad4$ccc)
## vars n mean sd median trimmed mad min max range
## X1 1 9274 26585.05 1712068 54.13 171.88 80.25 -9552345 124437625 133989970
## skew kurtosis se
## X1 68.17 4690.11 17778.18
quantile(estad4$ccc,c(.005,.01,.99,.995))
## 0.5% 1% 99% 99.5%
## 0.00 0.00 34717.05 78921.30
La mediana y la media recortada quizás serían las mejores estimaciones de tendencia central. No hace falta reiterar el problema de datos extremos de esta base de datos.
Como pregunta queda: ¿es posible obtener una aproximación al KPI market share? ¿cómo?
Finalmente miremos algunos cruces bivariados para responder las siguientes preguntas: 1. ¿qué relación hay entre la utilidad bruta y la neta?
estad3a$loggross<-ifelse(estad3a$`UTILIDAD BRUTA`<0,-1*log10(abs(1+estad3a$`UTILIDAD BRUTA`)),log10(abs(1+estad3a$`UTILIDAD BRUTA`)))
plot(estad3a$loggross, estad3a$lognet)
cor(estad3a$`UTILIDAD BRUTA`,estad3a$`UTILIDAD ANTES DE IMPUESTOS`)
## [1] 0.5391461
cor(estad3a$loggross, estad3a$lognet)
## [1] 0.3882656
Por la naturaleza de la transformación logarítmica se presenta este tipo de gráfico que es bien instructivo: Nos divide las empresas en 4. Las más llamativas son aquellas cuyos resultados cambiaron (pérdida bruta con utilidad neta o ganancia bruta con pérdida neta).
boxplot(estad3a$lognet~estad3a$industria, data=estad3a)
table(estad3a$industria)
##
## A B C D E F G H I J K L M N O P
## 1449 379 3289 41 43 2680 5985 545 454 677 1044 2483 2093 968 3 109
## Q R S U
## 83 91 121 1
Pareciera que las actividades D (Suministro de electricidad, gas, vapor y aire acondicionado) y O (Administración pública y defensa;planes de seguridad social de afiliación obligatoria) no tuvieron un buen año 2015, sin embargo, la actividad O tiene únicamente 3 empresas registradas, y puede sufrir del problema de extremos pequeños.
Este notebook fue un resumen de los temas de KPI, data understanding/preparation, y descriptiva sobre una base de datos real.