Introducción

La regresión lineal múltiple es una herramienta estadística ampliamente utilizada para analizar la relación entre una variable dependiente y múltiples variables explicativas. Su aplicación es clave en la toma de decisiones empresariales, económicas y académicas, permitiendo modelar y predecir comportamientos basados en datos históricos. Este trabajo tiene como objetivo aplicar técnicas de regresión lineal múltiple a distintos conjuntos de datos con el fin de evaluar la influencia de diversas variables en resultados específicos.

En primer lugar, se analizarán las utilidades de una empresa durante diez años, explorando la relación entre la participación en el mercado, los descuentos concedidos y la utilidad obtenida. Se construirán gráficos de dispersión para evaluar visualmente la existencia de relaciones lineales, se estimará un modelo de regresión y se interpretarán sus coeficientes y significancia estadística.

Luego, se investigará el tiempo que un estudiante universitario dedica a la práctica deportiva y su relación con el número de créditos matriculados, el promedio académico y el tiempo de ocio. A partir de un modelo de regresión, se determinará qué factores tienen un impacto significativo en la cantidad de horas dedicadas al deporte y si el modelo puede ser utilizado para hacer predicciones confiables.

Posteriormente, se estudiará el impacto de diferentes variables de producción en el Producto Interno Bruto (PIB) de Colombia. Se analizarán los sectores del azúcar, cemento, acero y vehículos ensamblados para identificar cuáles tienen una mayor influencia en el PIB, permitiendo orientar estrategias de política económica.

Finalmente, se aplicará la regresión lineal múltiple en un contexto de minería de datos mediante web scraping. Se recopilará información sobre los precios de vehículos Duster en Colombia desde una plataforma en línea y se explorará la relación entre el precio y variables como el kilometraje, el modelo y la ciudad. Además, se discutirá el poder predictivo del modelo y sus posibles aplicaciones comerciales.

Utilidades de la operación

Analizaremos en este apartado como se comporta la utilidad con respecto a la variable del descuento y participació en el mercado.

library(readxl)
Parcial1 <- read_excel("C:/Users/gabui/Downloads/Parcial1.xlsx")

Construimos los gráficos de dispersión y determinamos si existe una relación lineal entre la utilidad (Y) con las variables de regresión: Participación en el mercado (X1) y descuento concedido (X2).

require(ggplot2)
g1=ggplot(Parcial1,aes(x=Descuento,y=Utilidad))+geom_point()+theme_bw()+geom_smooth(method = "lm")+ggtitle("correlación=0.1736866")
g2=ggplot(Parcial1,aes(x=Participacion,y=Utilidad))+geom_point()+theme_bw()+geom_smooth(method = "lm")+ggtitle("correlación=0.8080794")


library(gridExtra)
grid.arrange(g1, g2, nrow = 1)

Analizando las gráficas encontramos que ambas tienen un patrón que esta representada por la linea de tendencia y a su vez, concluye que existe una relación entre las varaibles descuento y partipación en el mercado con la utilidad. Observamos que la participación del mercado tiene una correlación mayor que el descuento.

Posteriormente, estimamos el modelo de regresión lineal múltiple.

mod0=lm(Utilidad~Descuento+Participacion,data=Parcial1)
mod0
## 
## Call:
## lm(formula = Utilidad ~ Descuento + Participacion, data = Parcial1)
## 
## Coefficients:
##   (Intercept)      Descuento  Participacion  
##       240.133         -0.376          4.739

Por lo que podemos observar que el modelo de regresión lineal multiple estimado es:

Utilidad = 240.133 -0.376(Descuento) +4.739 (Mercado)

Interpretamos cada coeficiente encontrado en b

summary(mod0)
## 
## Call:
## lm(formula = Utilidad ~ Descuento + Participacion, data = Parcial1)
## 
## 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

Lo que significa cada coeficiente es que por cada porcentaje de descuento la unidad baja un 0.376 y por cada porcentaje de Participacion la unidad sube un 4.739.

Observamos si el modelo es lineal y si es significativo:

Dado que el p-valor (0.02443) es menor que el nivel de significancia α=0.05​, Indica que el modelo es significativo. Esto significa que al menos una de las variables explicativas (Descuento o Participación) tiene un efecto sobre la utilidad.

