Variables Aleatorias Continuas
Cargar los datos
datos <- read.csv("D:/Data/database.csv", header = TRUE, sep = ";", dec = ".")
Inferencia: Modelo de probabilidad log-normal para MPG en
ciudad
mpg_c <- as.numeric(as.character(datos$Unadjusted.City.MPG..FT1.))
## Warning: NAs introducidos por coerción
mpg_c <- na.omit(mpg_c)
mpg_c <- mpg_c[mpg_c > 0]
histograma <- hist(mpg_c, freq = FALSE,
main = "Gráfica 1. Modelo de probabilidad log-normal para MPG en ciudad",
xlab = "MPG (Ciudad)", ylab = "Densidad de probabilidad",
col = "steelblue")
log_mpg <- log(mpg_c)
ulog <- mean(log_mpg)
sigmalog <- sd(log_mpg)
x <- seq(min(mpg_c), max(mpg_c), 0.01)
curve(dlnorm(x, ulog, sigmalog), from = min(mpg_c), to = max(mpg_c), add = TRUE, lwd = 3, col = "darkgreen")

Fo <- histograma$counts
h <- length(Fo)
P <- c()
for (i in 1:h) {
P[i] <- plnorm(histograma$breaks[i+1], ulog, sigmalog) - plnorm(histograma$breaks[i], ulog, sigmalog)
}
Fe <- P * length(mpg_c)
Test de bondad de ajuste (MPG log-normal)
plot(Fo, Fe, main = "Gráfica 2: Correlación entre frecuencias observadas y esperadas",
xlab = "Frecuencia Observada", ylab = "Frecuencia Esperada", col = "blue3")
abline(lm(Fe ~ Fo), col = "red", lwd = 2)

correlacion <- cor(Fo, Fe) * 100
n <- length(mpg_c)
Fo_rel <- (Fo / n) * 100
Fe_rel <- P * 100
x2 <- sum((Fe_rel - Fo_rel)^2 / Fe_rel)
alpha <- 0.05
gl <- h - 1
umbral <- qchisq(1 - alpha, gl)
Variable <- c("MPG en ciudad")
tabla_resumen <- data.frame(Variable, round(correlacion, 2), round(x2, 2), round(umbral, 2))
colnames(tabla_resumen) <- c("Variable", "Test Pearson (%)", "Chi Cuadrado", "Umbral de aceptación")
kable(tabla_resumen, format = "markdown", caption = "Tabla. Test de bondad de ajuste para modelo log-normal")
Tabla. Test de bondad de ajuste para modelo
log-normal
MPG en ciudad |
89.95 |
63.44 |
27.59 |
Cálculo de probabilidad (20 < X < 40)
probabilidad_intervalo <- plnorm(40, ulog, sigmalog) - plnorm(20, ulog, sigmalog)
probabilidad_intervalo * 100
## [1] 22.31567
x <- seq(0, 100, by = 0.01)
y <- dlnorm(x, ulog, sigmalog)
plot(x, y, type = "l", col = "darkgreen", lwd = 2,
main = "Gráfica 3. Cálculo de probabilidades", xlab = "MPG", ylab = "Densidad")
x_fill <- seq(20, 40, by = 0.01)
y_fill <- dlnorm(x_fill, ulog, sigmalog)
polygon(c(x_fill, rev(x_fill)), c(y_fill, rep(0, length(y_fill))), col = rgb(1, 0, 0, 0.4))
legend("topright", legend = c("Modelo Log-normal", "Área entre 20 y 40 MPG"),
col = c("darkgreen", "red"), lwd = 2, pch = c(NA, 15))

Conclusión MPG
La variable de MPG en ciudad se explica con un modelo de probabilidad
log-normal de media 88.56 y una desviación estándar de 104.42; donde la
media aritmética poblacional se encuentra entre 87.45 y 89.67, lo que
afirmamos con un 95% de confianza.
Inferencia: Modelo de probabilidad normal para Costo Anual de
Combustible
c_anual <- as.numeric(as.character(datos$Annual.Fuel.Cost..FT1.))
c_anual <- na.omit(c_anual)
c_anual <- c_anual[c_anual > 0]
histograma_c <- hist(c_anual, freq = FALSE,
main = "Gráfica 4. Modelo de probabilidad normal para Costo Anual",
xlab = "Costo Anual", ylab = "Densidad de probabilidad",
col = "steelblue",
yaxt = "n")
axis(2, at = pretty(density(c_anual)$y), labels = format(pretty(density(c_anual)$y), scientific = FALSE))
mu <- mean(c_anual)
sigma <- sd(c_anual)
x_c <- seq(min(c_anual), max(c_anual), 1)
y_c <- dnorm(x_c, mu, sigma)
lines(x_c, y_c, col = "darkgreen", lwd = 3)

Fo_c <- histograma_c$counts
h_c <- length(Fo_c)
P_c <- c()
for (i in 1:h_c) {
P_c[i] <- pnorm(histograma_c$breaks[i+1], mu, sigma) - pnorm(histograma_c$breaks[i], mu, sigma)
}
Fe_c <- P_c * length(c_anual)
Test de bondad de ajuste (Costo Anual)
plot(Fo_c, Fe_c, main = "Gráfica 5: Correlación entre frecuencias observadas y esperadas",
xlab = "Frecuencia Observada", ylab = "Frecuencia Esperada", col = "blue3")
abline(lm(Fe_c ~ Fo_c), col = "red", lwd = 2)

correlacion_c <- cor(Fo_c, Fe_c) * 100
n_c <- length(c_anual)
x2_c <- sum((Fe_c - Fo_c)^2 / Fe_c)
umbral_c <- qchisq(1 - alpha, h_c - 1)
Variable <- c("Costo Anual")
tabla_resumen_c <- data.frame(Variable, round(correlacion_c, 2), round(x2_c, 2), round(umbral_c, 2))
colnames(tabla_resumen_c) <- c("Variable", "Test Pearson (%)", "Chi Cuadrado", "Umbral de aceptación")
kable(tabla_resumen_c, format = "markdown", caption = "Tabla. Test de bondad de ajuste para modelo normal")
Tabla. Test de bondad de ajuste para modelo normal
Costo Anual |
98.19 |
38203063488 |
19.68 |
Probabilidad entre 1500 y 2500 (Costo Anual)
probabilidad_c <- pnorm(2500, mu, sigma) - pnorm(1500, mu, sigma)
probabilidad_c * 100
## [1] 64.98101
x_c <- seq(min(c_anual), max(c_anual), 1)
y_c <- dnorm(x_c, mu, sigma)
plot(x_c, y_c, type = "l", col = "darkgreen", lwd = 2,
main = "Gráfica 6. Cálculo de probabilidades", xlab = "Costo Anual", ylab = "Densidad")
x_fill_c <- seq(1500, 2500, by = 1)
y_fill_c <- dnorm(x_fill_c, mu, sigma)
polygon(c(x_fill_c, rev(x_fill_c)), c(y_fill_c, rep(0, length(y_fill_c))), col = rgb(1, 0, 0, 0.4))
legend("topright", legend = c("Modelo Normal", "Área entre 1500 y 2500"),
col = c("darkgreen", "red"), lwd = 2, pch = c(NA, 15))

Conclusión Costo Anual
La variable de costo anual de combustible se explica con un modelo de
probabilidad de distribución normal de media 1949.10 y una desviación
estándar de 533.63; donde la media aritmética poblacional se encuentra
entre 1953 y 1964, lo que afirmamos con un 95% de confianza.