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 ...
Fecha <- datos$ACQ_DATE
# Convertir fechas a formato Date
datos$Fecha <- as.Date(datos$ACQ_DATE, format = "%d/%m/%Y")

# Extraer el día en formato numérico
dias <- as.numeric(format(datos$Fecha, "%d"))

# Crear tabla de frecuencias de días
TDFDia <- as.data.frame(table(dias))

# Renombrar columnas para mejor claridad
colnames(TDFDia) <- c("Dia", "ni_dia")

# Calcular frecuencia relativa (hi) en porcentaje
TDFDia$hi_dia <- (TDFDia$ni_dia / sum(TDFDia$ni_dia)) * 100

# Mostrar el dataframe final
print(TDFDia)
##    Dia ni_dia    hi_dia
## 1    1    458  2.037729
## 2    2    336  1.494928
## 3    3    981  4.364656
## 4    4    443  1.970991
## 5    5    524  2.331376
## 6    6    844  3.755117
## 7    7    756  3.363588
## 8    8   1101  4.898558
## 9    9    521  2.318028
## 10  10    378  1.681794
## 11  11    449  1.997686
## 12  12    554  2.464851
## 13  13    317  1.410393
## 14  14    579  2.576081
## 15  15    296  1.316960
## 16  16   2650 11.790354
## 17  17    735  3.270155
## 18  18    249  1.107848
## 19  19    741  3.296850
## 20  20   1515  6.740523
## 21  21    829  3.688379
## 22  22    383  1.704040
## 23  23   1142  5.080975
## 24  24    619  2.754049
## 25  25    498  2.215697
## 26  26    249  1.107848
## 27  27    430  1.913152
## 28  28   1305  5.806193
## 29  29    760  3.381385
## 30  30   1316  5.855134
## 31  31    518  2.304681
# Graficar barplot con días en el eje X
barplot(TDFDia$ni, 
        main="Gráfica Nro 10.8: Frecuencia de los Días de los Sismos del focos de calor en Ecuador", 
        xlab="Día", ylab="Cantidad", 
        names.arg = TDFDia$Dia, 
        las=2, 
        col = "pink")

# Agrupar solo días del 1 al 10
TDFDia1_10 <- subset(TDFDia, as.numeric(as.character(Dia)) >= 1 & as.numeric(as.character(Dia)) <= 10)

# Calcular frecuencias relativas para el grupo 1-10
hi1 <- TDFDia1_10$ni_dia / sum(TDFDia1_10$ni_dia)
print(hi1)
##  [1] 0.07221697 0.05298013 0.15468307 0.06985178 0.08262378 0.13308105
##  [7] 0.11920530 0.17360454 0.08215074 0.05960265
barplot(hi1 * 100, 
        main = "Gráfica N°10.9: Distribución de Probabilidad de Día (1-10)", 
        xlab = "Día",
        ylab = "Probabilidad (%)",
        names.arg = TDFDia1_10$Dia, 
        col = "pink")

dias_numericos <- as.numeric(as.character(TDFDia1_10$Dia))

# Calcular lambda1 (media ponderada)
lambda1 <- sum(dias_numericos * TDFDia1_10$ni_dia) / sum(TDFDia1_10$ni_dia)

print(lambda1)
## [1] 5.691895
#Calculamos las probabilidades teóricas usando la distribución de Poisson

dias_numericos <- as.numeric(as.character(TDFDia1_10$Dia))
P1 <- dpois(dias_numericos, lambda1)
print(P1)
##  [1] 0.01919987 0.05464181 0.10367182 0.14752229 0.16793629 0.15931263
##  [7] 0.12954154 0.09216711 0.05828951 0.03317778
barplot(rbind(hi1 * 100, P1 * 100),  
        main = "Gráfica N°10.10: Modelo de probabilidad Poisson para Días 1-10", 
        xlab = "Día",
        ylab = "Probabilidad (%)",
        names.arg = TDFDia1_10$Dia, 
        beside = TRUE, 
        col = c("pink", "red"))

legend("topright", legend = c("Real", "Modelo"),
       fill = c("pink", "red"))

Fo1<-hi1
Fo1
##  [1] 0.07221697 0.05298013 0.15468307 0.06985178 0.08262378 0.13308105
##  [7] 0.11920530 0.17360454 0.08215074 0.05960265
Fe1<-P1
Fe1
##  [1] 0.01919987 0.05464181 0.10367182 0.14752229 0.16793629 0.15931263
##  [7] 0.12954154 0.09216711 0.05828951 0.03317778
#correlacion

Correlación1<-cor(Fo1,Fe1)*100 
plot(Fo1,Fe1, main="Gráfica N°10.11:  Correlación de frecuencias en el modelo Poison 
                 de los dias de los Focos de calor en ecuador",
     xlab="Observado (hi)", ylab="Esperado (P)")

