Informe Final

a) Planteamiento revisado de la pregunta predictiva

En las entregas anteriores revise varias pregutnas. teniendo como varible dependiente el rendimiento en mpg.
Para el modelo lineal la pregunta sería:

¿El peso del auto, su cilindrada y su origen predicen el rendimiento del vehiculo?

Aunque al ir realizando este informe también pude generar una preguna para un modelo biomial.

¿El rendimiento, el peso y la cilindrada predince si un Auto es importado?

b) Dataset y variables seleccionadas


Se utilizó la base de Autos, la cual se limpió para su uso. Para este informe se usaron las variables:
Rendimiento (mpg)
Peso (weight)
Cilindrada (displacement)
Procedencia(foreign)

Autos_Limpia %>%
  select(mpg, weight, displacement, foreign) %>%
  skim()
Data summary
Name Piped data
Number of rows 74
Number of columns 4
_______________________
Column type frequency:
factor 1
numeric 3
________________________
Group variables None

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
foreign 0 1 FALSE 2 Dom: 52, For: 22

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
mpg 0 1 21.30 5.79 12 18 20 24.75 41 ▅▇▃▂▁
weight 0 1 3019.46 777.19 1760 2250 3190 3600.00 4840 ▇▅▇▅▂
displacement 0 1 197.30 91.84 79 119 196 245.25 425 ▇▂▅▃▁

c) Visualizaciones clave (relación de variables, comportamiento de residuos, etc.)



Las variables de peso se correlaciona de manera significativa con rendimiento (r=-0.81), es decir al aumentar e peso disminuye el rendimiento; también se relaciona con la cilindrada (r=0,89), los autos más pesados tienen una mayor cilindrada. La relación entre la cilindrada y el rendimiento también es sognificactiva (r=-0.71) entre mayor es la cilindrada el rendimiento es menor.

# 1. Seleccionar las variables de interés en un nuevo data frame
datos_correlacion <- subset(Autos_Limpia, select = c(mpg, weight, displacement))

# 2. Calcular la matriz de correlaciones y los valores P usando corr.test()
# Este comando realiza todas las pruebas de correlación por pares
resultados_cor_test <- corr.test(datos_correlacion)

# 3. Mostrar los resultados
# La función print predeterminada para corr.test muestra los asteriscos automáticamente
print(resultados_cor_test, short = FALSE)
## Call:corr.test(x = datos_correlacion)
## Correlation matrix 
##                mpg weight displacement
## mpg           1.00  -0.81        -0.71
## weight       -0.81   1.00         0.89
## displacement -0.71   0.89         1.00
## Sample Size 
## [1] 74
## Probability values (Entries above the diagonal are adjusted for multiple tests.) 
##              mpg weight displacement
## mpg            0      0            0
## weight         0      0            0
## displacement   0      0            0
## 
##  Confidence intervals based upon normal theory.  To get bootstrapped values, try cor.ci
##             raw.lower raw.r raw.upper raw.p lower.adj upper.adj
## mpg-weght       -0.87 -0.81     -0.71     0     -0.88     -0.69
## mpg-dsplc       -0.80 -0.71     -0.57     0     -0.80     -0.57
## weght-dsplc      0.84  0.89      0.93     0      0.82      0.94



En variable de procedencia tambien se encuentran diferencias significativas con el rendimiento. Los Autos Extranjeros tienen un rendimiento promedio mayor que los domesticos (t=-3.1797, p=0.003)

ggplot(Autos_Limpia, aes(x = foreign, y = mpg, fill = foreign)) +
  geom_boxplot() +
  scale_fill_brewer(palette = "Dark2", name = "Procedencia del vehículo") +
  labs(title = "Distribución del rendimiento por Procedencia",
       x = "Procedencia del vehículo",
       y = "Rendimiento (mpg)") +
  theme_light(base_size = 14)

# 1. Prueba t para 'mpg' agrupado por 'foreign'
# La fórmula es 'variable_respuesta ~ variable_grupo'
ttest_mpg <- t.test(mpg ~ foreign, data = Autos_Limpia)

# Muestra los resultados de la prueba t para 'mpg'
print(ttest_mpg)
## 
##  Welch Two Sample t-test
## 
## data:  mpg by foreign
## t = -3.1797, df = 30.546, p-value = 0.00337
## alternative hypothesis: true difference in means between group Domestic and group Foreign is not equal to 0
## 95 percent confidence interval:
##  -8.120053 -1.771556
## sample estimates:
## mean in group Domestic  mean in group Foreign 
##               19.82692               24.77273



También se encontraron diferencias con el peso. Los autos nacionales son más pesados que los extranjeros (t=9.4515, p<0.001)

ggplot(Autos_Limpia, aes(x = foreign, y = weight, fill = foreign)) +
  geom_boxplot() +
  scale_fill_brewer(palette = "Dark2", name = "Procedencia del vehículo") +
  labs(title = "Distribución del peso por Procedencia",
       x = "Procedencia del vehículo",
       y = "Peso") +
  theme_light(base_size = 14)

ttest_peso <- t.test(displacement ~ foreign, data = Autos_Limpia)
print(ttest_peso)
## 
##  Welch Two Sample t-test
## 
## data:  displacement by foreign
## t = 9.4515, df = 67.004, p-value = 5.984e-14
## alternative hypothesis: true difference in means between group Domestic and group Foreign is not equal to 0
## 95 percent confidence interval:
##   96.61756 148.35097
## sample estimates:
## mean in group Domestic  mean in group Foreign 
##               233.7115               111.2273



