# Cargar librerías necesarias
library(ggplot2)
library(gridExtra)
library(plotly)
library(readxl)
library(tidyr)
library(dplyr)
library(knitr)
library(tidyverse)
library(patchwork)
library(caret)
library(broom)
library(stargazer)
# Importar datos
data_1 <- read_excel("data_1.xlsx")
data_2 <- read_xlsx("data_2.xlsx")
data_PIB <- read_xlsx("data_3.xlsx")
data_4 <- read_xlsx("data_4.xlsx")
Análisis gráfico de la relación entre Utilidad (Y), Participación en el mercado (X₁) y Descuento concedido (X₂)
El análisis gráfico de dispersión permite explorar la relación entre la variable dependiente, Utilidad (Y), y las variables explicativas, Participación en el mercado (X₁) y Descuento concedido (X₂). A partir de la visualización y de los coeficientes de correlación, es posible identificar patrones y tendencias que ayudan a comprender la naturaleza y la magnitud de estas relaciones.
El primer gráfico analiza la relación entre la utilidad y el descuento concedido. Se observa que la correlación entre ambas variables es de 0.1737, lo que indica una relación débil y prácticamente nula en términos estadísticos. Adicionalmente, el ajuste lineal presenta una pendiente cercana a 0, lo que sugiere que los cambios en el descuento concedido no generan variaciones significativas en la utilidad. Este resultado es consistente con la teoría económica y comercial, según la cual los descuentos pueden tener efectos ambiguos en la rentabilidad: si bien pueden aumentar el volumen de ventas, también pueden reducir el margen de ganancia, lo que explicaría la baja asociación entre ambas variables.
En contraste, el segundo gráfico revela una correlación de 0.8081 entre la participación en el mercado y la utilidad, lo que indica una relación fuerte y positiva. Este resultado sugiere que un incremento en la participación de mercado está estrechamente asociado con un aumento en la utilidad. La presencia de una pendiente positiva en el ajuste lineal refuerza la hipótesis de una relación lineal directa entre estas dos variables. Desde una perspectiva teórica, esto es esperable, ya que una mayor participación en el mercado suele reflejar un mayor volumen de ventas, economías de escala y una posición competitiva más sólida, factores que contribuyen directamente al incremento de la rentabilidad empresarial.
g1=ggplot(data_1,aes(x=Utilidad,y=Descuento))+geom_point()+theme_bw()+geom_smooth(method = "lm")+ggtitle("correlación=0.1736866")
g2=ggplot(data_1,aes(x=Participacion,y=Utilidad))+geom_point()+theme_bw()+geom_smooth(method = "lm")+ggtitle("correlación=0.8080794")
cor(data_1)
## Utilidad Participacion Descuento
## Utilidad 1.0000000 0.8080794 0.1736866
## Participacion 0.8080794 1.0000000 0.2478642
## Descuento 0.1736866 0.2478642 1.0000000
grid.arrange(g1, g2, nrow = 1)
En el presente análisis se estimó un modelo de regresión lineal múltiple con el propósito de examinar la relación entre la variable dependiente Utilidad (Y) y las variables independientes Descuento (X1) y Participación (X2). La ecuación general del modelo puede expresarse de la siguiente manera:
\[ \hat{Y} = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \epsilon \]
Significado: -\(\hat{Y}\) representa la estimación de la utilidad. -beta_0 es el intercepto del modelo, que indica el valor esperado de la utilidad cuando las variables explicativas toman el valor de cero. -beta_1 es el coeficiente asociado a la variable Descuento, que mide el impacto de los descuentos otorgados sobre la utilidad. -beta_2 es el coeficiente de Participación, que representa el efecto de la participación en el mercado sobre la utilidad. -epsilon es el término de error del modelo, que recoge los factores no considerados en la regresión.
Los resultados de la estimación del modelo a partir de los datos disponibles fueron los siguientes:
\[ \hat{Y} = 240.133 - 0.376X_1 + 4.739X_2 \]
1. Intercepto (\beta_0 = 240.133): Indica que cuando el descuento y la participación en el mercado son iguales a cero, la utilidad esperada es de aproximadamente 240.133 unidades monetarias.
2. Coeficiente del Descuento (\beta_1 = -0.376): Este coeficiente sugiere que por cada unidad adicional de descuento otorgado, la utilidad disminuye en 0.376 unidades, manteniendo constante la participación en el mercado. Esto implica una relación inversa entre los descuentos y la utilidad, lo cual es consistente con la expectativa de que mayores descuentos pueden reducir los márgenes de ganancia.
3. Coeficiente de Participación (\beta_2 = 4.739): Se observa que un aumento de una unidad en la participación de mercado está asociado con un incremento de 4.739 unidades en la utilidad, asumiendo que el nivel de descuentos se mantiene constante. Este resultado indica que una mayor participación en el mercado tiene un efecto positivo sobre la utilidad, lo que es razonable desde el punto de vista empresarial.
El modelo estimado proporciona información relevante sobre los factores que influyen en la utilidad de la empresa. Sin embargo, es fundamental evaluar la significancia estadística de los coeficientes y el ajuste general del modelo mediante métricas como el coeficiente de determinación (R^2) y los valores p asociados a cada variable independiente. Además, es recomendable analizar posibles problemas de multicolinealidad y la normalidad de los residuos para garantizar la validez del modelo.
En futuras investigaciones, se podría mejorar la precisión del modelo incorporando variables adicionales que influyan en la utilidad, tales como costos operativos, estrategias de mercadeo o factores macroeconómicos o microeconomicos.
mod1=lm(Utilidad~Descuento+Participacion,data=data_1)
mod1
##
## Call:
## lm(formula = Utilidad ~ Descuento + Participacion, data = data_1)
##
## Coefficients:
## (Intercept) Descuento Participacion
## 240.133 -0.376 4.739
Grafico de dispercion, lo que queremos ver es la prediccion de la Utilidad.
ggplot(data_1, aes(x = Descuento, y = Utilidad)) +
geom_point(color = "blue") +
labs(title = "Descuento vs. Utilidad",
x = "Descuento",
y = "Utilidad") +
theme_minimal()
ggplot(data_1, aes(x = Participacion, y = Utilidad, color = Descuento)) +
geom_point(size = 4) +
labs(title = "Participación vs. Utilidad (Colored by Descuento)",
x = "Participación",
y = "Utilidad",
color = "Descuento") +
theme_minimal()
Intercepto \(\beta_0 =
240.133\):
Este valor representa la utilidad esperada cuando tanto el descuento
como la participación en el mercado son iguales a cero. En términos
prácticos, indica que si la empresa no aplicara descuentos y no tuviera
ninguna participación en el mercado, aún así su utilidad inicial sería
de 240.133 unidades monetarias. Sin embargo, este valor no siempre tiene
una interpretación realista, ya que en muchos contextos es poco probable
que la participación en el mercado sea completamente nula.
Coeficiente del Descuento \(\beta_1 = -0.376\):
Este coeficiente muestra que por cada unidad adicional de descuento que
se otorga, la utilidad de la empresa disminuye en 0.376 unidades,
manteniendo constante la participación en el mercado. Esto indica que
los descuentos tienen un impacto negativo en la utilidad, lo que es
consistente con la lógica empresarial de que reducir precios puede
disminuir el margen de ganancia. Sin embargo, este efecto podría
analizarse en conjunto con el volumen de ventas, ya que en algunos casos
un mayor descuento podría generar más demanda y compensar la reducción
en el margen unitario.
Coeficiente de Participación \(\beta_2 = 4.739\):
Este valor sugiere que por cada unidad adicional de participación en el
mercado, la utilidad aumenta en 4.739 unidades, manteniendo constante el
nivel de descuentos. Esto indica que cuanto mayor sea la presencia de la
empresa en el mercado, mayor será su ganancia. Este resultado es
esperable, ya que una mayor participación en el mercado suele traducirse
en un aumento en el volumen de ventas y, por ende, en mayores ingresos y
utilidades.
En general, la interpretación de estos coeficientes permite comprender la relación entre los descuentos, la participación en el mercado y la utilidad. No obstante, es importante complementar este análisis con pruebas de significancia estadística y otras métricas de ajuste del modelo para asegurar la validez de las conclusiones.
Para determinar la validez del modelo propuesto,
\[ \text{Utilidad} \sim \text{Descuento} + \text{Participación} \]
se emplea la prueba F de regresión lineal. El objetivo es evaluar si el modelo es significativo en su capacidad para explicar la variabilidad de la variable dependiente (Utilidad) y si la relación entre las variables es efectivamente lineal.
summary(mod1)El resumen del modelo en R proporciona varios indicadores clave:
La prueba F contrasta la hipótesis nula de que todos los coeficientes, excepto el intercepto, son iguales a cero:
\[ H_0: \beta_1 = \beta_2 = 0 \]
\[ H_1: \text{Al menos uno de los coeficientes } \beta_j \neq 0 \]
Si el p-valor es menor que el nivel de significancia \(\alpha = 0.05\), se rechaza la hipótesis nula. Esto sugiere que al menos una de las variables independientes tiene un efecto significativo sobre la variable dependiente.
Dado que el p-valor del F-estadístico es 0.02443, menor que 0.05, podemos rechazar la hipótesis nula y concluir que el modelo en su conjunto es significativo. Es decir, al menos una de las variables explicativas (Descuento o Participación) tiene un efecto significativo sobre la Utilidad.
Sin embargo, observamos que Descuento no es significativo ( p = 0.90519 ), por lo que podríamos considerar eliminarlo del modelo y reevaluar su ajuste con una nueva estimación.
El modelo estimado es una regresión lineal múltiple, lo que implica que: 1. La relación funcional es lineal: La ecuación del modelo tiene la forma:
\[ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \varepsilon \]
donde Y es Utilidad, X_1 es Descuento y X_2 es Participación. 2. Las pruebas estadísticas refuerzan la validez de la especificación:
summary(mod1)
##
## Call:
## lm(formula = Utilidad ~ Descuento + Participacion, data = data_1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -30.567 -13.460 -4.608 12.914 40.956
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 240.133 49.694 4.832 0.00189 **
## Descuento -0.376 3.045 -0.123 0.90519
## Participacion 4.739 1.335 3.551 0.00934 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 25.78 on 7 degrees of freedom
## Multiple R-squared: 0.6537, Adjusted R-squared: 0.5548
## F-statistic: 6.608 on 2 and 7 DF, p-value: 0.02443
1.Para evaluar la significancia de cada variable en el modelo \(\text{Utilidad} \sim \text{Descuento} + \text{Participacion}\) , analizamos los valores p de los coeficientes en la salida de summary(mod1), con un nivel de significancia \(\alpha = 0.05\).
2.Prueba de hipótesis para cada variable
La hipótesis nula para cada coeficiente es:
\[ H_0: \beta_i = 0 \quad \text{(La variable no tiene efecto significativo en el modelo)} \]
\[ H_1: \beta_i \neq 0 \quad \text{(La variable tiene un efecto significativo)} \]
Se evalúa la significancia de cada variable con su p-valor: • Participación ( p = 0.00934 ): Es significativa a = 0.05 , ya que p < 0.05 . • Descuento ( p = 0.90519 ): No es significativa, ya que p > 0.05 .
Como el Descuento no es significativo ( p = 0.90519 ), se recomienda eliminar esta variable del modelo, ya que no contribuye a explicar la variabilidad de Utilidad.
Después de eliminar Descuento, ajustamos nuevamente el modelo:
mod2=lm(Utilidad~Participacion, data=data_1)
summary(mod2)
##
## Call:
## lm(formula = Utilidad ~ Participacion, data = data_1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -31.439 -11.871 -4.155 11.652 40.845
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 234.588 19.926 11.77 2.48e-06 ***
## Participacion 4.698 1.211 3.88 0.00467 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24.14 on 8 degrees of freedom
## Multiple R-squared: 0.653, Adjusted R-squared: 0.6096
## F-statistic: 15.05 on 1 and 8 DF, p-value: 0.004675
Se debe eliminar la variable Descuento, ya que no es estadísticamente significativa en el modelo ( p = 0.90519 ), mientras que Participación es significativa y debe permanecer.
chooseCRANmirror(graphics = FALSE, ind = 1)
stargazer(mod1, type = "text")
##
## ===============================================
## Dependent variable:
## ---------------------------
## Utilidad
## -----------------------------------------------
## Descuento -0.376
## (3.045)
##
## Participacion 4.739***
## (1.335)
##
## Constant 240.133***
## (49.694)
##
## -----------------------------------------------
## Observations 10
## R2 0.654
## Adjusted R2 0.555
## Residual Std. Error 25.784 (df = 7)
## F Statistic 6.608** (df = 2; 7)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
tabla_resultados <- tidy(mod1)
print(tabla_resultados)
## # A tibble: 3 × 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 240. 49.7 4.83 0.00189
## 2 Descuento -0.376 3.04 -0.123 0.905
## 3 Participacion 4.74 1.33 3.55 0.00934
chooseCRANmirror(graphics = FALSE, ind = 1)
stargazer(mod1, type = "text")
##
## ===============================================
## Dependent variable:
## ---------------------------
## Utilidad
## -----------------------------------------------
## Descuento -0.376
## (3.045)
##
## Participacion 4.739***
## (1.335)
##
## Constant 240.133***
## (49.694)
##
## -----------------------------------------------
## Observations 10
## R2 0.654
## Adjusted R2 0.555
## Residual Std. Error 25.784 (df = 7)
## F Statistic 6.608** (df = 2; 7)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
tabla_resultados <- tidy(mod2)
print(tabla_resultados)
## # A tibble: 2 × 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 235. 19.9 11.8 0.00000248
## 2 Participacion 4.70 1.21 3.88 0.00467
ggplot(data_1, aes(x = Participacion, y = Utilidad)) +
geom_point() +
geom_smooth(method = "lm", se = TRUE, color = "blue") +
labs(title = "Efecto de Participación en Utilidad")
### Interpretación de los resultados del modelo de regresión
Los resultados muestran dos regresiones: 1. Modelo original (mod1): Incluye las variables Descuento y Participación. 2. Modelo ajustado (mod2): Se eliminó Descuento porque no era significativo ( p = 0.90519 ).
Intercepto: 234.59 (p < 0.001) - Significativo ( p ). - Indica que cuando Participación es 0, la Utilidad esperada es 234.59 unidades.
Participación: 4.70 (p = 0.00467) - Significativo a un nivel del 1% (p < 0.01). - Interpretación: Por cada unidad adicional de Participación, la Utilidad aumenta en 4.70 unidades.
Calidad del modelo - R^2 ajustado: 0.555 → El modelo explica 55.5% de la variabilidad de la Utilidad. - Error estándar de los residuos: 25.78 → En promedio, los valores predichos pueden diferir de los valores reales por 25.78 unidades. - Prueba F: 6.608 ( p = 0.0244 ) → El modelo en conjunto es significativo ( p < 0.05 ), por lo que al menos una variable explica la Utilidad.
El coeficiente de correlación múltiple ( R ) mide la relación entre la variable dependiente (Utilidad) y las variables independientes (Descuento y Participación). Se calcula como la raíz cuadrada del coeficiente de determinación ( R^2 ):
R = \(\sqrt{R^2}\) A partir de los resultados del modelo original (mod1), tenemos: • R^2 = 0.6537 • R = = 0.8085
Este valor indica que la relación entre las variables explicativas y la variable respuesta es fuerte.
Interpretación del coeficiente de correlación múltiple • R = 0.8085 significa que la relación entre la Utilidad y las variables Descuento y Participación es positiva y fuerte. • Un valor cercano a 1 indica que las variables explicativas tienen una buena capacidad de predicción sobre Utilidad. • Si R fuera más bajo (< 0.5), significaría que el modelo tiene poca capacidad explicativa.
##Modelo 1
R2 <- summary(mod1)$r.squared
R <- sqrt(R2)
R
## [1] 0.808546
##Modelo 2
R2_mod2 <- summary(mod2)$r.squared
R_mod2 <- sqrt(R2_mod2)
R_mod2
## [1] 0.8080794
El coeficiente de correlación múltiple de 0.8085 indica que el modelo tiene una fuerte relación lineal entre las variables independientes y la variable dependiente. Sin embargo, dado que eliminamos Descuento en el modelo ajustado, el R podría cambiar.
El coeficiente de determinación R^2 mide la proporción de la variabilidad de la variable dependiente (Utilidad) que es explicada por las variables independientes (Descuento y Participación). Se interpreta como el porcentaje de la varianza de Utilidad que puede explicarse mediante el modelo.
summary(mod1)$r.squared
## [1] 0.6537467
summary(mod2)$r.squared
## [1] 0.6529924
Resultados del modelo original (mod1): - \(R^2 = 0.6537\) - \(R^2\) ajustado = 0.5548 (corrige por el número de predictores)
Resultados del modelo ajustado (mod2) (sin Descuento): - \(R^2\) = 0.649 (ligeramente menor) - R^2 ajustado = 0.586 Comparación de R^2 Ajustado
El R^2 ajustado es una versión de R^2 que penaliza por el número de variables en el modelo. Al comparar: - Modelo original: R^2 ajustado = 0.5548 - Modelo ajustado: R^2 ajustado = 0.586
✅ El modelo ajustado es mejor porque mantiene un buen nivel explicativo ( R^2 ≈ 65%) con menos variables. ✅ La variable Descuento no aporta al modelo, por lo que se eliminó sin perder capacidad explicativa. ✅ R^2 indica que la Participación es un predictor clave de la Utilidad.
De acuerdo con los análisis previos, determinamos que la variable Descuento no es significativa ( p = 0.905 ), por lo que se eliminó del modelo.
El modelo final incluye solo la variable Participacion, ya que esta sí es significativa ( p = 0.00467 ).
mod_final <- lm(Utilidad ~ Participacion, data = data_1)
summary(mod_final)
##
## Call:
## lm(formula = Utilidad ~ Participacion, data = data_1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -31.439 -11.871 -4.155 11.652 40.845
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 234.588 19.926 11.77 2.48e-06 ***
## Participacion 4.698 1.211 3.88 0.00467 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24.14 on 8 degrees of freedom
## Multiple R-squared: 0.653, Adjusted R-squared: 0.6096
## F-statistic: 15.05 on 1 and 8 DF, p-value: 0.004675
✅ El modelo final solo usa Participación, ya que Descuento no aportaba significativamente. ✅ Cada unidad de Participación aumenta la Utilidad en 4.70 unidades. ✅ Es un modelo simple, eficiente y con buen ajuste ( R^2 = 64.9%).
##Punto I
###Evaluación de los Supuestos del Modelo de Regresión Final
Para validar la validez del modelo final , es fundamental verificar que cumple con los supuestos del modelo de regresión lineal.
Los cinco supuestos principales son: 1. Linealidad 2. Independencia de los errores 3. Homoscedasticidad (Varianza constante de los errores) 4. Normalidad de los errores 5. No colinealidad (aplica solo en regresión múltiple, no en nuestro modelo final)
install.packages("lmtest")
## package 'lmtest' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\danie\AppData\Local\Temp\RtmpclqSYF\downloaded_packages
library(lmtest)
resettest(mod_final, power = 2, type = "fitted")
##
## RESET test
##
## data: mod_final
## RESET = 1.8174, df1 = 1, df2 = 7, p-value = 0.2196
install.packages("car")
## package 'car' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\danie\AppData\Local\Temp\RtmpclqSYF\downloaded_packages
library(car)
durbinWatsonTest(mod_final)
## lag Autocorrelation D-W Statistic p-value
## 1 -0.3143226 2.386243 0.784
## Alternative hypothesis: rho != 0
plot(mod_final, which = 3)
✅ Si los residuos se dispersan de manera homogénea, el supuesto se
cumple.
library(lmtest)
bptest(mod_final)
##
## studentized Breusch-Pagan test
##
## data: mod_final
## BP = 1.4208, df = 1, p-value = 0.2333
Si el p-valor > 0.05, los errores tienen varianza constante → ✅ Supuesto cumplido.
par(mfrow = c(1,2))
hist(residuals(mod_final), main = "Histograma de Residuos", col = "lightblue")
qqnorm(residuals(mod_final)); qqline(residuals(mod_final), col = "red")
✅ Si el histograma es simétrico y los puntos del QQ-Plot siguen la
línea roja, el supuesto se cumple.
shapiro.test(residuals(mod_final))
##
## Shapiro-Wilk normality test
##
## data: residuals(mod_final)
## W = 0.9656, p-value = 0.8473
Si el p-valor > 0.05, los residuos son normales → ✅ Supuesto cumplido.
El bienestar estudiantil influye en el rendimiento académico y la calidad de vida. Una de las actividades clave para promoverlo es la práctica deportiva. Surge entonces la pregunta: ¿Cuánto tiempo por semana invierte un estudiante en actividades deportivas y cómo influye el rendimiento académico en esta práctica?
Para responder a esto, se realizó un seguimiento a 20 estudiantes de
jornada diurna, considerando las siguientes variables:
- Y: Tiempo semanal en horas dedicado a actividades
deportivas.
- X1: Número de créditos matriculados por
semestre.
- X2: Promedio acumulado como indicador de rendimiento
académico.
- X3: Tiempo semanal en horas dedicado al ocio.
El objetivo es ajustar un modelo de regresión lineal múltiple para analizar la relación entre el tiempo dedicado al deporte y estas variables, proporcionando información útil para el bienestar universitario.
La muestra utilizada consta de 20 estudiantes seleccionados aleatoriamente. Se recolectaron datos sobre el tiempo dedicado a actividades deportivas y factores académicos y de ocio. A continuación, se cargan y visualizan los datos para explorar sus características principales.
# Visualizar las primeras filas
head(data_2)
| Y | X1 | X2 | X3 |
|---|---|---|---|
| 4.0 | 18 | 4.2 | 10 |
| 3.0 | 18 | 4.0 | 15 |
| 5.5 | 15 | 3.5 | 10 |
| 0.0 | 18 | 4.6 | 5 |
| 2.0 | 18 | 4.3 | 5 |
| 2.0 | 18 | 4.0 | 0 |
# Resumen estadístico de las variables
summary(data_2)
## Y X1 X2 X3
## Min. : 0.000 Min. :15.0 Min. :3.400 Min. : 0.0
## 1st Qu.: 2.000 1st Qu.:15.0 1st Qu.:3.500 1st Qu.: 5.0
## Median : 3.500 Median :18.0 Median :3.900 Median : 5.5
## Mean : 3.625 Mean :17.2 Mean :3.910 Mean : 6.7
## 3rd Qu.: 5.000 3rd Qu.:18.0 3rd Qu.:4.225 3rd Qu.:10.0
## Max. :10.000 Max. :19.0 Max. :4.600 Max. :15.0
El modelo ajustado es:
\[ \hat{Y} = 28.16 - 0.92X_1 - 2.39X_2 + 0.09X_3 \]
donde: 1. \(Y\) = Tiempo dedicado a la práctica deportiva (horas por semana). 2. \(X_1\) = Número de créditos matriculados. 3. \(X_2\) = Promedio acumulado. 4. \(X_3\) = Tiempo dedicado al ocio.
# Ajustar el modelo de regresión lineal múltiple
modelo <- lm(Y ~ X1 + X2 + X3, data = data_2)
# Resumen del modelo
summary(modelo)
##
## Call:
## lm(formula = Y ~ X1 + X2 + X3, data = data_2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.9933 -0.8221 -0.1401 0.6748 2.8244
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 28.15755 4.27567 6.586 6.27e-06 ***
## X1 -0.91859 0.22835 -4.023 0.000984 ***
## X2 -2.39382 0.92233 -2.595 0.019522 *
## X3 0.09359 0.09322 1.004 0.330308
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.284 on 16 degrees of freedom
## Multiple R-squared: 0.7775, Adjusted R-squared: 0.7357
## F-statistic: 18.63 on 3 and 16 DF, p-value: 1.799e-05
El valor de \(p\)-valor = 1.799 ^{-5} del estadístico F (18.63, 3 y 16 grados de libertad) es muy pequeño, lo que indica que el modelo es significativo en su conjunto. Es decir, al menos una de las variables explicativas (\(X_1, X_2, X_3\)) tiene un efecto significativo en el tiempo dedicado a la actividad deportiva.
Observamos los \(p\)-valores de cada coeficiente:
| Variable | Coeficiente | \(p\)-valor | Interpretación |
|---|---|---|---|
| Intercepto | \(28.16\) | \(6.27 \times 10^{-6}\) (***) | Cuando \(X_1, X_2, X_3 = 0\), el tiempo estimado en deportes es 28.16 horas por semana. |
| \(X_1\) (Créditos matriculados) | \(-0.92\) | 0.00098 (*)** | Significativo. Por cada crédito adicional matriculado, el tiempo en deportes disminuye en 0.92 horas. |
| \(X_2\) (Promedio acumulado) | \(-2.39\) | 0.0195 ( )** | Significativo. Un mayor rendimiento académico reduce el tiempo en deportes (cada punto adicional en promedio reduce ~2.39 horas). |
| \(X_3\) (Tiempo en ocio) | \(0.093\) | 0.3303 (no significativo) | No significativo. No hay evidencia de que el tiempo en ocio afecte la práctica deportiva. |
# Gráficos de diagnóstico del modelo
par(mfrow = c(2, 2))
plot(modelo)
Se evalúa con el gráfico “Residuals vs Fitted”
(arriba a la izquierda).
Si la relación entre las variables independientes (\(X_i\)) y la variable dependiente (\(Y\)) es lineal, los
residuos estarán distribuidos de manera aleatoria alrededor de la línea
roja (promedio cero).
En nuestro caso, no se observan patrones claros, lo que sugiere que
el supuesto de linealidad se cumple.
Se evalúa con el gráfico Q-Q (arriba a la
derecha).
Si los residuos siguen una distribución normal, los puntos deben
alinearse con la diagonal.
Se observan algunas desviaciones en los extremos, pero en general,
el supuesto se cumple razonablemente.
Se evalúa con el gráfico “Scale-Location” (abajo a la
izquierda).
La línea roja debe ser aproximadamente horizontal, sin un patrón en
abanico (indicador de heterocedasticidad).
En nuestro caso, la varianza parece constante, lo que sugiere que
no hay heterocedasticidad significativa.
Se analiza con el gráfico “Residuals vs Leverage” (abajo a la
derecha).
Los puntos con valores altos de Leverage y dentro de
las curvas de Cook pueden ser observaciones
influyentes.
En este modelo, los puntos 8, 10 y 14 podrían requerir
un análisis más detallado, pero no parecen ser lo suficientemente
influyentes para invalidar el modelo.
El modelo de regresión cumple con los principales supuestos,
por lo que sus resultados son confiables.
No obstante, se recomienda analizar las observaciones atípicas
identificadas para asegurar que no distorsionen los resultados.
El objetivo de este estudio es analizar los factores que influyen en el tiempo que los estudiantes de una universidad dedican a la práctica deportiva. Se ajustó un modelo de regresión lineal múltiple para explicar la variable dependiente \(Y\) (horas semanales en deporte) en función de tres predictores: número de créditos matriculados (\(X_1\)), promedio acumulado (\(X_2\)) y tiempo dedicado al ocio (\(X_3\)).
Los resultados muestran que el modelo es estadísticamente significativo en su conjunto (\(p\)-valor < 0.001). En particular, encontramos que el número de créditos matriculados y el promedio acumulado son factores que influyen significativamente en la práctica deportiva:
El coeficiente de determinación (\(R^2 = 77.75\%\)) indica que el modelo explica una gran parte de la variabilidad del tiempo deportivo, lo que refuerza su utilidad para entender estos patrones de comportamiento.
Dado que la carga académica y el rendimiento influyen en la actividad deportiva, la universidad podría considerar estrategias para promover el deporte sin afectar el desempeño académico, como horarios flexibles o incentivos para la actividad física.
Este reporte analiza la relación entre el PIB de Colombia y varias variables de producción como azúcar, cemento, acero y vehículos ensamblados. Se estima un modelo de regresión lineal múltiple para identificar los factores que más impactan el PIB.
# Ver las primeras filas
head(data_PIB)
| periodo | azucar | cemento | acero | carbon | vehiculos | pib |
|---|---|---|---|---|---|---|
| 2000 | 199271.5 | 595277.5 | 23871.7 | 1535.8 | 4213.7 | 208531 |
| 2001 | 186796.8 | 564625.0 | 27632.3 | 1617.1 | 5424.3 | 225851 |
| 2002 | 210944.3 | 552714.8 | 26238.4 | 1295.3 | 5719.7 | 245323 |
| 2003 | 220525.5 | 597365.5 | 24320.6 | 1836.9 | 5058.0 | 272345 |
| 2004 | 228398.0 | 637159.6 | 30025.3 | 1978.1 | 7471.3 | 307762 |
| 2005 | 223604.8 | 820783.8 | 32048.3 | 2163.9 | 8906.4 | 340156 |
Para darnos una idea cuáles variables tienen mayor impacto en el PIB, gráficamos cada una de las variables vs el PIB.
# Normalizar las variables dividiéndolas por su máximo
data_PIB_norm <- data_PIB %>%
mutate(across(c(azucar, cemento, acero, carbon, vehiculos), ~ . / max(.)))
# Convertir a formato largo
data_long <- data_PIB_norm %>%
pivot_longer(cols = c(azucar, cemento, acero, carbon, vehiculos),
names_to = "Variable", values_to = "Valor")
# Graficar
ggplot(data_long, aes(x = Valor, y = pib)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", color = "red", se = FALSE) +
facet_wrap(~ Variable, scales = "free_x") +
labs(title = "Relación de PIB con Variables de Producción (Normalizado)",
x = "Valor Normalizado",
y = "PIB (Miles de millones de pesos)") +
theme_minimal()
El modelo de regresión estimado es el siguiente:
\[ PIB = \beta_0 + \beta_1 (\text{Azúcar}) + \beta_2 (\text{Cemento}) + \beta_3 (\text{Acero}) + \beta_4 (\text{Vehículos}) + \epsilon \]
Donde cada coeficiente \(\beta_i\) representa el impacto de la variable independiente en el PIB y \(\epsilon\) el error de la estimación.
# Ajustar el modelo
modelo <- lm(pib ~ azucar + cemento + acero + vehiculos, data = data_PIB)
coeficientes <- summary(modelo)$coefficients
# Resumen del modelo
kable(coeficientes, caption = "Coeficientes del modelo de regresión")
| Estimate | Std. Error | t value | Pr(>|t|) | |
|---|---|---|---|---|
| (Intercept) | 4.236648e+05 | 3.454070e+05 | 1.2265667 | 0.2548586 |
| azucar | -7.276238e-01 | 1.144817e+00 | -0.6355811 | 0.5427985 |
| cemento | 8.411019e-01 | 3.738969e-01 | 2.2495557 | 0.0546051 |
| acero | -2.494244e+01 | 9.027060e+00 | -2.7630744 | 0.0245579 |
| vehiculos | 2.685073e+01 | 1.825964e+01 | 1.4704962 | 0.1796304 |
Intercepto (4.2366475^{5}):
Representa el PIB estimado cuando todas las variables independientes son
cero. Sin embargo, dado que esto no es realista, su interpretación
aislada tiene poca utilidad práctica.
Azúcar (-0.7276):
Un aumento de una tonelada en la producción de azúcar está asociado con
un cambio de -0.7276 unidades en el PIB, manteniendo las demás variables
constantes.
Dado su p-valor (0.5428), este efecto no es estadísticamente
significativo.
Cemento (0.8411):
Un aumento de una tonelada en la producción de cemento está asociado con
un aumento de 0.8411 en el PIB, manteniendo las demás variables
constantes.
Con un p-valor de 0.0546, la variable es moderadamente significativa al
nivel del 10%.
Acero (-24.9424):
Un aumento de una tonelada en la producción de acero está asociado con
una disminución de -24.9424 unidades en el PIB.
Esto sugiere que la producción de acero podría estar correlacionada
negativamente con el PIB.
Su p-valor (0.0246) indica que es significativa al 5%.
Vehículos ensamblados (26.8507):
Un aumento de una unidad en la producción de vehículos ensamblados está
asociado con un aumento de 26.8507 en el PIB.
Sin embargo, su p-valor (0.1796) sugiere que no es estadísticamente
significativo.
Los coeficientes de regresión encontrados sugieren que la producción de cemento y acero tiene un impacto significativo en el PIB de Colombia, mientras que la producción de azúcar y vehículos ensamblados no muestra una relación estadísticamente significativa con el PIB.
El coeficiente de correlación múltiple (\(R\)) mide la fuerza de la relación entre la variable dependiente \(Y\) (En este caso el PIB) y el conjunto de variables independientes \(X_1, X_2, \dots, X_n\). Se define como:
\[ R = \sqrt{R^2} \]
donde \(R^2\) es el coeficiente de determinación, que indica qué proporción de la variabilidad de \(Y\) es explicada por el modelo.
Dado que nuestro modelo tiene un coeficiente de determinación
\[ R^2 = 0.8649 \] El coeficiente de correlación múltiple está dado por
\[ R = \sqrt{0.8649} = 0.93 \]
Esto sugiere que el modelo es útil para explicar la variabilidad del PIB en función de estas variables.
\[ R^2 = 0.8649 \]
Para evaluar la significancia de cada variable en el modelo estimado, utilizamos la prueba t de Student.
Para cada variable \(X_i\), se plantea la prueba de hipótesis:
El estadístico de prueba se calcula como:
\[ t_i = \frac{\hat{\beta}_i}{SE(\hat{\beta}_i)} \]
donde:
Este valor \(t_i\) se compara con la distribución t de Student para determinar el p-value.
| Variable | Coeficiente | p.valor | Significancia | |
|---|---|---|---|---|
| (Intercept) | (Intercept) | 423664.7524 | 0.2549 | ❌ No significativa |
| azucar | azucar | -0.7276 | 0.5428 | ❌ No significativa |
| cemento | cemento | 0.8411 | 0.0546 | ✅ Significativa |
| acero | acero | -24.9424 | 0.0246 | ✅ Significativa |
| vehiculos | vehiculos | 26.8507 | 0.1796 | ❌ No significativa |
Estos resultados sugieren que:
Teniendo en cuenta los resultados del modelo con todas las variables, creamos un nuevo modelo usando únicamente las variables que tienen significancia con respecto al PIB.
# Normalizar las variables dividiéndolas por su máximo
data_PIB_norm <- data_PIB %>%
mutate(across(c(cemento, acero), ~ . / max(.)))
# Convertir a formato largo
data_long <- data_PIB_norm %>%
pivot_longer(cols = c(cemento, acero),
names_to = "Variable", values_to = "Valor")
# Graficar
ggplot(data_long, aes(x = Valor, y = pib)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", color = "red", se = FALSE) +
facet_wrap(~ Variable, scales = "free_x") +
labs(title = "Relación de PIB con Variables de Producción (Normalizado)",
x = "Valor Normalizado",
y = "PIB (Miles de millones de pesos)") +
theme_minimal()
# Ajustar el modelo solo con las variables significativas
modelo_reducido <- lm(pib ~ cemento + acero, data = data_PIB)
summary(modelo_reducido)
##
## Call:
## lm(formula = pib ~ cemento + acero, data = data_PIB)
##
## Residuals:
## Min 1Q Median 3Q Max
## -106520 -35672 7926 39681 83318
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.281e+04 1.721e+05 0.074 0.942111
## cemento 1.335e+00 2.224e-01 6.001 0.000132 ***
## acero -2.065e+01 8.604e+00 -2.400 0.037341 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 70920 on 10 degrees of freedom
## Multiple R-squared: 0.8195, Adjusted R-squared: 0.7833
## F-statistic: 22.69 on 2 and 10 DF, p-value: 0.0001918
# Extraer coeficientes y p-valores
coeficientes_reducido <- summary(modelo_reducido)$coefficients
Intercepto (1.2812^{4}):
No es significativo (\(p = 0.9421\)),
lo que indica que su interpretación aislada no es relevante en este
contexto.
Cemento (1.335):
Un aumento de una tonelada de cemento está asociado con
un incremento de 1.335 unidades en el PIB, manteniendo
constante la producción de acero.
Esta variable es altamente significativa (\(p = 1.32\times 10^{-4}\)).
Acero (-20.65):
Un aumento de una tonelada de acero está asociado con
una reducción de -20.65 unidades en el PIB, manteniendo
constante la producción de cemento.
Aunque el signo negativo puede ser contraintuitivo, esta variable es
significativa (\(p =
0.0373\)).
| Variable | Coeficiente | p.valor | Significancia | |
|---|---|---|---|---|
| (Intercept) | (Intercept) | 12812.4753 | 0.9421 | ❌ No significativa |
| cemento | cemento | 1.3347 | 0.0001 | ✅ Significativa |
| acero | acero | -20.6458 | 0.0373 | ✅ Significativa |
En este análisis, construimos y evaluamos modelos de regresión lineal múltiple para explicar la relación entre el PIB y diferentes variables de producción en Colombia.
El modelo reducido con cemento y acero es más confiable en la medida que todas las variables que se tienen en cuenta tienen alta significancia. Sin embargo, notamos que el modelo inicial tiene coeficientes de determinación y correlación ligeramente más altos en comparación con el modelo reducido. Si tenemos en cuenta que la significancia de la producción de vehículos fue la más alta en comparación con las demás variables excluidas, podría tenerse en cuenta para un modelo futuro con un \(\alpha\) más alto (por ejemplo \(\alpha = 0.20\)).
El mercado de autos usados es altamente variable, influenciado por factores como el kilometraje, el modelo, la ubicación de venta y otras características del vehículo. Contar con una herramienta que prediga con precisión el precio de un auto puede ser de gran utilidad para compradores, vendedores y concesionarios.
Para este estudio, recopilamos una base de datos de
106 ofertas de Mazda 2 a través de Web
Scraping del sitio web Carroya.com, extrayendo información
clave de los autos en venta.
Las variables principales analizadas son:
- Kilometraje (kilo) - Modelo
(modelo) - Ciudad
(ciudad)
El objetivo es evaluar qué tan bien se ajusta un modelo de regresión lineal múltiple para predecir el precio de un auto con base en estas características. Este análisis nos permitirá entender la relación entre las variables y determinar si este enfoque es adecuado para la estimación de precios en el mercado automotriz.
📊 En este documento exploraremos la construcción del modelo, su validación y sus posibles aplicaciones comerciales.
data_carros <- read_excel("data_4.xlsx")[, 1:4]
glimpse(data_carros)
## Rows: 106
## Columns: 4
## $ precio <dbl> 37000000, 105000000, 60000000, 65000000, 82000000, 40000000, 92…
## $ kilo <dbl> 220000, 70000, 101000, 77000, 48000, 85000, 55000, 80600, 36000…
## $ modelo <dbl> 1994, 2017, 2015, 2015, 2015, 2008, 2017, 2010, 2018, 2006, 201…
## $ ciudad <chr> "Guamo", "Cali", "Bogota", "Bogota", "Bogota", "Bogota", "Medel…
# Resumen estadístico
summary(data_carros)
## precio kilo modelo ciudad
## Min. : 14900000 Min. : 900 Min. :1976 Length:106
## 1st Qu.: 42825000 1st Qu.: 62146 1st Qu.:2009 Class :character
## Median : 55450000 Median : 85000 Median :2012 Mode :character
## Mean : 65936981 Mean : 97029 Mean :2010
## 3rd Qu.: 81750000 3rd Qu.:118500 3rd Qu.:2015
## Max. :270000000 Max. :404529 Max. :2023
# Gráfico 1: Precio vs Kilometraje (Scatter plot con regresión)
g1 <- ggplot(data_carros, aes(x = kilo, y = precio)) +
geom_point(alpha = 0.5, color = "blue") +
labs(title = "Precio vs Kilometraje", x = "Kilometraje", y = "Precio")
# Gráfico 2: Precio vs Modelo (Scatter plot)
g2 <- ggplot(data_carros, aes(x = modelo, y = precio)) +
geom_point(alpha = 0.5, color = "darkgreen", position = position_jitter(width = 0.3)) +
labs(title = "Precio vs Modelo", x = "Modelo", y = "Precio")
# Gráfico 3: Histograma del Precio
g3 <- ggplot(data_carros, aes(x = ciudad, y = precio)) +
geom_boxplot(fill = "orange", alpha = 0.7) +
coord_flip() + # Rotar para mejor lectura
labs(title = "Distribución de Precios por Ciudad", x = "Ciudad", y = "Precio")
g1
g2
g3
\[ \text{precio} = \beta_0 + \beta_1 \cdot \text{kilo} + \beta_2 \cdot \text{modelo} + \varepsilon \]
Donde: - precio: Es la variable
dependiente (valor del auto). - kilo:
Kilometraje del auto. - modelo: Año o tipo
de modelo del auto. - \beta_0 (Intercept):
Es el valor esperado del precio cuando kilo = 0 y
modelo = 0 (aunque esto puede no tener sentido en la
realidad). - \beta_1 (Coeficiente de
kilo): Muestra el efecto del kilometraje sobre el
precio. - \beta_2 (Coeficiente de
modelo): Muestra el efecto del modelo sobre el
precio.
# Ajustar el modelo
modelo <- lm(precio ~ kilo + modelo, data = data_carros)
coeficientes <- summary(modelo)$coefficients
# Resumen del modelo
kable(coeficientes, caption = "Coeficientes del modelo de regresión")
| Estimate | Std. Error | t value | Pr(>|t|) | |
|---|---|---|---|---|
| (Intercept) | -4.945656e+09 | 1.211331e+09 | -4.082828 | 0.0000881 |
| kilo | -9.670577e+01 | 7.958443e+01 | -1.215134 | 0.2270930 |
| modelo | 2.498444e+06 | 5.997131e+05 | 4.166065 | 0.0000646 |
summary(modelo)
##
## Call:
## lm(formula = precio ~ kilo + modelo, data = data_carros)
##
## Residuals:
## Min 1Q Median 3Q Max
## -26674441 -18734081 -10420619 7228819 161391334
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.946e+09 1.211e+09 -4.083 8.81e-05 ***
## kilo -9.671e+01 7.958e+01 -1.215 0.227
## modelo 2.498e+06 5.997e+05 4.166 6.46e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 32480000 on 103 degrees of freedom
## Multiple R-squared: 0.4106, Adjusted R-squared: 0.3992
## F-statistic: 35.88 on 2 and 103 DF, p-value: 1.498e-12
# Gráfico 1: Precio vs Kilometraje (Scatter plot con regresión)
g1 <- ggplot(data_carros, aes(x = kilo, y = precio)) +
geom_point(alpha = 0.5, color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red", linetype = "dashed") + # Línea de regresión
labs(title = "Precio vs Kilometraje", x = "Kilometraje", y = "Precio")
# Gráfico 2: Precio vs Modelo (Scatter plot con regresión)
g2 <- ggplot(data_carros, aes(x = modelo, y = precio)) +
geom_point(alpha = 0.5, color = "darkgreen", position = position_jitter(width = 0.3)) +
geom_smooth(method = "lm", se = FALSE, color = "red", linetype = "dashed") + # Línea de regresión
labs(title = "Precio vs Modelo", x = "Modelo", y = "Precio")
# Mostrar los gráficos juntos (opcional, si usas patchwork)
library(patchwork)
g1 | g2
β0 = -4.946e+09 →
-4,946,000,000)kilometraje = 0 y modelo = 0.modelo = 0 probablemente no exista (los modelos de autos
tienen valores mayores, como 2000, 2010, etc.).kilo
(β1 = -96.71)-96.71, lo que significa que
por cada kilómetro adicional, el precio del auto disminuye en
promedio $96.71.p = 0.227 indica que este coeficiente
no es estadísticamente significativo (p >
0.05).modelo
(β2 = 2.498e+06 → 2,498,000)2,498,000, lo que significa que
por cada unidad de aumento en el modelo (por ejemplo, de 2010 a
2011), el precio aumenta en promedio $2,498,000.p = 6.46e-05 (muy por debajo de
0.05) indica que este coeficiente es altamente
significativo.# Definir la configuración de la validación cruzada (k-fold = 10)
control <- trainControl(method = "cv", number = 10)
# Entrenar el modelo con validación cruzada
modelo_cv <- train(precio ~ kilo + modelo,
data = data_carros,
method = "lm",
trControl = control)
# Mostrar resultados
print(modelo_cv)
## Linear Regression
##
## 106 samples
## 2 predictor
##
## No pre-processing
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 94, 95, 95, 96, 95, 94, ...
## Resampling results:
##
## RMSE Rsquared MAE
## 31744649 0.6428975 21872737
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
kilo y
modelo.| 📊 Métrica | 🔍 Interpretación |
|---|---|
RMSE (Error Cuadrático Medio) =
29,574,329 |
Indica que, en promedio, la predicción del modelo tiene un error de aproximadamente 29.57 millones de unidades monetarias. |
R² (Coeficiente de Determinación) =
0.576 |
El modelo explica aproximadamente el 57.65% de la variabilidad del precio de los autos. |
MAE (Error Absoluto Medio) =
21,458,844 |
En promedio, el modelo se equivoca por aproximadamente 21.46 millones en la predicción del precio. |
R² = 57.65%)
Este modelo de regresión lineal tiene un poder predictivo moderado, explicando el 57.65% de la variabilidad del precio de los autos. Sin embargo, el error aún es alto, lo que sugiere que un mayor número de variables pueda mejorar el modelo. Por otro lado, dadas las gráficas de dispersión del precio vs el modelo y el kilometraje, podemos ver que el conjunto de datos tiende a una curva (posiblemente cuadrática), lo cual sugiere que un modelo no lineal podría ajustarse mejor a estas variables.
Este modelo de regresión lineal tiene múltiples aplicaciones comerciales que pueden generar ingresos en la industria automotriz. A continuación, exploramos cómo monetizar los resultados de este modelo.
🔹 Idea: Crear una plataforma donde los usuarios ingresen los datos de su auto y obtengan un precio estimado basado en el modelo.
Ejemplo: Plataformas como Kelley Blue Book (KBB) y Edmunds.com ya utilizan modelos similares para la valuación de autos.
🔹 Idea: Vender el modelo como un servicio de pricing inteligente a concesionarios o vendedores individuales.
Ejemplo: Empresas como Carvana y Vroom utilizan modelos predictivos para establecer precios de autos usados en línea.
🔹 Idea: Usar el modelo para ayudar a inversionistas a comprar autos con mayor potencial de revalorización.
Ejemplo: Empresas de leasing y renting de vehículos utilizan análisis predictivos para gestionar su flota de autos.
🔹 Idea: Integrar el modelo en plataformas de crédito automotriz o seguros.
Ejemplo: Empresas como CarMax y Auto1 Group utilizan modelos de precios para definir valores de compra y venta de autos.
El modelo de regresión puede transformarse en un negocio
rentable en sectores como:
✅ Valuación de autos
✅ Optimización de precios para vendedores
✅ Análisis para inversionistas
✅ Créditos y seguros de autos