Distribución Lognormal

UNIVERSIDAD CENTRAL DEL ECUADOR

PROYECTO: FOCOS DE CALOR EN EL ECUADOR

AUTORES: GUERRERO MARIA GABRIELA,PUCHAICELA MONICA, ZURITA JOHANNA

FECHA: 14/05/2025

datos <- read.csv("maate_focosdecalor_bdd_2021diciembre.csv",
                  header = TRUE, sep = ",", dec = ",")

# Filtrar valores positivos para SCAN
VarLog <- datos$SCAN
VarLog <- VarLog[VarLog > 0]

# Crear histograma con 4 intervalos (5 puntos de corte)
HistoLog <- hist(VarLog, breaks = seq(min(VarLog), max(VarLog), length.out = 5),
                 freq = FALSE,
                 main = "Gráfica: Modelo Log-normal para SCAN",
                 xlab = "Valor", ylab = "Densidad",
                 col = "lightgreen")

# Parámetros logarítmicos (media y sd)
log_mu <- mean(log(VarLog))
log_sigma <- sd(log(VarLog))

# Añadir curva log-normal (línea roja)
curve(dlnorm(x, meanlog = log_mu, sdlog = log_sigma),
      add = TRUE, col = "red", lwd = 2)

# Frecuencias observadas (conteos por clase)
Fo <- HistoLog$counts
# Número de clases
h <- length(Fo)

# Probabilidades teóricas en cada clase (intervalo)
P <- sapply(1:h, function(i) {
  pl <- plnorm(HistoLog$breaks[i], meanlog = log_mu, sdlog = log_sigma)
  pu <- plnorm(HistoLog$breaks[i + 1], meanlog = log_mu, sdlog = log_sigma)
  pu - pl
})

# Frecuencias esperadas (número de datos multiplicado por probabilidad teórica)
Fe <- P * length(VarLog)

# Correlación Pearson entre frecuencias observadas y esperadas (en conteos)
Correlación <- cor(Fo, Fe) * 100

# Gráfico Pearson Observado vs Esperado
plot(Fo, Fe,
     main = "Gráfica: Pearson entre Frecuencia Observada y Esperada (Log-normal)",
     xlab = "Fo", ylab = "Fe", col = "blue3")
abline(lm(Fe ~ Fo), col = "red", lwd = 2)

# Test Chi-Cuadrado
# Para el test, se deben usar frecuencias absolutas (Fo, Fe), no porcentajes
x2 <- sum((Fo - Fe)^2 / Fe)

# Cálculo de grados de libertad:
# Número de clases - número de parámetros estimados (media y sd) - 1
k <- 2
gl <- h - k - 1

# Umbral para nivel confianza 95%
umbral <- qchisq(0.95, df = gl)

# Resultado test
cat("Chi-cuadrado calculado:", round(x2, 2), "\n")
## Chi-cuadrado calculado: 549.18
cat("Umbral (95%):", round(umbral, 2), "\n")
## Umbral (95%): 3.84
cat("¿Se acepta la hipótesis nula?:", x2 < umbral, "\n")
## ¿Se acepta la hipótesis nula?: FALSE
# Tabla resumen
Variable <- "SCAN"
tabla_resumen <- data.frame(
  Variable,
  `Test Pearson (%)` = round(Correlación, 2),
  `Chi Cuadrado` = round(x2, 2),
  `Umbral de aceptación` = round(umbral, 2)
)

library(knitr)
kable(tabla_resumen, format = "markdown", caption = "Resumen del test de bondad al modelo Log-normal")
Resumen del test de bondad al modelo Log-normal
Variable Test.Pearson…. Chi.Cuadrado Umbral.de.aceptación
SCAN 99.54 549.18 3.84
# Cálculo de intervalo de confianza para la media logarítmica
log_values <- log(VarLog)
log_mu <- mean(log_values)
log_sigma <- sd(log_values)
n <- length(log_values)
e <- log_sigma / sqrt(n)
li <- log_mu - 2 * e
ls <- log_mu + 2 * e

# Tabla intervalo de confianza
tabla_media <- data.frame(
  `Límite inferior` = round(li, 4),
  `Media logarítmica` = round(log_mu, 4),
  `Límite superior` = round(ls, 4),
  `Error estándar` = round(e, 4)
)

kable(tabla_media, format = "markdown", caption = "Intervalo de confianza para la media logarítmica (95%)")
Intervalo de confianza para la media logarítmica (95%)
Límite.inferior Media.logarítmica Límite.superior Error.estándar
-0.8302 -0.8273 -0.8245 0.0014
# Visualización de la curva y probabilidad entre a y b
a <- 0.5
b <- 1.5
x <- seq(min(VarLog), max(VarLog), length.out = 1000)

plot(x, dlnorm(x, meanlog = log_mu, sdlog = log_sigma), type = "l",
     col = "skyblue3", lwd = 2,
     main = paste("Densidad log-normal y área entre", a, "y", b),
     xlab = "SCAN", ylab = "Densidad de probabilidad")

x_section <- seq(a, b, length.out = 500)
y_section <- dlnorm(x_section, meanlog = log_mu, sdlog = log_sigma)

polygon(c(x_section, rev(x_section)),
        c(y_section, rep(0, length(y_section))),
        col = rgb(1, 0, 0, 0.5), border = NA)

lines(x_section, y_section, col = "red", lwd = 2)

# Probabilidad entre a y b
probabilidad <- plnorm(b, meanlog = log_mu, sdlog = log_sigma) -
  plnorm(a, meanlog = log_mu, sdlog = log_sigma)

cat(sprintf("Probabilidad entre %.2f y %.2f: %.4f (%.2f%%)\n",
            a, b, probabilidad, probabilidad * 100))
## Probabilidad entre 0.50 y 1.50: 0.2650 (26.50%)
#CONCLUSIÓN

##La variable SCAN sigue un modelo de probabilidad log-normal, 
##aprobando el test de Pearson con un 99.54% de correlación entre frecuencias observadas y esperadas, 
##y el test Chi-cuadrado con un valor de 549.18, 
##superior al umbral de aceptación de 3.84 para un nivel de confianza del 95%.
##La probabilidad de que SCAN tome valores entre 0.5 y 1.5 es aproximadamente del 26.50%.
##La media logarítmica poblacional de SCAN se encuentra entre -0.830 y 
##-0.8245 con un nivel de confianza del 95%.