UNIVERSIDAD CENTRAL DEL ECUADOR

PROYECTO: FOCOS DE CALOR EN EL ECUADOR

AUTORES: GUERRERO MARIA GABRIELA, PUCHAICELA MONICA, ZURITA JOHANNA

FECHA: 14/05/2025

# Configuración
knitr::opts_chunk$set(echo = TRUE)
# importar datos
datos <- read.csv("Focos de Calor 2021.csv",
                  header = T, sep = ",", dec = ".")

#Estructura de los datos 
str(datos)
## 'data.frame':    22476 obs. of  12 variables:
##  $ ACQ_DATE  : chr  "20/11/2021" "20/11/2021" "06/08/2021" "10/06/2021" ...
##  $ DPA_DESPRO: chr  "ZAMORA CHINCHIPE" "ZAMORA CHINCHIPE" "ZAMORA CHINCHIPE" "ZAMORA CHINCHIPE" ...
##  $ DPA_DESCAN: chr  "CHINCHIPE" "CHINCHIPE" "CHINCHIPE" "CHINCHIPE" ...
##  $ DPA_DESPAR: chr  "CHITO" "CHITO" "PUCAPAMBA" "PUCAPAMBA" ...
##  $ LATITUDE  : num  -4.98e+15 -4.97e+15 -4.96e+15 -4.96e+15 -4.96e+15 ...
##  $ LONGITUDE : num  -7.90e+16 -7.90e+16 -7.91e+16 -7.91e+16 -7.92e+16 ...
##  $ BRIGHTNESS: num  3.55e+17 3.42e+17 3.32e+17 3.31e+17 3.28e+17 ...
##  $ SCAN      : num  5.1e+14 5.1e+14 1.5e+14 5.4e+14 5.0e+14 ...
##  $ TRACK     : num  4.9e+14 4.9e+14 3.8e+14 4.2e+14 4.9e+14 ...
##  $ INSTRUMENT: chr  "VIIRS" "VIIRS" "VIIRS" "VIIRS" ...
##  $ VERSION   : chr  "2.0NRT" "2.0NRT" "2.0NRT" "2.0NRT" ...
##  $ FRP       : num  1.21e+16 6.87e+15 3.77e+15 5.50e+15 2.90e+15 ...
# Leer CSV
datos <- read.csv("Focos de Calor 2021.csv", header=TRUE, sep=",", dec=".")

# Extraer y limpiar variable Latitud
Latitud <- as.numeric(as.character(datos$LATITUDE))
Latitud <- na.omit(Latitud)

# Transformar latitud a grados decimales normales
Latitud <- Latitud / 1e15  # como vimos en tus ejemplos: -498000000000000000 → -4.98°

# Asegurar que se muestre con decimales en lugar de notación científica
options(scipen=999)
Latitud <- round(Latitud, 4)

# Información básica
n <- length(Latitud)
cat("Tamaño muestral:", n, "\n")
## Tamaño muestral: 22476
# Histograma
histograma <- hist(Latitud, freq=FALSE,
                   main="Gráfica Nro 11.8: Histograma de Latitud de los Focos de Calor",
                   xlab="Latitud (°)", ylab="Densidad de probabilidad", col="yellow")

limites_barras <- histograma$breaks
print(limites_barras)
##  [1] -5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5  0.0  0.5  1.0  1.5
# Agrupación en 5 intervalos
HistoLat <- hist(Latitud, breaks=5, freq=FALSE,
                 main="Gráfica Nro 11.9: Modelo de probabilidad normal de Latitud",
                 xlab="Latitud (°)", ylab="Densidad de probabilidad", col="yellow")
h <- length(HistoLat$counts)
# Media y desviación estándar
u <- mean(Latitud)
sigma <- sd(Latitud)

# Generar secuencia de x para curva normal
x <- seq(min(Latitud), max(Latitud), length.out=1000)

# Dibujar curva normal sobre histograma
curve(dnorm(x, u, sigma), add=TRUE, lwd=4, col="blue3")

# Test de Pearson
Fo <- HistoLat$counts
P <- sapply(1:h, function(i) pnorm(HistoLat$breaks[i+1], u, sigma) - pnorm(HistoLat$breaks[i], u, sigma))
Fe <- P * n
plot(Fo, Fe, main="Gráfica Nro 11.10: Correlación de frecuencias en el modelo normal",
     xlab="Frecuencia Observada", ylab="Frecuencia Esperada", col="blue3")
abline(lm(Fe ~ Fo), col="red", lwd=2)

Correlacion <- cor(Fo, Fe)*100
cat("Test de Pearson (correlación %):", round(Correlacion,2), "\n")
## Test de Pearson (correlación %): 92.72
# Test Chi-Cuadrado
Fo_porc <- (Fo/n)*100
Fe_porc <- P*100
x2 <- sum((Fe_porc-Fo_porc)^2/Fe_porc)
gl <- length(Fo)-1
umbral <- qchisq(1-0.05, gl)
cat("Chi-cuadrado:", round(x2,2), "- Umbral:", round(umbral,2), "- Aceptado:", x2<umbral, "\n")
## Chi-cuadrado: 30.06 - Umbral: 12.59 - Aceptado: FALSE
# Ejemplo de probabilidad entre dos latitudes
# Aquí puedes ajustar el intervalo según tu interés, por ejemplo entre -5° y -4°
probabilidad <- pnorm(-4, u, sigma) - pnorm(-5, u, sigma)
cat("Probabilidad entre -5° y -4°:", round(probabilidad*100,2), "%\n")
## Probabilidad entre -5° y -4°: 1.66 %
# Gráfica de cálculo de probabilidad
plot(x, dnorm(x, u, sigma), col="skyblue3", lwd=1,
     main="Gráfica Nro 11.11: Cálculo de probabilidades", ylab="Densidad", xlab="Latitud (°)")
x_section <- seq(-5, -4, length.out=500)
y_section <- dnorm(x_section, u, sigma)
lines(x_section, y_section, col="red", lwd=2)
polygon(c(x_section, rev(x_section)), c(y_section, rep(0,length(y_section))),
        col=rgb(1,0,0,0.6))
legend("topright", c("Modelo", "Área de probabilidad"), col=c("skyblue3","red"), lwd=1, pch=c(NA,15), cex=0.6)

# Intervalo de confianza para la media
e <- sigma/sqrt(n)
li <- u - 2*e
ls <- u + 2*e
tabla_media <- data.frame("Límite inferior"=round(li,4),
                          "Media poblacional"=round(u,4),
                          "Límite superior"=round(ls,4),
                          "Error estándar"=round(e,4))
library(knitr)
kable(tabla_media, format="markdown", caption="Tabla 11.1: Intervalo de confianza para la media poblacional de latitud")
Tabla 11.1: Intervalo de confianza para la media poblacional de latitud
Límite.inferior Media.poblacional Límite.superior Error.estándar
-1.6925 -1.6777 -1.6629 0.0074
# Tabla resumen de tests
tabla_resumen <- data.frame(
  Variable="Latitud (°)",
  Test_Pearson=round(Correlacion,2),
  Chi_Cuadrado=round(x2,2),
  Umbral_aceptacion=round(umbral,2)
)
kable(tabla_resumen, format="markdown", caption="Tabla: Resumen de tests de bondad al modelo normal")
Tabla: Resumen de tests de bondad al modelo normal
Variable Test_Pearson Chi_Cuadrado Umbral_aceptacion
Latitud (°) 92.72 30.06 12.59