Carga de los datos

estados15<-readRDS(file="C:/Users/Julian/Desktop/MineriaD/Taller 3/estadossuper2015.rds")

Encabezados

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

Reviso estructura de los datos

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.

Exploración de los datos (explore data) y verificación de calidad (verify data quality).

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.

Sentido de negocio.

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)

PREPARACIÓN DE DATOS (Data preparation).

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:

  1. 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.

  2. Así mismo vamos a retirar porque no nos interesan empresas inactivas (ingresos inferiores a 1 millon de pesos al mes- 12 millones anuales).

  3. 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:

https://support.minitab.com/es-mx/minitab/20/help-and-how-to/calculations-data-generation-and-matrices/calculator/calculator-functions/logarithm-calculator-functions/log-base-10-function/

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.

Creando variables. KPI´s

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).

Net profit margin

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.

Revenue growth rate

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!

Cash conversion cycle (CCC)

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?

Cruces bivariados.

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).

  1. El tipo de industria marca diferencias en la utilidad? De acuerdo con Porter, eso mostraría cambios en la estructura de las fuerzas competitivas
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.