Variable Cuantitativa Continua-CO2 emitido por el tubo de escape
setwd("C:/Users/Usuario/Documents/Trabajo Estadistica/PROYECTO/")
datos <- read.csv("database.csv", header = TRUE, sep = ",", dec = ".")
Verificamos que rstudio nos lea correctamente los datos:
## 'data.frame': 38113 obs. of 81 variables:
## $ Vehicle.ID : int 26587 27705 26561 27681 27550 28426 27549 28425 27593 28455 ...
## $ Year : int 1984 1984 1984 1984 1984 1984 1984 1984 1984 1984 ...
## $ Make : chr "Alfa Romeo" "Alfa Romeo" "Alfa Romeo" "Alfa Romeo" ...
## $ Model : chr "GT V6 2.5" "GT V6 2.5" "Spider Veloce 2000" "Spider Veloce 2000" ...
## $ Class : chr "Minicompact Cars" "Minicompact Cars" "Two Seaters" "Two Seaters" ...
## $ Drive : chr "" "" "" "" ...
## $ Transmission : chr "Manual 5-Speed" "Manual 5-Speed" "Manual 5-Speed" "Manual 5-Speed" ...
## $ Transmission.Descriptor : chr "" "" "" "" ...
## $ Engine.Index : int 9001 9005 9002 9006 1830 1880 1831 1881 1524 1574 ...
## $ Engine.Descriptor : chr "(FFS)" "(FFS) CA model" "(FFS)" "(FFS) CA model" ...
## $ Engine.Cylinders : int 6 6 4 4 4 4 6 6 6 6 ...
## $ Engine.Displacement : num 2.5 2.5 2 2 2.5 2.5 4.2 4.2 4.2 4.2 ...
## $ Turbocharger : logi NA NA NA NA NA NA ...
## $ Supercharger : chr "" "" "" "" ...
## $ Fuel.Type : chr "Regular" "Regular" "Regular" "Regular" ...
## $ Fuel.Type.1 : chr "Regular Gasoline" "Regular Gasoline" "Regular Gasoline" "Regular Gasoline" ...
## $ Fuel.Type.2 : chr "" "" "" "" ...
## $ City.MPG..FT1. : int 17 17 18 18 18 18 13 13 15 15 ...
## $ Unrounded.City.MPG..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ City.MPG..FT2. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Unrounded.City.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ City.Gasoline.Consumption..CD. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ City.Electricity.Consumption : num 0 0 0 0 0 0 0 0 0 0 ...
## $ City.Utility.Factor : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.MPG..FT1. : int 24 24 25 25 17 17 13 13 20 19 ...
## $ Unrounded.Highway.MPG..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.MPG..FT2. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Unrounded.Highway.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Gasoline.Consumption..CD. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Electricity.Consumption : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Utility.Factor : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Unadjusted.City.MPG..FT1. : num 21 21 23 23 22 22 16 16 19 19 ...
## $ Unadjusted.Highway.MPG..FT1. : num 34 34 35 35 24 24 18 18 27 26 ...
## $ Unadjusted.City.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Unadjusted.Highway.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.MPG..FT1. : int 20 20 21 21 17 17 13 13 17 17 ...
## $ Unrounded.Combined.MPG..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.MPG..FT2. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Unrounded.Combined.MPG..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.Electricity.Consumption : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.Gasoline.Consumption..CD. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Combined.Utility.Factor : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Annual.Fuel.Cost..FT1. : int 1750 1750 1650 1650 2050 2050 2700 2700 2050 2050 ...
## $ Annual.Fuel.Cost..FT2. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Gas.Guzzler.Tax : chr "" "" "" "" ...
## $ Save.or.Spend..5.Year. : int -2000 -2000 -1500 -1500 -3500 -3500 -6750 -6750 -3500 -3500 ...
## $ Annual.Consumption.in.Barrels..FT1.: num 16.5 16.5 15.7 15.7 19.4 ...
## $ Annual.Consumption.in.Barrels..FT2.: num 0 0 0 0 0 0 0 0 0 0 ...
## $ Tailpipe.CO2..FT1. : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ Tailpipe.CO2.in.Grams.Mile..FT1. : num 444 444 423 423 523 ...
## $ Tailpipe.CO2..FT2. : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ Tailpipe.CO2.in.Grams.Mile..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Fuel.Economy.Score : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ GHG.Score : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ GHG.Score..Alt.Fuel. : int -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
## $ My.MPG.Data : chr "N" "N" "N" "N" ...
## $ X2D.Passenger.Volume : int 74 74 0 0 0 0 0 0 0 0 ...
## $ X2D.Luggage.Volume : int 7 7 0 0 0 0 0 0 0 0 ...
## $ X4D.Passenger.Volume : int 0 0 0 0 0 0 0 0 0 0 ...
## $ X4D.Luggage.Volume : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Hatchback.Passenger.Volume : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Hatchback.Luggage.Volume : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Start.Stop.Technology : chr "" "" "" "" ...
## $ Alternative.Fuel.Technology : chr "" "" "" "" ...
## $ Electric.Motor : chr "" "" "" "" ...
## $ Manufacturer.Code : chr "" "" "" "" ...
## $ Gasoline.Electricity.Blended..CD. : chr "False" "False" "False" "False" ...
## $ Vehicle.Charger : chr "" "" "" "" ...
## $ Alternate.Charger : chr "" "" "" "" ...
## $ Hours.to.Charge..120V. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Hours.to.Charge..240V. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Hours.to.Charge..AC.240V. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Composite.City.MPG : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Composite.Highway.MPG : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Composite.Combined.MPG : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Range..FT1. : int 0 0 0 0 0 0 0 0 0 0 ...
## $ City.Range..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Range..FT1. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Range..FT2. : chr "" "" "" "" ...
## $ City.Range..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Highway.Range..FT2. : num 0 0 0 0 0 0 0 0 0 0 ...
# Limpieza de datos
co2tubo <- datos$Tailpipe.CO2..FT1.
co2tubo <- as.numeric(co2tubo)
co2tubo <- co2tubo[!is.na(co2tubo) & co2tubo > 0]
Gráfica de la variable
## [1] 5.987002
## [1] 0.2693047
HistogramaLogNormal <- hist(co2tubo, freq = FALSE,
main = "Gráfica No.1: Histograma de
Tailpipe CO2 (FT1) con Curva Log-Normal",
xlab = "Tailpipe CO2 (FT1)",
ylab = "Densidad",
col = "#CDC9C9")
x <- seq(min(co2tubo), max(co2tubo), 0.01)
lines(x, dlnorm(x, meanlog = ulog, sdlog = sigmalog), col = "red", lwd = 2)
Frecuencia simple observada
## [1] 4 12 20 36 118 505 1122 1160 1127 883 428 275 202 76 46
## [16] 9 4
Frecuencia simple esperada
## [1] 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
## [1] 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850
Plog <- numeric(length(FO))
for (j in 1:length(FO)) {
Plog[j] <- plnorm(limsup[j], meanlog = ulog, sdlog = sigmalog) -
plnorm(liminf[j], meanlog = ulog, sdlog = sigmalog)
}
FElog <- Plog * length(co2tubo)
valores_validos_log <- FElog > 0
X2_log <- sum((FO[valores_validos_log] - FElog[valores_validos_log])^2 / FElog[valores_validos_log])
X2_log
## [1] 405626382680
## [1] 21.06414
## [1] FALSE
Como el valor del estadístico χ² es mucho mayor que el valor crítico, se rechaza la hipótesis de que los datos siguen una distribución log-normal.
## [1] 411.8011
## [1] 103.5849
HistogramaNormal <- hist(co2tubo, freq = FALSE,
main = "Gráfica No.2: Histograma de
Tailpipe CO2 (FT1) con Curva Normal",
xlab = "Tailpipe CO2 (FT1)",
ylab = "Densidad",
col = "#CDC9C9")
x <- seq(min(co2tubo), max(co2tubo), 0.01)
lines(x, dnorm(x, mean = u, sd = sigma), col = "red", lwd = 2)
Frecuencia simple observada
## [1] 4 12 20 36 118 505 1122 1160 1127 883 428 275 202 76 46
## [16] 9 4
Frecuencia simple esperada
liminf <- HistogramaNormal$breaks[-length(HistogramaNormal$breaks)]
limsup <- HistogramaNormal$breaks[-1]
P <- numeric(length(FO))
for (i in 1:length(FO)) {
P[i] <- pnorm(limsup[i], mean = u, sd = sigma) - pnorm(liminf[i], mean = u, sd = sigma)
}
FE <- P * length(co2tubo)
valores_validos <- FE > 0
X2_normal <- sum((FO[valores_validos] - FE[valores_validos])^2 / FE[valores_validos])
X2_normal
## [1] 476.0377
## [1] 21.06414
## [1] FALSE
Aunque este valor también supera el valor crítico, lo hace en menor magnitud que el ajuste log-normal. Por tanto, aunque ninguno de los modelos ajusta perfectamente, el modelo normal es el que mejor representa los datos de entre los evaluados.
# Definir el intervalo deseado
lim_inf <- 200
lim_sup <- 400
# Calcular la probabilidad de que una observación esté entre 200 y 400
probabilidad_normal <- pnorm(lim_sup, mean = u, sd = sigma) -
pnorm(lim_inf, mean = u, sd = sigma)
probabilidad_normal * 100 # Resultado como porcentaje
## [1] 43.42063
# Graficar la curva normal y sombrear el área correspondiente
x_vals <- seq(min(co2tubo), max(co2tubo), length.out = 1000)
plot(x_vals, dnorm(x_vals, mean = u, sd = sigma),
type = "l", lwd = 2, col = "skyblue3",
main = "Gráfica. Cálculo de Probabilidades (Normal)",
xlab = "Tailpipe CO2 (FT1)", ylab = "Densidad de probabilidad")
# Sombrear el área entre los límites definidos
x_sombreado <- seq(lim_inf, lim_sup, length.out = 1000)
y_sombreado <- dnorm(x_sombreado, mean = u, sd = sigma)
polygon(c(x_sombreado, rev(x_sombreado)),
c(y_sombreado, rep(0, length(y_sombreado))),
col = rgb(1, 0, 0, 0.5))
# Añadir leyenda
legend("topright", legend = c("Modelo Normal", "Área de Probabilidad"),
col = c("skyblue3", "red"), lwd = 2, pch = c(NA, 15))
# Tamaño de la muestra
n <- length(co2tubo)
# Error estándar de la media
error <- sigma / sqrt(n)
# Intervalo de confianza al 95%: media ± 2 * error estándar
li <- u - 2 * error
ls <- u + 2 * error
# Mostrar los valores
u # media muestral
## [1] 411.8011
## [1] 103.5849
## [1] 1.334277
## [1] 409.1325
## [1] 414.4696
La variable Tailpipe CO2 (FT1) es el que ajusta al modelo normal, con un parámetro estimado de 411.8011, y desviación estándar de 103.5849. La probabilidad de que una observación esté entre 200 y 400 unidades es de: 43.42%. Además, mediante el teorema del límite central, sabemos que la media poblacional se encuentra en el intervalo entre 409.13 y 414.46 (sin depurar y depurada) con un 95% de confianza.