Para la variable de cilindrada, también hay diferencias significativas, en este caso los autos domésticos quienes tienen una cilindrada más alta (t=9.4515, p<0.001)

ggplot(Autos_Limpia, aes(x = foreign, y = displacement, fill = foreign)) +
  geom_boxplot() +
  scale_fill_brewer(palette = "Dark2", name = "Procedencia del vehículo") +
  labs(title = "Distribución de la cilindrada por Procedencia",
       x = "Procedencia del vehículo",
       y = "cilindrada") +
  theme_light(base_size = 14)

ttest_displacement <- t.test(displacement ~ foreign, data = Autos_Limpia)
print(ttest_displacement)
## 
##  Welch Two Sample t-test
## 
## data:  displacement by foreign
## t = 9.4515, df = 67.004, p-value = 5.984e-14
## alternative hypothesis: true difference in means between group Domestic and group Foreign is not equal to 0
## 95 percent confidence interval:
##   96.61756 148.35097
## sample estimates:
## mean in group Domestic  mean in group Foreign 
##               233.7115               111.2273



Debido a estos resultados en el primer modelo que planteo integro todas las variables.

# Ejecutar el modelo de regresión usando la variable dummy numérica 'extranjero'
modelo_manual <- lm(mpg ~ displacement + weight + foreign, data = Autos_Limpia)

# Mostrar un resumen de los resultados
summary(modelo_manual)
## 
## Call:
## lm(formula = mpg ~ displacement + weight + foreign, data = Autos_Limpia)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.1792 -2.0554 -0.4576  0.7552 14.3991 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    41.847949   2.350704  17.802  < 2e-16 ***
## displacement    0.001929   0.010070   0.192    0.849    
## weight         -0.006774   0.001167  -5.807 1.71e-07 ***
## foreignForeign -1.600631   1.113648  -1.437    0.155    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.43 on 70 degrees of freedom
## Multiple R-squared:  0.6629, Adjusted R-squared:  0.6484 
## F-statistic: 45.88 on 3 and 70 DF,  p-value: < 2.2e-16
# Generar los 4 gráficos de diagnóstico estándar en una sola ventana
par(mfrow = c(2, 2)) # Configura la visualización para 2 filas y 2 columnas
plot(modelo_manual)



La intercepción del modelo es significativa, pero solo el efecto del peso tiene una significancia menor a 0.05. el modelo explica cerca del 66% de la varianza, con un buen ajuste. Los gráficos de análisis residual también muestran ajustes adecuados de linealidad, homocedasticidad, y se muestran algunos datos cercanos a la linea de apalancamiento, lo que pone de manifiesto la presencia de datos atípicos.

Por lo que decdí que el modelo final solo fuera de una variable predictora, que sería el peso.

d) Modelo final



El modelo final es el siguiente:

# Ajustar el modelo en R
modelo_regresion <- lm(mpg ~ weight, data = Autos_Limpia)
summary(modelo_regresion)
## 
## Call:
## lm(formula = mpg ~ weight, data = Autos_Limpia)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.9593 -1.9325 -0.3713  0.8885 13.8174 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 39.4402835  1.6140031   24.44   <2e-16 ***
## weight      -0.0060087  0.0005179  -11.60   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.439 on 72 degrees of freedom
## Multiple R-squared:  0.6515, Adjusted R-squared:  0.6467 
## F-statistic: 134.6 on 1 and 72 DF,  p-value: < 2.2e-16



El peso por sí solo explica aproximadamente el 65.15% de la variabilidad del rendimiento (mpg). Esto es un ajuste fuerte y muy similar a los modelos anteriores que incluían más variables. El modelo es estadísticamente sigificativa con un p-value muy cercano a cero. La formula del modelo queda de la siguiente manera:

MPG=39.44 - 0.006 x Peso

Cómo en las pruebas t la procedencia del vehículo presentaba diferencias significativas decidí hacer un modelo binomial para analizar si las variables seleccionadas predicen el origen.

modelo_binomial <- glm(
  foreign ~ mpg + weight + displacement, 
  data = Autos_Limpia, 
  family = binomial
)
summary(modelo_binomial)
## 
## Call:
## glm(formula = foreign ~ mpg + weight + displacement, family = binomial, 
##     data = Autos_Limpia)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)  
## (Intercept)  11.309939   4.937806   2.290   0.0220 *
## mpg          -0.180392   0.093823  -1.923   0.0545 .
## weight        0.001231   0.002193   0.562   0.5744  
## displacement -0.078943   0.036750  -2.148   0.0317 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 90.066  on 73  degrees of freedom
## Residual deviance: 41.182  on 70  degrees of freedom
## AIC: 49.182
## 
## Number of Fisher Scoring iterations: 8



encontrando que la única varibale significativa es la cilindrada, y el rendimiento queda en el punto de corte de alfa del 0.05, por lo que su significacia estadística por lo que necesita tratarse con cautela.

e) Discusión del modelo:

Los modelos predicen el rendimiento, y la procedencia del vehículo, aunque presenta algunas limitaciones, como el tamaño de la muestra, la normalidad de las variables por la presencia de datos atípicos

f) Conclusiones



Es importante conocer algunos datos que pueden predecir el rendimiento, que es un punto a considerar al adquirir un vehículo si buscamos que tenga un buen rendimiento, debemos considerar que el peso es el principal predictor, aunque las otras variables también estan relacionadas. recordando que estos datos provienen de autos de los años 70s estos resultados podrían no representar la situación actual debido a la mejora en la tecnología.