abline(lm(Fe1 ~ Fo1), col="red",lwd=2)

x2<-sum(((Fo1-Fe1)^2)/Fe1)
x2
## [1] 0.3636956
vc<-qchisq(0.95,9) 
vc 
## [1] 16.91898
x2 >vc
## [1] FALSE
#Tabla resumen de test
Variable <- c("Día")
tabla_resumen <- data.frame(
  Variable,
  round(Correlación1, 0), 
  round(x2, 2),            
  round(vc, 2)             
)

colnames(tabla_resumen) <- c("Variable", "Test Pearson (%)", "Chi Cuadrado", "Umbral de aceptación")

library(knitr)
kable(tabla_resumen, format = "markdown", caption = "Tabla Nº10.1: Resumen de test de bondad al modelo de probabilidad")
Tabla Nº10.1: Resumen de test de bondad al modelo de probabilidad
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Día 36 0.36 16.92
 # calculo de probabilidad 
n1 <- sum(TDFDia1_10$ni_dia)
print(n1)
## [1] 6342
#¿De los 6342 focos de calor entre el dia 1 y 10, cuál es la probabilidad de que un foco de calor ocurra en el dia 7?

probabilidad_7 <- dpois(7, lambda1) * 100
cat("La probabilidad de que un foco de calor ocurra en el día 7 es aproximadamente:",
    round(probabilidad_7, 2), "%\n")
## La probabilidad de que un foco de calor ocurra en el día 7 es aproximadamente: 12.95 %
# Agrupar solo días del 11 al 20
TDFDia11_20 <- subset(TDFDia, as.numeric(as.character(Dia)) >= 11 & as.numeric(as.character(Dia)) <= 20)

# Calcular frecuencias relativas para el grupo 11-20
hi2 <- TDFDia11_20$ni_dia / sum(TDFDia11_20$ni_dia)
print(hi2)
##  [1] 0.05553494 0.06852195 0.03920841 0.07161410 0.03661101 0.32776747
##  [7] 0.09090909 0.03079777 0.09165121 0.18738404
# Gráfico de barras para días 11-20
barplot(hi2 * 100, 
        main = "Gráfica N°10.12: Distribución de Probabilidad de Día (11-20)", 
        xlab = "Día",
        ylab = "Probabilidad (%)",
        names.arg = TDFDia11_20$Dia, 
        col = "lightblue")

# Extraer días numéricos
dias_numericos_11_20 <- as.numeric(as.character(TDFDia11_20$Dia))

# Calcular lambda para días 11-20 (media ponderada)
lambda2 <- sum(dias_numericos_11_20 * TDFDia11_20$ni_dia) / sum(TDFDia11_20$ni_dia)
print(lambda2)
## [1] 16.32777
# Probabilidades teóricas usando distribución Poisson
P2 <- dpois(dias_numericos_11_20, lambda2)
print(P2)
##  [1] 0.04466629 0.06077506 0.07633239 0.08902411 0.09690433 0.09888946
##  [7] 0.09497906 0.08615534 0.07403812 0.06044386
# Comparar observados vs modelo Poisson
barplot(rbind(hi2 * 100, P2 * 100),  
        main = "Gráfica N°10.13: Modelo de probabilidad Poisson para Días 11-20", 
        xlab = "Día",
        ylab = "Probabilidad (%)",
        names.arg = TDFDia11_20$Dia, 
        beside = TRUE, 
        col = c("lightblue", "darkblue"))

legend("topright", legend = c("Real", "Modelo"),
       fill = c("lightblue", "darkblue"))

# Valores observados y esperados
Fo2 <- hi2
Fe2 <- P2

# Correlación entre observados y esperados
Correlación2 <- cor(Fo2, Fe2) * 100
plot(Fo2, Fe2, main = "Gráfica N°10.14:Correlación de frecuencias en modelo Poisson \n para días 11-20",
     xlab = "Observado (hi)", ylab = "Esperado (P)")
abline(lm(Fe2 ~ Fo2), col = "red", lwd = 2)

# Cálculo Chi-cuadrado
x2_2 <- sum(((Fo2 - Fe2)^2) / Fe2)
print(x2_2)
## [1] 0.8988653
# Valor crítico Chi-cuadrado para 95% y grados de libertad = 9 (10 días -1)
vc2 <- qchisq(0.95, 9)
print(vc2)
## [1] 16.91898
# Comparar si x2 es mayor que el valor crítico
x2_2 > vc2
## [1] FALSE
# Tabla resumen de test
Variable <- c("Día 11-20")
tabla_resumen <- data.frame(
  Variable,
  round(Correlación2, 0), 
  round(x2_2, 2),            
  round(vc2, 2)             
)

colnames(tabla_resumen) <- c("Variable", "Test Pearson (%)", "Chi Cuadrado", "Umbral de aceptación")

