El código a continuacion presentado utiliza diversas herramientas y técnicas estadísticas para llevar a cabo un análisis comparativo. Desde la importación de datos y la limpieza hasta la aplicación de pruebas de normalidad, autocorrelación y homogeneidad, se busca validar la robustez del modelo propuesto. Además, se utilizan visualizaciones gráficas, como diagramas de dispersión, residuos versus el tiempo, y gráficos QQ, para proporcionar una comprensión visual de la distribución de los residuos y la validez de los supuestos del modelo.A continuacion se adjuntan un enlace de donde se obtivieron dichos datos https://www.kaggle.com/datasets/checoalejandro/autos-consumo-gasolina-mexico/.

1 Funciones utilizadas en el codigo

Para una mejor del codigo se adjunta una descripcion de cada una de las funciones utilizadas en el codigo

  • library(readxl): Cargue la biblioteca readxlpara leer archivos de Excel.

  • Cons <- read_excel("juan/Consumo Gasolina Autos Ene 2018 (1).xlsx"): Lee un archivo de Excel llamado “Consumo Gasolina Autos Ene 2018 (1).xlsx” y almacena los datos en un objeto llamado Cons.

  • head(Cons): Muestra las primeras 5 filas del dataframe Cons.

  • View(Cons): Abre una vista interactiva de los datos en el dataframe Cons.

  • datos <- na.omit(Cons[c(12:80), c(11, 15)]): Selecciona un subconjunto de datos eliminando las filas que contienen valores faltantes ( NA) de las columnas 12 a 80 y las columnas 11 y 15. Los datos resultantes se almacenan en el dataframe datos.

  • library(MVN): Carga la biblioteca MVN para realizar pruebas de normalidad multivariante.

  • library(lmtest): Carga la biblioteca lmtest para realizar pruebas asociadas a modelos de regresión.

  • data <- data.frame(y = datos$CO2(g/km) , x = datos$R.Ciudad (km/l)) : Crea un nuevo dataframe llamado datacon las columnas yy xtomadas de las columnas CO2(g/km)y R.Ciudad (km/l)de datos.

  • resultado <- mvn(data = data, mvnTest = "mardia"): Realiza pruebas de normalidad multivariante en los datos utilizando el test de Mardia y almacena los resultados en el objeto resultado.

  • print(resultado$univariateNormality): Muestra los resultados de las pruebas de normalidad univariante realizadas en los datos.

  • cor(data): Calcula la matriz de evaluación entre las variables endata`.

  • modelo <- lm(y ~ x, data = data): Ajusta un modelo de regresión lineal simple con y como variable dependiente y x como variable independiente.

  • resumen <- summary(modelo): Calcula un resumen del modelo de regresión lineal.

  • resumen: Muestra el resumen del modelo que incluye coeficientes estimados, estadísticas de prueba y otros detalles.

  • plot(data$y ~ data$x): Cree un diagrama de dispersión de y contra x.

  • resumen(modelo): Muestra un resumen adicional del modelo.

  • predict(modelo): Calcula los valores predichos por el modelo.

  • e <- modelo$residuals: Guarde los residuos del modelo en el objeto e.

  • shapiro.test(e): Realice la prueba de normalidad de Shapiro-Wilk en los residuos del modelo.

  • dwtest(modelo): Realice la prueba de Durbin-Watson para verificar la autocorrelación de los errores del modelo.

  • bptest(modelo): Realice la prueba de Breusch-Pagan para evaluar la homogeneidad de varianza de los errores.

  • library(tseries): Carga la biblioteca tseries para realizar análisis de series temporales.

  • tres <- residuals(modelo): Calcula los residuos del modelo.

  • rachas <- factor(sign(tres)): Calcula las rachas de los residuos.

  • run.test(rachas): Realice el test de rachas para evaluar si los residuos siguen algún patrón.

  • library(ggplot2): Cargue la biblioteca ggplot2para crear gráficos.

  • ggplot(data, aes(x, y)) + geom_point() + geom_smooth(method = "lm", se = FALSE, color = "blue") + labs(title = "Gráfico de Dispersión", x = "Eje X", y = "Eje Y"): Crea un gráfico de dispersión con una línea de regresión lineal ajustada.

  • plot(e, pch = 20, ylab = 'Residuales', xlab = 'Tiempo'): Crea un gráfico de los residuos en función del tiempo.

  • abline(h = 0, lwd = 2, col = 'blue'): Agrega una línea horizontal en y = 0 al gráfico de residuos.

  • qqnorm(e, pch = 20, main = 'Gráfico QQ Plot para los residuales', ylab = 'Cuantiles muestrales', xlab = 'Cuantiles teóricos'): Crea un gráfico QQ plot de los residuos.

  • qqline(e, col = 'red', lwd = 2): Agrega una línea al gráfico QQ plot.

  • sigma2 <- resumen$sigma: Extrae la estimación de la variación de los residuos del resumen del modelo.

  • hist(e, freq = FALSE, breaks = 8): Crea un histograma de los residuos con una curva de densidad superpuesta.

  • curve(dnorm(x, mean = 0, sd = sqrt(sigma2)), add = TRUE, col = 'red'): Agrega una curva normal al histograma de los residuos.

library(readxl)    
Cons <-read_excel("juan/Consumo Gasolina Autos Ene 2018 (1).xlsx")
head(Cons) # muestra las primeras 5 filas

View(Cons)
datos<- na.omit(Cons[c(12:80),c(11,15)]) # querdan un total de 49 datos 
library(MVN)
library(lmtest)
data<- data.frame(y=datos$`CO2(g/km)`,x=datos$`R. Ciudad (km/l)`); data # datos con los que se va a trabajar 
resul<- mvn(data = data, mvnTest = "mardia")

#print(resul$Mardia) # Muestra los resultados de la prueba conjunta

print(resul$univariateNormality) # Muestra resultados de manera univa 

2 correlación

cor(data) # correlación 

3 Modelo

modelo<-lm(y~x, data=data)
resumen<-summary(modelo) ; resumen

un aumento en una unidad en la variable x (R.ciudad) produce una disminución promedio en la respuesta y de -8.219

4 diagrama de dispersion

plot(data$y~data$x)

5 Prediciones

summary(modelo)

modelo predict(modelo) valores predichos

e=modelo$residuals

6 supuestos

shapiro.test(e) prueba de normalidad de los errores del test de normalidad de Shapiro-Wilk se concluye que los residuos del modelo no son provenientes de una distribución normal

dwtest(modelo) prueba de autocorrelacion del test de independencia de Durbin Watson se concluye que los errores del no son autocorrelacionados

bptest(modelo)

Realiza la prueba de Breusch-Pagan para homogeneidad del test de Homogeneidad de Breush-Pagan se concluye que los errores del modelo tienen varianza constante

prueba de las rachas (aleatoriedad):

library(tseries)
tres = residuals(modelo)
rachas =factor(sign(tres))
runs.test(rachas)

del test Runs tenemos que los errores del modelo siguen algun patron

6.0.1 parte grafica

library(ggplot2)


ggplot(data, aes(x, y)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(title = "Grafico de Dispersion",
       x = "Eje X",
       y = "Eje Y")

residuales versus el tiempo

plot(e,pch=20,ylab='Residuales',xlab ='Tiempo')
abline(h=0,lwd=2,col='blue')

Garafico QQplot

qqnorm(e,pch=20,main='Grafico QQ Plot para los residuales',ylab='Cuantiles muestrales',xlab='Cuantiles teoricos')
qqline(e,col='red',lwd=2)



sigma2 = resumen$sigma

hist(e,freq=FALSE,breaks=8)
curve(dnorm(x,mean=0,sd=sqrt(sigma2)),add=TRUE,col='red')