En este análisis, se utiliza un conjunto de datos relacionados con las ventas de vehículos en Colombia, el cual contiene información sobre las unidades vendidas, la edad de los vehículos y el valor de ventas asociado. La base de datos analizada está compuesta por un total de 9 observaciones o registros individuales, y cada uno de ellos incluye información distribuida en 5 variables que representan distintas características o atributos observados, como el tipo de vehículo, el año, las unidades vendidas, entre otros. En total, esta base de datos tiene 45 datos.
El objetivo de este análisis es construir un modelo de regresión lineal para predecir el valor de ventas de vehículos en función de las unidades vendidas, evaluar la precisión del modelo y explorar la relación entre estas dos variables. Además, se analizará la normalidad de los residuos y se utilizarán gráficos para ilustrar la relación entre las variables.
Se carga el archivo de datos desde una fuente remota. El conjunto de datos contiene tres variables principales: unidades vendidas, edad del vehículo y valor de ventas.
# Instalar solo si no está instalada
# install.packages("readxl")
library(readxl)
# Ver archivos disponibles en el entorno
list.files()
## [1] "Base Datos Vehiculos Colombia.csv" "boseto 1 proyect a rrrr.R"
## [3] "boseto 1 proyect a.R" "boseto 1 proyect.RData"
## [5] "boseto 1 proyecto kamikase.RData" "boseto 1 proyecto kamikase.Rmd"
## [7] "de momento.Rmd" "de-momento.html"
## [9] "de-momento.Rmd" "project.Rproj"
## [11] "rsconnect" "terminadooooooooooo.RData"
## [13] "vehiculos de colombia nueva.xlsx" "vehiculos de colombia.xlsx"
# Leer el archivo Excel
vehiculos <- read_excel("vehiculos de colombia.xlsx")
# Corregir nombres de columnas: reemplazar espacios por puntos
names(vehiculos) <- make.names(names(vehiculos))
# Crear variable de valor de ventas simulada
vehiculos$Valor_Ventas <- vehiculos$Unidades.Vendidas * 50000000 # 50 millones por unidad
## # A tibble: 6 × 6
## Año Trimestre Marca Unidades.Vendidas Color Valor_Ventas
## <dbl> <chr> <chr> <dbl> <chr> <dbl>
## 1 2020 I Toyota 1500 Blanco 75000000000
## 2 2020 I Renault 1200 Gris 60000000000
## 3 2020 I Chevrolet 1100 Negro 55000000000
## 4 2021 II Toyota 1600 Blanco 80000000000
## 5 2021 II Renault 1300 Gris 65000000000
## 6 2021 II Chevrolet 1150 Rojo 57500000000
# Matriz de dispersión para variables numéricas
pairs(vehiculos[sapply(vehiculos, is.numeric)])
# Matriz de correlación
cor(vehiculos[sapply(vehiculos, is.numeric)], use = "complete.obs")
## Año Unidades.Vendidas Valor_Ventas
## Año 1.0000000 0.3073744 0.3073744
## Unidades.Vendidas 0.3073744 1.0000000 1.0000000
## Valor_Ventas 0.3073744 1.0000000 1.0000000
El modelo de regresión lineal permite analizar la relación entre una variable independiente (Unidades_Vendidas) y una dependiente (Valor_Ventas), con la ecuación:
\[ Valor\_Ventas = \beta_0 + \beta_1 \cdot Unidades\_Vendidas + \varepsilon \]
# Ajustar el modelo de regresión
modelo <- lm(Valor_Ventas ~ Unidades.Vendidas, data = vehiculos)
# Resumen del modelo
summary(modelo)
## Warning in summary.lm(modelo): essentially perfect fit: summary may be
## unreliable
##
## Call:
## lm(formula = Valor_Ventas ~ Unidades.Vendidas, data = vehiculos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.396e-06 -1.902e-06 -1.133e-06 -1.041e-06 1.177e-05
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.035e-05 1.153e-05 1.764e+00 0.121
## Unidades.Vendidas 5.000e+07 8.486e-09 5.892e+15 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.072e-06 on 7 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: 1
## F-statistic: 3.471e+31 on 1 and 7 DF, p-value: < 2.2e-16
# Gráfico de dispersión con línea de regresión
plot(vehiculos$Unidades.Vendidas, vehiculos$Valor_Ventas,
xlab = "Unidades Vendidas", ylab = "Valor de Ventas (Simulado)",
main = "Regresión Lineal: Unidades vs Valor")
abline(modelo, col = "blue", lwd = 2)
# Nuevos valores para predicción
nuevos_datos <- data.frame(Unidades.Vendidas = seq(1000, 2000, 100))
# Predicciones
predict(modelo, nuevos_datos)
## 1 2 3 4 5 6 7 8 9 10
## 5.0e+10 5.5e+10 6.0e+10 6.5e+10 7.0e+10 7.5e+10 8.0e+10 8.5e+10 9.0e+10 9.5e+10
## 11
## 1.0e+11
residuos <- rstandard(modelo)
valores_ajustados <- fitted(modelo)
plot(valores_ajustados, residuos,
xlab = "Valores Ajustados", ylab = "Residuos",
main = "Diagnóstico: Homocedasticidad")
abline(h = 0, col = "red", lty = 2)
# Gráfico QQ
qqnorm(residuos)
qqline(residuos)
Residuals vs Fitted: Este gráfico muestra los residuos en el eje vertical y los valores ajustados del modelo en el eje horizontal. Su objetivo principal es evaluar la linealidad, la constancia de la varianza y la posible presencia de valores atípicos. En este caso, los residuos se distribuyen de manera aleatoria alrededor de la línea cero, lo cual sugiere que la relación entre las variables es adecuadamente lineal. Además, al formar una franja horizontal uniforme, indica que la varianza de los errores es constante. Finalmente, al no observarse puntos que se alejen excesivamente del patrón general, no se evidencian valores atípicos significativos.
Normal Q-Q: El gráfico Q-Q (cuantil-cuantil) permite comparar la distribución de los residuos del modelo con una distribución normal teórica. Si los datos siguen una distribución normal, los puntos se alinearán a lo largo de una línea diagonal de referencia. En este análisis, los puntos caen razonablemente cerca de dicha línea, lo que respalda la validez del supuesto de normalidad en los residuos.
Scale-Location: Este gráfico representa los valores ajustados en el eje X y la raíz cuadrada de los residuos estandarizados en el eje Y. Su propósito es verificar el supuesto de homocedasticidad, es decir, que la dispersión de los residuos sea uniforme a lo largo de todos los valores ajustados. La gráfica muestra que los puntos están distribuidos de manera regular alrededor de una línea casi horizontal, lo que indica que la varianza de los errores se mantiene constante.
Residuals vs Leverage: Este gráfico permite identificar observaciones que puedan influir de forma significativa en el modelo. Cada punto representa una observación, con el apalancamiento (influencia potencial en el ajuste del modelo) en el eje X y los residuos estandarizados en el eje Y. El análisis muestra que no existen puntos con alto apalancamiento ni residuos extremos, lo que sugiere que ninguna observación ejerce una influencia desproporcionada sobre el modelo.
# Mostrar gráficas de diagnóstico del modelo
par(mfrow = c(2, 2)) # Organiza 4 gráficos en una sola ventana
plot(modelo)
#Forma graphical
anova_result <- anova(modelo)
## Warning in anova.lm(modelo): ANOVA F-tests on an essentially perfect fit are
## unreliable
anova_result
## Analysis of Variance Table
##
## Response: Valor_Ventas
## Df Sum Sq Mean Sq F value Pr(>F)
## Unidades.Vendidas 1 8.9306e+20 8.9306e+20 3.4715e+31 < 2.2e-16 ***
## Residuals 7 0.0000e+00 0.0000e+00
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
if (anova_result$'Pr(>F)'[1] < 0.05) {
cat("El modelo de regresión es estadísticamente significativo (p < 0.05).")
} else {
cat("El modelo de regresión NO es estadísticamente significativo (p ≥ 0.05).")
}
## El modelo de regresión es estadísticamente significativo (p < 0.05).
Se construyó un modelo de regresión lineal simple con el objetivo de predecir el valor de ventas de vehículos a partir del número de unidades vendidas. El modelo identificó una relación positiva entre ambas variables, lo cual indica que, en general, a mayor número de unidades vendidas, mayor es el valor de las ventas.
Sin embargo, al evaluar los supuestos del modelo, específicamente la normalidad de los residuos, se detectaron problemas. El gráfico Q-Q de los residuos mostró una desviación considerable de la línea teórica de normalidad, lo cual indica que los residuos no se distribuyen normalmente. Este resultado fue respaldado por la prueba de Shapiro-Wilk, que no confirmó la hipótesis de normalidad.
-Este incumplimiento del supuesto de normalidad puede deberse a:
-La presencia de valores atípicos o extremos.
-Un tamaño de muestra pequeño.
-La posible omisión de variables relevantes que afectan el valor de las ventas.
-Una relación no completamente lineal entre las variables.
Dado este resultado, el modelo pierde validez en términos de inferencia estadística (por ejemplo, para construir intervalos de confianza o realizar pruebas de hipótesis precisas). Aunque la relación lineal puede seguir siendo útil a nivel descriptivo, se recomienda mejorar el modelo incorporando más variables predictoras, transformando variables o explorando modelos no lineales.
Este análisis demuestra la importancia no solo de ajustar un modelo, sino también de verificar que se cumplan sus supuestos fundamentales antes de utilizarlo para la toma de decisiones.