library(knitr)
kable(tabla_resumen, format = "markdown", caption = "Tabla Nº10.3: Resumen de test de bondad al modelo de probabilidad")
Tabla Nº10.3: Resumen de test de bondad al modelo de probabilidad
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Día 11-20 21 0.9 16.92
# Cálculo total de observaciones para días 11-20
n2 <- sum(TDFDia11_20$ni_dia)
print(n2)
## [1] 8085
# Calcular la probabilidad estimada para el día 15 en porcentaje
probabilidad_15 <- dpois(15, lambda2) * 100
cat("La probabilidad de que un foco de calor ocurra en el día 15 es aproximadamente:",
    round(probabilidad_15, 2), "%\n")
## La probabilidad de que un foco de calor ocurra en el día 15 es aproximadamente: 9.69 %
# Agrupar solo días del 21 al 31

TDFDia21_31 <- subset(TDFDia, as.numeric(as.character(Dia)) >= 21 & as.numeric(as.character(Dia)) <= 31)

# Calcular frecuencias relativas para el grupo 21-31
hi3 <- TDFDia21_31$ni_dia / sum(TDFDia21_31$ni_dia)
print(hi3)
##  [1] 0.10299416 0.04758355 0.14188098 0.07690396 0.06187104 0.03093552
##  [7] 0.05342279 0.16213194 0.09442167 0.16349857 0.06435582
# Gráfico de barras para días 21-31
barplot(hi3 * 100, 
        main = "Gráfica N°10.15: Distribución de Probabilidad de Día (21-31)", 
        xlab = "Día",
        ylab = "Probabilidad (%)",
        names.arg = TDFDia21_31$Dia, 
        col = "lightgreen")

# Extraer días numéricos
dias_numericos_21_31 <- as.numeric(as.character(TDFDia21_31$Dia))

# Calcular lambda para días 21-31 (media ponderada)
lambda3 <- sum(dias_numericos_21_31 * TDFDia21_31$ni_dia) / sum(TDFDia21_31$ni_dia)
print(lambda3)
## [1] 26.2901
# Probabilidades teóricas usando distribución Poisson
P3 <- dpois(dias_numericos_21_31, lambda3)
print(P3)
##  [1] 0.04893819 0.05848135 0.06684698 0.07322557 0.07700430 0.07786348
##  [7] 0.07581624 0.07118630 0.06453431 0.05655377 0.04796143
# Comparar observados vs modelo Poisson
barplot(rbind(hi3 * 100, P3 * 100),  
        main = "Gráfica N°10.16: Modelo de probabilidad Poisson para Días 21-31", 
        xlab = "Día",
        ylab = "Probabilidad (%)",
        names.arg = TDFDia21_31$Dia, 
        beside = TRUE, 
        col = c("lightgreen", "darkgreen"))

legend("topright", legend = c("Real", "Modelo"),
       fill = c("lightgreen", "darkgreen"))

# Valores observados y esperados
Fo3 <- hi3
Fe3 <- P3

# Correlación entre observados y esperados
Correlación3 <- cor(Fo3, Fe3) * 100
plot(Fo3, Fe3, main = "Correlación de frecuencias en modelo Poisson \n para días 21-31",
     xlab = "Observado (hi)", ylab = "Esperado (P)")
abline(lm(Fe3 ~ Fo3), col = "red", lwd = 2)

# Cálculo Chi-cuadrado
x2_3 <- sum(((Fo3 - Fe3)^2) / Fe3)
print(x2_3)
## [1] 0.5218906
# Valor crítico Chi-cuadrado para 95% y grados de libertad = 10 (11 días -1)
vc3 <- qchisq(0.95, 10)
print(vc3)
## [1] 18.30704
# Comparar si x2 es mayor que el valor crítico
x2_3 > vc3
## [1] FALSE
# Tabla resumen de test
Variable <- c("Día 21-31")
tabla_resumen <- data.frame(
  Variable,
  round(Correlación3, 0), 
  round(x2_3, 2),            
  round(vc3, 2)             
)

colnames(tabla_resumen) <- c("Variable", "Test Pearson (%)", "Chi Cuadrado", "Umbral de aceptación")

library(knitr)
kable(tabla_resumen, format = "markdown", caption = "Tabla Nº10.4: Resumen de test de bondad al modelo de probabilidad")
Tabla Nº10.4: Resumen de test de bondad al modelo de probabilidad
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Día 21-31 -23 0.52 18.31
# Cálculo total de observaciones para días 21-31
n3 <- sum(TDFDia21_31$ni_dia)
print(n3)
## [1] 8049
# Calcular la probabilidad estimada para el día 25 en porcentaje
probabilidad_25 <- dpois(25, lambda3) * 100
cat("La probabilidad de que un foco de calor ocurra en el día 25 es aproximadamente:",
    round(probabilidad_25, 2), "%\n")
## La probabilidad de que un foco de calor ocurra en el día 25 es aproximadamente: 7.7 %