El DANE en una “encuesta de micro-negocios” reunio informacion detallada sobre esas características sociales económicas productivas de los micro-negocios del país, con el fin de apoyar el diseño de políticas públicas dirigidas al fortalecimiento.
En Colombia, los micro-negocios son una parte fundamental de la economía ya que generan gran parte del empleo y sustento de la población del país, sin embargo este tipo de productores suelen enfrentarse a recursos limitados, tecnología y formalizacion lo que afecta su competitividad y su sostenibilidad.
El presente estudio tiene como objetivos analizar los factores que pueden influir en el desempeño de los micro-negocios, el ingreso mensual, las ventas, costos del mes etc. Partir del análisis estadístico se busca como estás características influyen en la productividad y sostenibilidad.
La presente base de datos recopila información estadística de Colombia, segmentada en variables cualitativas y cuantitativas que permiten analizar su situación económica y laboral. Esta, combina indicadores clave como ventas mensuales, costos mensuales y el salario. Las variables fueron obtenidas con el objetivo de llevar a cabo el estudio “micro-negocio y empleo” y su compilación procede de “el DANE”.
library(tidyverse)
library(caret)
Costos <- read_delim("Datos/Módulo de costos, gastos y activos.csv", delim = ";", trim_ws = TRUE)
Ventas <- read_delim("Datos/Módulo de ventas o ingresos.csv", delim = ";", trim_ws = TRUE)
Id <- read_delim("Datos/Módulo de identificación y clasificación económica.csv", delim = ";", trim_ws = TRUE)
Personal <- read_delim("Datos/Módulo de personal ocupado.csv", delim = ";", trim_ws = TRUE)
Variables cualitativas: Departamentos
Variables cuantitativas:
A continuacion se muestran algunos valores la base de datos utilizada (BaseF)
DIRECTORIO | Gastos_Promedio | Ventas_Promedio | Personal | Meses | COD_DEPTO | Salario | Departamento |
---|---|---|---|---|---|---|---|
4780178 | 2520000 | 2000000 | 3 | 60 | 05 | 880000 | Antioquia |
4780199 | 875880 | 1000000 | 1 | 5 | 05 | 828116 | Antioquia |
4780206 | 1336000 | 300000 | 1 | 6 | 05 | 840000 | Antioquia |
4780272 | 70000 | 400000 | 1 | 12 | 08 | 200000 | Atlantico |
4781478 | 290000 | 5000000 | 1 | 240 | 68 | 850000 | Santander |
4781603 | 125000 | 1000000 | 1 | 300 | 76 | 800000 | Valle |
4781869 | 510000 | 2500000 | 4 | 22 | 05 | 825000 | Antioquia |
4781882 | 520000 | 2000000 | 1 | 180 | 05 | 1500000 | Antioquia |
4781911 | 10000 | 100000 | 1 | 240 | 05 | 150000 | Antioquia |
4781929 | 50000 | 800000 | 1 | 120 | 05 | 800000 | Antioquia |
El presente estudio aplica un modelo de regresión lineal múltiple con el objetivo de analizar la influencia de diversas variables de costo sobre el nivel de empleados en diferentes departamentos. La variable dependiente es la venta en un mes , mientras que las variables independientes incluyen factores cuantitativos como costos en un mes, personal del negocio , salario del personal y los departamentos escogidos ( Bogotá, Antioquia, valle Atlántico, Bolívar, Santander).
La ecuación general del modelo puede expresarse de la siguiente forma:
Ventas en un mes = β0 + β1(costos en un mes ) + β2(personal del negocio) + β3(salarios del personal) + β4(meses que lleva en operación) + β5( Bogotá) + β6(Antioquia) + β7(valle )+ β8(Atlántico) + β9(Bolívar)+ β10(Santander) + ε
Donde:
β0 es el intercepto. βi representa los coeficientes estimados de cada variables independiente. ε es el término de error.
A continuacion se muestra el codigo filtrado con todas las variables.
keep_depts <- c("05", "11", "76", "08", "13", "68")
Costos1 <- Costos %>%
group_by(DIRECTORIO) %>%
summarise(GASTOS_MES = mean(GASTOS_MES, na.rm = TRUE), .groups = "drop")
Ventas1 <- Ventas %>%
group_by(DIRECTORIO) %>%
summarise(P3072 = mean(P3072, na.rm = TRUE), .groups = "drop")
Id1 <- Id %>%
mutate(COD_DEPTO = str_pad(str_trim(as.character(COD_DEPTO)), 2, pad = "0")) %>%
group_by(DIRECTORIO) %>% summarise(P3032_1 = mean(P3032_1, na.rm = TRUE),
P3034 = mean(P3034, na.rm = TRUE),
COD_DEPTO = first(COD_DEPTO),
.groups = "drop")
Personal1 <- Personal %>%
group_by(DIRECTORIO) %>%
summarise(P3079 = mean(P3079, na.rm = TRUE), .groups = "drop")
BaseF <- Costos1 %>%
inner_join(Ventas1, by = "DIRECTORIO") %>%
inner_join(Id1, by = "DIRECTORIO") %>%
inner_join(Personal1, by = "DIRECTORIO") %>%
rename(Gastos_Promedio = GASTOS_MES,
Ventas_Promedio = P3072,
Personal = P3032_1,
Meses = P3034,
Salario = P3079) %>%
mutate(COD_DEPTO = as.character(COD_DEPTO)) %>%
filter(COD_DEPTO %in% keep_depts) %>%
filter(if_all(where(is.numeric), ~ !is.na(.) & . > 0)) %>%
mutate(Departamento = case_when(COD_DEPTO == "05" ~ "Antioquia",
COD_DEPTO == "11" ~ "Bogota",
COD_DEPTO == "76" ~ "Valle",
COD_DEPTO == "08" ~ "Atlantico",
COD_DEPTO == "13" ~ "Bolivar",
COD_DEPTO == "68" ~ "Santander"),
Departamento = factor(Departamento, levels = c("Bogota", "Antioquia", "Valle", "Atlantico", "Bolivar", "Santander"))) %>%
filter(between(Ventas_Promedio, quantile(Ventas_Promedio, 0.01, na.rm = TRUE), quantile(Ventas_Promedio, 0.99, na.rm = TRUE)),
between(Gastos_Promedio, quantile(Gastos_Promedio, 0.01, na.rm = TRUE), quantile(Gastos_Promedio, 0.99, na.rm = TRUE)),
between(Salario, quantile(Salario, 0.01, na.rm = TRUE), quantile(Salario, 0.99, na.rm = TRUE)))
Al tener todos los datos filtrados (un total de 2549 datos) y nuestra base creada, se empezaron a obtener resultados que compartiremos a continuacion.
modelo<- lm(Ventas_Promedio ~ Gastos_Promedio + Personal + Salario + Meses + Departamento,data = BaseF)
summary(modelo)
##
## Call:
## lm(formula = Ventas_Promedio ~ Gastos_Promedio + Personal + Salario +
## Meses + Departamento, data = BaseF)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4841255 -920683 -333826 309888 19326150
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.255e+05 1.614e+05 -2.636 0.00844 **
## Gastos_Promedio 4.567e-01 3.548e-02 12.872 < 2e-16 ***
## Personal 2.456e+05 3.304e+04 7.434 1.43e-13 ***
## Salario 1.461e+00 1.229e-01 11.887 < 2e-16 ***
## Meses 6.013e+02 3.253e+02 1.848 0.06465 .
## DepartamentoAntioquia 3.093e+05 1.509e+05 2.050 0.04048 *
## DepartamentoValle 1.651e+05 1.466e+05 1.126 0.26015
## DepartamentoAtlantico 2.072e+05 1.382e+05 1.499 0.13405
## DepartamentoBolivar 1.486e+06 1.710e+05 8.688 < 2e-16 ***
## DepartamentoSantander 3.943e+05 1.732e+05 2.276 0.02291 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2013000 on 2584 degrees of freedom
## Multiple R-squared: 0.2188, Adjusted R-squared: 0.2161
## F-statistic: 80.41 on 9 and 2584 DF, p-value: < 2.2e-16
shapiro.test(modelo$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo$residuals
## W = 0.6816, p-value < 2.2e-16
bptest(modelo)
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 125.46, df = 9, p-value < 2.2e-16
vif(modelo)
## GVIF Df GVIF^(1/(2*Df))
## Gastos_Promedio 1.272786 1 1.128178
## Personal 1.156871 1 1.075579
## Salario 1.201807 1 1.096270
## Meses 1.033344 1 1.016535
## Departamento 1.130597 5 1.012350
dwtest(modelo)
##
## Durbin-Watson test
##
## data: modelo
## DW = 1.9882, p-value = 0.3554
## alternative hypothesis: true autocorrelation is greater than 0
ggplot(data = data.frame(Fitted = fitted(modelo), Residuals = resid(modelo)),
aes(x = Fitted, y = Residuals)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "loess", se = FALSE, color = "red", linewidth = 1, formula = y ~ x) +
labs(title = "Linealidad: Residuos vs Valores Ajustados",
x = "Valores Ajustados (Fitted Values)",
y = "Residuos") +
theme_minimal()
Como se puede observar en la grafica los datos y la tendencia en fuertemente lineal
kable(Descriptivos, digits = 2)
Estadístico | Ventas | Gastos | Salario | Meses | Personal |
---|---|---|---|---|---|
Promedio | 1915034 | 986066.9 | 685691.5 | 146.18 | 1.85 |
Min | 90000 | 10000.0 | 40000.0 | 2.00 | 0.33 |
Max | 24810000 | 7870000.0 | 2000000.0 | 500.00 | 8.00 |
Desv | 2274079 | 1257285.5 | 352775.6 | 123.56 | 1.29 |
B0 <- modelo$coefficients[1]
B1 <- modelo$coefficients["Gastos_Promedio"]
B2 <- modelo$coefficients["Personal"]
B3 <- modelo$coefficients["Salario"]
B4 <- modelo$coefficients["Meses"]
newdata <- data.frame(
Gastos_Promedio = c(500000, 800000, 1200000, 2000000),
Personal = c(2, 3, 5, 6),
Salario = c(1000000, 1200000, 1400000, 1600000),
Meses = c(12, 24, 36, 48))
newdata
## Gastos_Promedio Personal Salario Meses
## 1 500000 2 1000000 12
## 2 800000 3 1200000 24
## 3 1200000 5 1400000 36
## 4 2000000 6 1600000 48
predict(modelo1, newdata)
## 1 2 3 4
## 2081285 2743920 3702791 4572840
newdata$Ventas_Promedio_Predicho <- predict(modelo1, newdata)
kable(newdata, caption = "Predicciones del modelo de Ventas Promedio")
Gastos_Promedio | Personal | Salario | Meses | Ventas_Promedio_Predicho |
---|---|---|---|---|
500000 | 2 | 1000000 | 12 | 2081285 |
800000 | 3 | 1200000 | 24 | 2743920 |
1200000 | 5 | 1400000 | 36 | 3702791 |
2000000 | 6 | 1600000 | 48 | 4572840 |
El intercepto del modelo tiene un valor de -425,500, este número es como el punto de partida del modelo, o el valor que tendría la variable principal si todas las demás fueran cero. En la vida real eso no pasa, porque no existen casos con todo en cero, pero igual sirve para tener una idea de dónde empieza el modelo.
Las variables Gastos_Promedio, Personal y Salario tienen relaciones positivas muy marcadas y con una alta significancia (valores p menores a 0.001). En palabras simples, cuando aumentan los gastos, el número de personas o el salario, también aumenta la variable principal. Es decir, más gasto, más personal y mejores salarios están relacionados con un mejor resultado económico.
La variable Meses tiene un valor positivo de 601 y un p cercano a 0.064. Eso quiere decir que puede haber una relación positiva, pero no es lo bastante fuerte como para decir que realmente influye. En otras palabras, puede tener algo de efecto, pero no es seguro.
En cuanto a los Departamentos, Bolívar, Antioquia y Santander muestran resultados positivos y sí son significativos. Por el contrario, Valle y Atlántico no tienen diferencias importantes frente al departamento de referencia (probablemente Bogotá). Esto muestra que hay diferencias entre regiones, pero no en todos los casos son grandes o claras.
En general, se puede decir que Gastos_Promedio, Personal y Salario son las variables que más pesan en el modelo y que explican gran parte del comportamiento de la variable principal. Todo esto tiene sentido, porque los factores económicos como el gasto, el trabajo y los salarios suelen ir de la mano con los niveles de ingreso o producción.
A continuacion presentamos algunas graficas que confirman estas tendencias.
ggplot(BaseF, aes(x = Gastos_Promedio, y = Ventas_Promedio, color = Departamento)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = FALSE, color = "black", formula = y ~ x) +
labs(title = "Relación entre Ventas y Gastos",
x = "Gastos promedio",
y = "Ventas promedio") +
theme_minimal() + xlim(0, 2000000) + ylim(0, 2000000)
ggplot(BaseF, aes(x = Personal, y = Ventas_Promedio, color = Departamento)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = FALSE, color = "black", formula = y ~ x) +
labs(title = "Relación entre Ventas y Personal",
x = "Personal ocupado",
y = "Ventas promedio") +
theme_minimal() +
xlim(1, 9) +
ylim(0, 2000000)
ggplot(BaseF, aes(x = Salario, y = Ventas_Promedio, color = Departamento)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = FALSE, color = "black", formula = y ~ x) +
labs(title = "Relación entre Ventas y Salario",
x = "Salario promedio",
y = "Ventas promedio") +
theme_minimal() +
xlim(0, 2000000) +
ylim(0, 2000000)
ggplot(BaseF, aes(x = Meses, y = Ventas_Promedio, color = Departamento)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = FALSE, color = "black", formula = y ~ x) +
labs(title = "Relación entre Ventas y Meses de operación",
x = "Meses de operación",
y = "Ventas promedio") +
theme_minimal() +
xlim(0, 250) +
ylim(0, 2000000)
Por otro lado, los resultados mostraron un R2: 0.2188, osea que el modelo solamente explica un 21.9% de la variabilidad de las ventas, si bien no es muy alto, es entendible, a nuestro modelo le faltan variables claves como ubicacion exacta, horarios de atencion, tipo de productos vendidos, demanda local, etc. Con estas variables podriamos crear un modelo mucho aproximado al valor de las ventas.
El F-estaditico: 80.41 y un p-valor: <2.2e-16.
H0: Ninguna variable es influyente
H1: Al menos una variable es influyente
Gracias a que p-valor < significancia (0.05), podemos rechazar el H0 y concluir que al menos una de las variables influye de forma significativa en las Ventas_Promedio.
Los resultados obtenidos fueron W: 0.6816, p-valor: <2.2e-16, si tomamos de referencia la sig hipotesis
Ho: Los residuos siguen una distribucion normal
H1: Los residuos no siguen una distribucion normal
El valor de W esta muy lejos de 1, lo cual nos dice que existe una desviacion importante de la normalidad, junto con el p-valor podemos rechazar H0 y concluir que los residuos no siguen una distribucion normal.
Tambien podemos comprobar este comportamiento con una grafica Q-Q de los residuos
qqnorm(modelo$residuals, main = "Gráfico Q-Q de los residuos")
qqline(modelo$residuals, col = "red", lwd = 2)
En este caso, los resultados fueron.
BP: 125.46 (Estadistico de la prueba).
df: 9 (grados de libertad).
p-valor: < 2.2e-16.
Por lo que creamos un hipotesis.
H0: Los residuos presentan Homocedasticidad.
H1: Los residuos no presentan Homocedasticidad.
Por lo que se rechaza H0 y los residuos NO presentan Homocedasticidad, osea la varianza de los errores no es constante.
Como podemos ver en la tabla el VIF, la mayoria de los datos se encuentran muy cercanos a 1, estos nos quiere decir que exite muy poca correlacion entre variables y por lo mismo no hay correlacion entre estas.
En la siguiente grafica podemos comprobar que muchos de los valores son cercanos al 0 y tienen tonos frios, esto confirma mas la poca correlacion entre las variables.
vars <- BaseF %>%
select(Gastos_Promedio, Personal, Salario, Meses)
matriz_cor <- cor(vars, use = "complete.obs")
ggcorrplot(matriz_cor,
lab = TRUE,
title = "Matriz de correlación entre variables independientes",
colors = c("red", "white", "blue"),
ggtheme = theme_minimal())
Los resultados fueron.
DW: 1.9882
p-valor: 0.3554
Teniendo en cuenta la hipotesis.
H0: No existe autocorrelación.
H1: Existe autocorrelación.
Podemos observar que el Valor de DW se encuentre entre 1.5 y 2.5, lo que significa que no hay autocorrelación. Esto junto al un p-valor, el cual es más grande que la significancia (0.05) y por lo mismo no podemos rechazar H0, entonces podemos decir con mucha seguridad que NO existe autocorrelación.
Gracias a la tabla de los datos podemos notar la tendencia en aumento que presenta.
Gastos suben desde 500.000 hasta 2.000.000.
El personal aumente 2 hasta 6 empleados.
El salario aumenta desde 1.000.000 hasta 1.600.000.
Los meses nos ayudan a dimensionar un poco el margen de crecimiento.
Y como consecuencia de todos estos factores, la predicción de las ventas promedio aumenta junto a todas estas variables, desde 2.081.285 hasta 4.572.840.
En conclusión, podemos dar con certeza que las variables afectan y son significantes en las ventas de los micro negocios; las variables gastos promedio, número de empleados y salario del personal presentan una relación positiva y muy significativa con las ventas, lo que indica que los negocios que invierten más y pagan mejor tienden a generar mayores ingresos.
Tenemos un modelo con un R2 del 0.21, lo cual explica aproximadamente el 21.6 % de la variabilidad en las ventas, lo que nos da una explicación moderada, común en estudios económicos donde intervienen múltiples factores externos no observados. Sin embargo, los análisis de diagnóstico revelaron heterocedasticidad y falta de normalidad en los residuos. Por lo tanto, el modelo no cumple los supuestos clásicos de la regresión.
El modelo en sí nos indica que no todas las relaciones son lineales. Aun así, se concluye que la inversión y el talento humano son factores determinantes para el crecimiento de los micronegocios. Gracias al análisis, podemos dar un inicio para el lineamiento hacia la mejora de los micro negocios, teniendo la información clave como son los gastos, la empleabilidad y la inversión, lo que hace que los micro negocios puedan crecer un poco más, aunque hay que tener presente que entre más grande el micro negocio, menos se va adaptando el modelo, y empieza a tener más variabilidad.