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 Longitud
Longitud <- as.numeric(as.character(datos$LONGITUDE))
Longitud <- na.omit(Longitud)

# Transformar longitud a grados decimales normales
# Tu ejemplo indicaba que los valores venían como -79000000000000000 y querías que eso sea -79°
# Para eso, dividimos por 1e15
Longitud <- Longitud / 1e15  

# Asegurar que se muestre con decimales en lugar de notación científica
options(scipen=999)  # Desactiva notación científica
Longitud <- round(Longitud, 4)  # Redondear para mejor presentación

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

limites_barras <- histograma$breaks
print(limites_barras)
##  [1] -81.0 -80.5 -80.0 -79.5 -79.0 -78.5 -78.0 -77.5 -77.0 -76.5 -76.0 -75.5
## [13] -75.0
# Agrupación en 5 intervalos
HistoLong <- hist(Longitud, breaks=5, freq=FALSE,
                  main="Gráfica Nro 12.9: Modelo de probabilidad normal de Longitud",
                  xlab="Longitud (°)", ylab="Densidad de probabilidad", col="skyblue")
h <- length(HistoLong$counts)
# Media y desviación estándar
u <- mean(Longitud)
sigma <- sd(Longitud)

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

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

# Test de Pearson
Fo <- HistoLong$counts
P <- sapply(1:h, function(i) pnorm(HistoLong$breaks[i+1], u, sigma) - pnorm(HistoLong$breaks[i], u, sigma))
Fe <- P * n
plot(Fo, Fe, main="Gráfica Nro 12.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 %): 82.47
# 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: 39.22 - Umbral: 11.07 - Aceptado: FALSE
# Probabilidad entre -79° y -78°
probabilidad <- pnorm(-78, u, sigma) - pnorm(-79, u, sigma)
cat("Probabilidad entre -79° y -78°:", round(probabilidad*100,2), "%\n")
## Probabilidad entre -79° y -78°: 25.03 %
# Gráfica de cálculo de probabilidad
plot(x, dnorm(x, u, sigma), col="skyblue3", lwd=1,
     main="Gráfica 12.11: Cálculo de probabilidades", ylab="Densidad", xlab="Longitud (°)")
x_section <- seq(-79, -78, 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: Intervalo de confianza para la media poblacional de longitud")
Tabla: Intervalo de confianza para la media poblacional de longitud
Límite.inferior Media.poblacional Límite.superior Error.estándar
-79.4603 -79.446 -79.4318 0.0071
# Tabla resumen de tests
tabla_resumen <- data.frame(
  Variable="Longitud (°)",
  Test_Pearson=round(Correlacion,2),
  Chi_Cuadrado=round(x2,2),
  Umbral_aceptacion=round(umbral,2)
)
kable(tabla_resumen, format="markdown", caption="Tabla Nro 12.1: Resumen de tests de bondad al modelo normal")
Tabla Nro 12.1: Resumen de tests de bondad al modelo normal
Variable Test_Pearson Chi_Cuadrado Umbral_aceptacion
Longitud (°) 82.47 39.22 11.07