Intercepto: p = 0.00189 (significativo)

Descuento: p = 0.90519 (no significativo)

Participación: p = 0.00934 (significativo)

Como el p-valor del Descuento (0.90519) es mayor que 0.05, se debe eliminar esta variable, ya que no tiene un impacto significativo en la Utilidad.

Obtenemos el coeficiente de corelación multiple en el modelo propuesto anteriormente.

library(ggplot2)
library(reshape2)

cor(Parcial1)
##                Utilidad Participacion Descuento
## Utilidad      1.0000000     0.8080794 0.1736866
## Participacion 0.8080794     1.0000000 0.2478642
## Descuento     0.1736866     0.2478642 1.0000000
correlacion <- cor(Parcial1[, c("Utilidad", "Participacion", "Descuento")])

cor_data <- data.frame(Variable = colnames(correlacion)[-1], Correlacion = correlacion[1, -1])

ggplot(cor_data, aes(x = Variable, y = Correlacion, fill = Correlacion)) +
  geom_bar(stat = "identity") +
  scale_fill_gradient2(low = "blue", high = "red", mid = "white") +
  theme_minimal() +
  labs(title = "Correlación con Utilidad", y = "Coeficiente de Correlación", x = "Variable")

El coeficiente R^2 mide el porcentaje de variabilidad de la Utilidad explicada por las variables independientes y en este caso es: 0.6537, lo que explica el 65,37% de la variabilidad de la utilidad .

Obtenemos el modelo de regresión lineal final

mod_N=lm(Utilidad~Participacion,data=Parcial1)
summary(mod_N)
## 
## Call:
## lm(formula = Utilidad ~ Participacion, data = Parcial1)
## 
## 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

después de eliminar la variable descuento, el modelo de regresion lineal es Utilidad = 234.588+4.698(participacion).

Finalmente evaluamos los supuestos del sistema.

par(mfrow=c(2,2))
plot(mod_N)

Estas gráficas permiten diagnosticar la adecuación del modelo de regresión e identificar posibles problemas como la no linealidad, la falta de normalidad en los residuos, la heterocedasticidad y la presencia de valores influyentes. En este caso, aunque el modelo es funcional y explica una proporción moderada de la variabilidad en la variable respuesta (, ajustado = 0.6), presenta algunas limitaciones. Específicamente, se observan desviaciones de la normalidad en los residuos, indicios de heterocedasticidad y la posible influencia de valores atípicos. Estos factores podrían afectar la validez de las inferencias y la estabilidad de los coeficientes del modelo. Por lo tanto, se recomienda evaluar la inclusión de variables adicionales, aplicar transformaciones o analizar el impacto de los puntos influyentes para mejorar su desempeño y cumplir mejor con los supuestos de la regresión lineal.

Estudiante en prácticas deportivas

library(readxl)
Parcial1_aplicada <- read_excel("Parcial1-aplicada.xlsx")

Ajustamos el modelo de regresión lineal multiple para la variable Y ( Tiempo en horas ) de que un estudiante participe en una actividad deportidad y las variables Xi asignadas.

modg=lm(Y~X1+X2+X3,data=Parcial1_aplicada)
modg
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3, data = Parcial1_aplicada)
## 
## Coefficients:
## (Intercept)           X1           X2           X3  
##    28.15755     -0.91859     -2.39382      0.09359

El rendimiento académico sí afecta la práctica deportiva:

Un mayor promedio académico está relacionado con menos tiempo en deportes. Esto sugiere que los estudiantes con mejor rendimiento pueden estar priorizando los estudios sobre la actividad física. El número de créditos también impacta negativamente en el tiempo para el deporte. Los estudiantes con una mayor carga académica parecen tener menos disponibilidad para la práctica deportiva.El tiempo de ocio tiene un impacto positivo, pero bajo, aunque más ocio se traduce en más tiempo para el deporte, el efecto no es tan fuerte.

Esto sugiere que el deporte es solo una pequeña parte del tiempo libre de los estudiantes.

Después del análisis anterior vamos a observar la significancia de cada variable del modelo:

summary(modg)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3, data = Parcial1_aplicada)
## 
## 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

X1 (Número de créditos matriculados, coef. -0.91859, p = 0.000984)

