# UNIVERSIDAD CENTRAL DEL ECUADOR
# Facultad de Ingeniería en Geología, Minas, Petróleos y Ambiental
# Ingeniería Ambiental
# Autor: Domenica Yepez
# Variable: continua Latitud 

# Cargar librerías
library(readr)
library(knitr)

# Directorio de trabajo
setwd("C:/Users/HP/OneDrive - Universidad Central del Ecuador/SEMESTRE III/Estadistica/Incendios en Chile/Datos")

# Extraer datos
datos <- read_csv("coordenadas_convertidas_3857.csv")
## Rows: 5234 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (4): long, lat, X_3857, Y_3857
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
latitud <- na.omit(datos$lat)

# Configuración general
options(scipen = 999)

# Gráfico título inicial
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1, 
     labels = "ESTADÍSTICA INFERENCIAL", cex = 2, col = "blue", font = 6)

Histograma <- hist(latitud, freq = FALSE, breaks = 6,
                   main = "Gráfica N°5: Distribución de latitud en incendios en Chile",
                   ylab = "Densidad de probabilidad",
                   xlab = "Latitud",
                   col = "skyblue")
# Calculo de Parametros 
U <- mean(latitud)
sigma <- sd(latitud)
x <- seq(min(latitud), max(latitud), 0.1)
curve(dnorm(x, U, sigma), type = "l", col = "blue", add = TRUE)

FO <- Histograma$counts / length(latitud)
FE <- sapply(1:(length(Histograma$breaks) - 1), function(i) {
  pnorm(Histograma$breaks[i + 1], U, sigma) - pnorm(Histograma$breaks[i], U, sigma)
})

cor(FO, FE)  # Test de Pearson
## [1] 0.9866751
X2 <- sum((FO - FE)^2 / FE)
chi <- qchisq(0.99, length(Histograma$breaks) - 1)
X2 > chi      # Test de Chi-cuadrado
## [1] TRUE
latitud_filtro <- latitud[latitud >= 5500000 & latitud <= 6500000]
Histograma3 <- hist(latitud_filtro, freq = FALSE, breaks = 6,
                    main = "Gráfica N°5.1: Distibucion de Latitud (°)",
                    ylab = "Densidad de probabilidad",
                    xlab = "Latitud (°)",
                    col = "skyblue")

U3 <- mean(latitud_filtro)
sigma3 <- sd(latitud_filtro)
x <- seq(min(latitud_filtro), max(latitud_filtro), length.out = 100)
curve(dnorm(x, U3, sigma3), col = "red", lwd = 2, add = TRUE)

FO3 <- Histograma3$counts / length(latitud_filtro)
FE3 <- sapply(1:(length(Histograma3$breaks) - 1), function(i) {
  pnorm(Histograma3$breaks[i + 1], U3, sigma3) - pnorm(Histograma3$breaks[i], U3, sigma3)
})

plot(FO3, FE3, main="Gráfica N°5.2: Correlación de frecuencias entre el modelo normal
     y la realidad",
     xlab="Observado (hi)", ylab="Esperado (P)")
abline(lm(FE3 ~ FO3), col="red", lwd=2)

cor(FO3, FE3)
## [1] 0.7286084
X2_3 <- sum((FO3 - FE3)^2 / FE3)
chi_3 <- qchisq(0.99, df = length(Histograma3$breaks) - 1)
X2_3 > chi_3
## [1] FALSE
P1 <- (pnorm(6200000, U3, sigma3) - pnorm(5800000, U3, sigma3)) * 100
P1
## [1] 62.77081
# Mensaje de probabilidad
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1, 
     labels = paste("Cálculo de Probabilidad\n\n¿Probabilidad de que latitud esté entre\n5800000 y 6200000?\n\nR:", round(P1, 2), "%"),
     cex = 1.5, col = "blue", font = 6)

x_fill <- seq(min(latitud_filtro), max(latitud_filtro), length.out = 1000)
y_fill <- dnorm(x_fill, mean = U3, sd = sigma3)

plot(x_fill, y_fill, type = "l", col = "red", lwd = 2,
     main = "Gráfica N°5.3: Distribución Normal de la latitud",
     xlab = "Latitud (°)", ylab = "Densidad de probabilidad",
     ylim = c(0, max(y_fill) * 1.1), xaxt = "n")

axis(1, at = c(5400000, 5800000, 6000000, 6200000, 6600000),
     labels = c("5400000", "5800000", "6000000", "6200000", "6600000"))

# Área sombreada
x_area <- seq(5800000, 6200000, length.out = 500)
y_area <- dnorm(x_area, mean = U3, sd = sigma3)
polygon(c(5800000, x_area, 6200000), c(0, y_area, 0),
        col = rgb(0.1, 0.1, 0.9, 0.3), border = NA)

legend("topright",
       legend = c("Distribución Normal", "Área bajo la curva"),
       col = c("red", rgb(0.1, 0.1, 0.9, 0.3)),
       lty = c(1, NA), pch = c(NA, 15), pt.cex = 2, bty = "n")

limite_inf <- mean(latitud_filtro) - 2 * (sd(latitud_filtro) / sqrt(length(latitud_filtro)))
limite_inf
## [1] 6009405
limite_sup <- mean(latitud_filtro) + 2 * (sd(latitud_filtro) / sqrt(length(latitud_filtro)))
limite_sup
## [1] 6022061
dominio_M<- range(latitud_filtro )
dominio_V<- range(latitud)

tabla_modelos_1 <- data.frame(
  "latitud" = c("x ∈ [3981678, 7952097]", ""),
  "Modelo" = c("Normal", ""),
  "Parámetros" = c("sigma = 223614.1", "U = 6015733"),
  "Test Pearson" = c("72.86084", ""),
  "Test Chi-cuadrado" = c("Aprobado", ""),
  "Dominio del Modelo" = c(" x ∈ [5508511 ,6496680]", "")
)

tabla_intervalos <- data.frame(
  "Intervalo de Confianza" = c("Límite Inferior", "Límite Superior"),
  "Grado Confianza (%)" = c("95%", ""),
  "latitud" = round(c(limite_inf, limite_sup), 2)
)
plot(1, type = "n", axes = FALSE, xlab = "", ylab = "")
text(x = 1, y = 1, 
     labels = "CONCLUSIONES",
     cex = 2, col = "blue", font = 6)

kable(tabla_modelos_1, align = 'c', caption = "Conclusiones del Modelo Normal para latitud")
Conclusiones del Modelo Normal para latitud
latitud Modelo Parámetros Test.Pearson Test.Chi.cuadrado Dominio.del.Modelo
x ∈ [3981678, 7952097] Normal sigma = 223614.1 72.86084 Aprobado x ∈ [5508511 ,6496680]
U = 6015733
kable(tabla_intervalos, align = 'c', caption = "Intervalos de Confianza de la Media Poblacional")
Intervalos de Confianza de la Media Poblacional
Intervalo.de.Confianza Grado.Confianza…. latitud
Límite Inferior 95% 6009405
Límite Superior 6022061