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?
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()
| 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 | ▇▂▅▃▁ |
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.
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.
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
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.