Por cada crédito adicional matriculado, el tiempo en deporte disminuye en aproximadamente 0.92 horas semanales. Es altamente significativo (***), lo que indica que hay una relación fuerte entre el número de créditos y la reducción del tiempo en deportes.

X2 (Promedio acumulado, coef. -2.39382, p = 0.019522)

Por cada punto adicional en el promedio acumulado, el tiempo en deportes disminuye en 2.39 horas semanales. Es significativo (*), aunque menos que X1, lo que sugiere que los estudiantes con mejores notas tienden a reducir su tiempo en actividades deportivas.

X3 (Tiempo de ocio, coef. 0.09359, p = 0.330308)

Cada hora adicional de ocio se asocia con un aumento de 0.093 horas en deportes. Sin embargo, no es estadísticamente significativo (p > 0.05), lo que indica que esta variable no influye de manera clara en el tiempo dedicado a la práctica deportiva.

El modelo tiene un buen ajuste 𝑅2=0.7775, lo que indica que estas variables explican en gran medida la variación en el tiempo deportivo.

Rehacemos el modelo de regresión lineal multiple para eliminar aquellas variables sin significancia del modelo anterior:

modelo_final=step(modg, direction = "backward")
## Start:  AIC=13.52
## Y ~ X1 + X2 + X3
## 
##        Df Sum of Sq    RSS    AIC
## - X3    1    1.6607 28.019 12.743
## <none>              26.358 13.521
## - X2    1   11.0970 37.455 18.548
## - X1    1   26.6581 53.016 25.497
## 
## Step:  AIC=12.74
## Y ~ X1 + X2
## 
##        Df Sum of Sq    RSS    AIC
## <none>              28.019 12.743
## - X2    1    16.524 44.543 20.014
## - X1    1    28.001 56.020 24.600
summary(modelo_final)
## 
## Call:
## lm(formula = Y ~ X1 + X2, data = Parcial1_aplicada)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9924 -0.9235 -0.1287  0.5982  2.9209 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  30.4194     3.6349   8.369 1.97e-07 ***
## X1           -0.9381     0.2276  -4.122 0.000712 ***
## X2           -2.7263     0.8610  -3.166 0.005642 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.284 on 17 degrees of freedom
## Multiple R-squared:  0.7634, Adjusted R-squared:  0.7356 
## F-statistic: 27.43 on 2 and 17 DF,  p-value: 4.772e-06

Por último realizamos la validación de supuestos del modelo de regresión lineal múltiple:

par(mfrow=c(2,2))
plot(modelo_final)

El modelo de regresión presenta un buen ajuste, explicando una proporción significativa de la variabilidad de la variable respuesta (, ajustado = 0.73). Los residuos no muestran un patrón claro, lo que sugiere linealidad, y la homocedasticidad se cumple de manera razonable. Sin embargo, existen ligeras desviaciones en la normalidad de los residuos y algunos puntos con cierta leverage. Aunque estos factores no comprometen gravemente la validez del modelo, se recomienda realizar pruebas adicionales y considerar transformaciones para mejorar su estabilidad.

El análisis de regresión realizado permite responder a los interrogantes planteados por el director de bienestar de la universidad. En primer lugar, se encontró que el rendimiento académico sí afecta la práctica deportiva, ya que un mayor promedio acumulado se asocia con una reducción significativa en el tiempo dedicado a los deportes. Asimismo, el número de créditos matriculados influye negativamente, lo que indica que los estudiantes con una mayor carga académica disponen de menos tiempo para la actividad física. Por otro lado, aunque el tiempo de ocio muestra una relación positiva con la práctica deportiva, este efecto no es estadísticamente significativo, lo que sugiere que el deporte representa solo una pequeña parte del tiempo libre de los estudiantes. El modelo ajustado tiene un coeficiente de determinación R2=0.7775, lo que indica que explica aproximadamente el 78% de la variabilidad en el tiempo dedicado al deporte. Sin embargo, a pesar de su buen ajuste, su capacidad predictiva puede ser limitada debido a la variabilidad individual entre los estudiantes y la posible influencia de otros factores no considerados en el análisis.

PIB

