# 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
| 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
| Límite Inferior |
95% |
6009405 |
| Límite Superior |
|
6022061 |