library(readxl)
punto3 <- read_excel("C:/Users/gabui/Downloads/punto3parcial1.xlsx")

Estimamos un modelo de regresión lineal múltiple que permite predecir el PIB con respecto a las variables dadas:

modA=lm(PIB~azucar+cemento+lingotes+carbon +vehiculos,data=punto3)
modA
## 
## Call:
## lm(formula = PIB ~ azucar + cemento + lingotes + carbon + vehiculos, 
##     data = punto3)
## 
## Coefficients:
## (Intercept)       azucar      cemento     lingotes       carbon    vehiculos  
##   3.644e+05   -5.554e-01   -1.877e-01   -1.780e+01    2.616e+02    2.798e+01

Interpretamos cada uno de los coeficientes del modelo estimado:

  • Azúcar (-0.5554): Un coeficiente negativo indica que, manteniendo constantes las demás variables, un aumento en la producción de azúcar está asociado con una ligera disminución del PIB.

  • Cemento (-0.1877): También presenta un coeficiente negativo, lo que sugiere que un incremento en la producción de cemento podría estar correlacionado con una reducción del PIB. Es posible que la industria cementera no tenga un impacto directo positivo en el crecimiento económico.

  • Lingotes (-17.80): Este coeficiente negativo indica que un aumento en la producción de lingotes metálicos se asocia con una disminución del PIB. Este resultado podría deberse a la estructura económica del país, donde la producción de lingotes no necesariamente impulsa el crecimiento económico de manera directa.

  • Carbón (261.6): Es la variable con el coeficiente positivo más alto, lo que sugiere que un aumento en la producción de carbón tiene un impacto significativo en el crecimiento del PIB. Esto indica que el sector minero podría ser un motor clave de la economía.

  • Vehículos (27.98): También tiene un coeficiente positivo, aunque menor que el del carbón, lo que sugiere que la producción de vehículos tiene una relación positiva con el PIB. Un incremento en este sector podría contribuir al crecimiento económico, pero su impacto es moderado.

Observamos la correlación de las variables con el PIB:

cor(punto3)
##              periodo     azucar    cemento   lingotes     carbon  vehiculos
## periodo    1.0000000 -0.4132418  0.8586888  0.4656360  0.9467031  0.8173906
## azucar    -0.4132418  1.0000000 -0.4141269 -0.2400593 -0.4178881 -0.3868815
## cemento    0.8586888 -0.4141269  1.0000000  0.7419534  0.9272001  0.9192448
## lingotes   0.4656360 -0.2400593  0.7419534  1.0000000  0.5962516  0.7797237
## carbon     0.9467031 -0.4178881  0.9272001  0.5962516  1.0000000  0.8294947
## vehiculos  0.8173906 -0.3868815  0.9192448  0.7797237  0.8294947  1.0000000
## PIB        0.9905759 -0.4683638  0.8458729  0.4114286  0.9321403  0.8025043
##                  PIB
## periodo    0.9905759
## azucar    -0.4683638
## cemento    0.8458729
## lingotes   0.4114286
## carbon     0.9321403
## vehiculos  0.8025043
## PIB        1.0000000

Hay una fuerte correlacion entre el PIB y las variables ya que el coeficiente de correlacion multiple es cercano a 1 por ende el modelo contiene varias variables que sirven para predecir el PIB.

Calculamos el coeficiente de determinación:

summary(modA)
## 
## Call:
## lm(formula = PIB ~ azucar + cemento + lingotes + carbon + vehiculos, 
##     data = punto3)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -54347 -11581   -934   9946  70160 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  3.644e+05  2.176e+05   1.674  0.13804   
## azucar      -5.554e-01  7.209e-01  -0.770  0.46628   
## cemento     -1.877e-01  3.674e-01  -0.511  0.62512   
## lingotes    -1.780e+01  6.002e+00  -2.966  0.02092 * 
## carbon       2.616e+02  7.183e+01   3.642  0.00827 **
## vehiculos    2.798e+01  1.148e+01   2.437  0.04493 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 43090 on 7 degrees of freedom
## Multiple R-squared:  0.9533, Adjusted R-squared:   0.92 
## F-statistic: 28.61 on 5 and 7 DF,  p-value: 0.0001611

El R^2 múltiple es 0.9533, lo que significa que el 95.33% de la variabilidad del PIB es explicada por las variables independientes (azúcar, cemento, lingotes, carbón y vehículos).

A un nivel de significancia del 0,10, las variables lingotes, carbón y vehículos son significativas porque sus valores p son menores a 0.10.

En cambio, azúcar y cemento no son significativas porque tienen valores p mayores a 0.10.

Realizamos el nuevo modelo eliminando las variables que no son significativas

modB=lm(PIB~lingotes+carbon +vehiculos,data=punto3) 
modB
## 
## Call:
## lm(formula = PIB ~ lingotes + carbon + vehiculos, data = punto3)
## 
## Coefficients:
## (Intercept)     lingotes       carbon    vehiculos  
##   220575.08       -19.14       239.33        25.72

Duster

En este análisis, exploramos la relación entre el precio de un Duster y las variables kilometraje, antigüedad y ciudad. Se utilizarán gráficos y un modelo de regresión lineal para evaluar estas relaciones.

library(readxl)
Duster_parcial1 <- read_excel("C:/Users/gabui/Downloads/Duster_parcial (1).xlsx", 
    col_types = c("numeric", "numeric", "text", 
        "text", "numeric"))

Realizamos una exploración de datos para mirar la relación que tiene el precio con las demás variables

require(ggplot2)
g1=ggplot(Duster_parcial1,aes(x=kilo,y=precio))+geom_point()+theme_bw()+geom_smooth(method = "lm")
g2=ggplot(Duster_parcial1,aes(x=antigüedad,y=precio))+geom_point()+theme_bw()+geom_smooth(method = "lm")
g3=ggplot(Duster_parcial1,aes(x=ciudad,y=precio))+geom_point()+theme_bw()+geom_smooth(method = "lm")

library(gridExtra)
grid.arrange(g1, g2, g3,  nrow = 3)

Se observa que las variables kilometraje y antigüedad muestran una clara tendencia con el precio, lo que indica una correlación significativa.

Posteriormente, ajustamos un modelo de regresión lineal con las variables más relevantes: antigüedad y kilometraje. Se realizo la validacion cruzada del modelo y se obtuvo que el modelo predice con un 75% de certeza el precio de una camioneta Duster con base en la antigüedad y el kilometraje.

modR <- lm(precio ~ antigüedad + kilo, data = Duster_parcial1)
modR
## 
## Call:
## lm(formula = precio ~ antigüedad + kilo, data = Duster_parcial1)
## 
## Coefficients:
## (Intercept)   antigüedad         kilo  
##  91841280.1   -3432728.5       -104.9
summary(modR)
## 
## Call:
## lm(formula = precio ~ antigüedad + kilo, data = Duster_parcial1)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -16966169  -4512345   -800756   3183235  18347687 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  9.184e+07  2.498e+06  36.763  < 2e-16 ***
## antigüedad  -3.433e+06  5.214e+05  -6.584 1.02e-07 ***
## kilo        -1.050e+02  3.098e+01  -3.388  0.00168 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7542000 on 37 degrees of freedom
## Multiple R-squared:  0.7634, Adjusted R-squared:  0.7506 
## F-statistic: 59.69 on 2 and 37 DF,  p-value: 2.626e-12

El modelo resultante es:

\[ \hat{precio} = 91841280.1 - 3432728.5(antigüedad) - 104.9(kilometraje) \]

El modelo desarrollado para predecir el precio de una camioneta Duster en función de su antigüedad y kilometraje tiene varias aplicaciones y oportunidades de monetización. En el ámbito de las plataformas de compraventa de autos, este modelo puede integrarse en sitios web o aplicaciones para que compradores y vendedores estimen el valor de mercado de un vehículo antes de realizar una transacción, facilitando negociaciones más informadas. Asimismo, los concesionarios y tasadores pueden emplearlo para ofrecer precios más justos a los clientes que buscan vender su auto o adquirir uno usado, optimizando sus estrategias de compra y reventa.

Otra opción es la venta de reportes premium con análisis detallados sobre la depreciación y tendencias de precios, o incluso la creación de una plataforma web o aplicación que, además de ofrecer el servicio de estimación, genere ingresos a través de publicidad o modelos de suscripción para acceder a función.