# UNIVERSIDAD CENTRAL DEL ECUADOR
# Facultad de Ingeniería en Geología, Minas, Petroleos y Ambiental
# Ingeniería Ambiental
# Autor: GUERRERO MARIA GABRIELA, PUCHAICELA MONICA, ZURITA JOHANNA
# fecha:14/05/2025

# Cargar datos

library(readxl)
library(readr)
datos <- read_excel("C:/Users/User/Desktop/Proyecto Estadistica/maate_focosdecalor_bdd_2021diciembre (2).xlsx")

# Guardar como CSV
write_csv(datos, "C:/Users/User/Desktop/Proyecto Estadistica/maate_focosdecalor_bdd_2021diciembre (2).csv")

datos <- read.csv("C:/Users/User/Desktop/Proyecto Estadistica/maate_focosdecalor_bdd_2021diciembre (2).csv", 
                  header = TRUE, 
                  sep = ",", 
                  dec = ".", 
                  fileEncoding = "UTF-8")


#Extraccion variable Cuantitativa Continua
datos$BRIGHTNESS <- as.numeric(gsub(",", ".", datos$BRIGHTNESS))
str(datos$BRIGHTNESS)
##  num [1:22476] 355 342 332 331 328 ...
BRIGHTNESS <- na.omit (datos$BRIGHTNESS)

#Estructura de los datos 
str(datos)
## 'data.frame':    22476 obs. of  17 variables:
##  $ MES_REPORT: int  11 11 8 6 5 6 11 9 3 3 ...
##  $ DIA_REPORT: int  20 20 6 10 28 10 20 29 22 22 ...
##  $ 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" ...
##  $ TXT_1     : chr  "PARROQUIA RURAL" "PARROQUIA RURAL" "PARROQUIA RURAL" "PARROQUIA RURAL" ...
##  $ LATITUDE  : chr  "-4,981720000000000" "-4,969160000000000" "-4,958520000000000" "-4,957820000000000" ...
##  $ LONGITUDE : chr  "-79,041280000000000" "-79,049490000000006" "-79,118430000000004" "-79,111859999999993" ...
##  $ BRIGHTNESS: num  355 342 332 331 328 ...
##  $ SCAN      : chr  "0,510000000000000" "0,510000000000000" "0,150000000000000" "0,540000000000000" ...
##  $ TRACK     : chr  "0,490000000000000" "0,490000000000000" "0,380000000000000" "0,420000000000000" ...
##  $ SATELLITE : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ CONFIDENCE: chr  "n" "n" "n" "n" ...
##  $ VERSION   : chr  "2.0NRT" "2.0NRT" "2.0NRT" "2.0NRT" ...
##  $ BRIGHT_T31: chr  "299,420000000000020" "298,149999999999980" "299,160000000000030" "296,800000000000010" ...
##  $ FRP       : chr  "12,100000000000000" "6,870000000000000" "3,770000000000000" "5,500000000000000" ...
##  $ DAYNIGHT  : chr  "D" "D" "D" "D" ...
# Asegurar que se muestre con decimales en lugar de notación científica
options(scipen=999)
BRIGHTNESS <- round(BRIGHTNESS, 4)

# Información básica
n <- length(BRIGHTNESS)
cat("Tamaño muestral:", n, "\n")
## Tamaño muestral: 22476
# Histograma
histograma <- hist(BRIGHTNESS, freq=FALSE,
                   main="Gráfica Nro 13.9: Histograma de Temp de Brillo VIIRS I-4",
                   xlab="Temperatura de Brillo", ylab="Densidad de probabilidad", col="pink")

limites_barras <- histograma$breaks
print(limites_barras)
##  [1] 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370
# Agrupación en 5 intervalos
HistoBRIGHTNESS <- hist(BRIGHTNESS, breaks=6, freq=FALSE,
                 main="Gráfica Nro 13.10: Modelo de probabilidad normal de 
                 Temp de Brillo VIIRS I-4",
                 xlab="Temperatura de Brillo", ylab="Densidad de probabilidad", col="brown")
h <- length(HistoBRIGHTNESS$counts)

# Media y desviación estándar
u <- mean(BRIGHTNESS)
sigma <- sd(BRIGHTNESS)

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

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

set.seed(123)
datos_normales <- rnorm(10000, mean = u, sd = sigma)
histograma <- hist(datos_normales, breaks = h, plot = FALSE)
Fo_sim <- histograma$counts

# Calcular Fe 
P_sim <- sapply(1:h, function(i) pnorm(HistoBRIGHTNESS$breaks[i+1], u, sigma) - pnorm(HistoBRIGHTNESS$breaks[i], u, sigma))
Fe_sim <- P_sim * length(datos_normales)


# Histograma con datos normales
histograma <- hist(datos_normales, breaks = h, plot = FALSE)
Fo_sim <- histograma$counts
breaks_sim <- histograma$breaks

# Frecuencias esperadas con los mismos breaks
P_sim <- sapply(1:length(Fo_sim), function(i)
  pnorm(breaks_sim[i+1], u, sigma) - pnorm(breaks_sim[i], u, sigma))

Fe_sim <- P_sim * length(datos_normales)

# Ahora ambos vectores deben tener igual longitud
length(Fo_sim)
## [1] 11
length(Fe_sim)  
## [1] 11
# Y puedes graficar sin error
plot(Fo_sim, Fe_sim, main="Gráfica Nro 13.11: Correlación de frecuencias en modelo normal",
     xlab="Frecuencia Observada", ylab="Frecuencia Esperada", col="blue3")
abline(lm(Fe_sim ~ Fo_sim), col="red", lwd=2)

Correlacion <- cor(Fo_sim, Fe_sim)*100
cat("Test de Pearson (correlación %):", round(Correlacion,2), "\n")
## Test de Pearson (correlación %): 99.98
# Agrupar si es necesario
Fo_agrupado <- c(sum(Fo_sim[1:4]), Fo_sim[5], Fo_sim[6], Fo_sim[7], Fo_sim[8], Fo_sim[9])
Fe_agrupado <- c(sum(Fe_sim[1:4]), Fe_sim[5], Fe_sim[6], Fe_sim[7], Fe_sim[8], Fe_sim[9])

# Recalcular test
x2 <- sum((Fo_agrupado - Fe_agrupado)^2 / Fe_agrupado)
gl <- length(Fo_agrupado) - 1
umbral <- qchisq(0.95, gl)
cat("Chi-cuadrado:", round(x2, 2), "- Umbral:", round(umbral, 2), "- Aceptado:", x2 < umbral, "\n")
## Chi-cuadrado: 1.59 - Umbral: 11.07 - Aceptado: TRUE
# Probabilidad
probabilidad <- pnorm(350, u, sigma) - pnorm(300, u, sigma)
cat("Probabilidad entre 300 y 350:", round(probabilidad*100,2), "%\n")
## Probabilidad entre 300 y 350: 85.1 %
# Gráfica de cálculo de probabilidad
plot(x, dnorm(x, u, sigma), col="skyblue3", lwd=1,
     main="Gráfica Nro 13.12: Cálculo de probabilidades", ylab="Densidad", xlab="Temp de Brillo VIIRS I-4")
x_section <- seq(350, 300, 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))

# 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 13.1: Intervalo de confianza para la media poblacional de latitud")
Tabla 13.1: Intervalo de confianza para la media poblacional de latitud
Límite.inferior Media.poblacional Límite.superior Error.estándar
335.1167 335.301 335.4853 0.0922
# Tabla resumen de tests
tabla_resumen <- data.frame(
  Variable="Temp de Brillo VIIRS I-4",
  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
Temp de Brillo VIIRS I-4 99.98 1.59 11.07
"CONCLUSION 
El coeficiente de correlación de Pearson entre las frecuencias observadas y esperadas fue de 99.98%, lo que indica una fuerte asociación lineal entre los datos observados y el modelo normal simulado. Esto sugiere que la distribución de BRIGHTNESS se aproxima bien a una distribución normal.
La prueba de bondad de ajuste Chi-cuadrado arrojó un valor estadístico de χ² = 1.19, siendo menor que el umbral crítico (11.07) al 95% de confianza. Por tanto, no se rechaza la hipótesis nula, lo que indica que los datos siguen razonablemente una distribución normal, se calculó que la probabilidad de que la temperatura de brillo esté entre 300 y 350 unidades es de 85.1%, lo que cuantifica la ocurrencia esperada de eventos térmicos dentro de ese rango.
Finalmente, se obtuvo un intervalo de confianza del 95% para la media poblacional de BRIGHTNESS, centrado en μ = 335.3, con límites inferiores y superiores de LI = 335.1 y LS = 335.4, respectivamente. Esto permite estimar con alta confianza el valor promedio de BRIGHTNESS en la población analizada."
## [1] "CONCLUSION \nEl coeficiente de correlación de Pearson entre las frecuencias observadas y esperadas fue de 99.98%, lo que indica una fuerte asociación lineal entre los datos observados y el modelo normal simulado. Esto sugiere que la distribución de BRIGHTNESS se aproxima bien a una distribución normal.\nLa prueba de bondad de ajuste Chi-cuadrado arrojó un valor estadístico de χ² = 1.19, siendo menor que el umbral crítico (11.07) al 95% de confianza. Por tanto, no se rechaza la hipótesis nula, lo que indica que los datos siguen razonablemente una distribución normal, se calculó que la probabilidad de que la temperatura de brillo esté entre 300 y 350 unidades es de 85.1%, lo que cuantifica la ocurrencia esperada de eventos térmicos dentro de ese rango.\nFinalmente, se obtuvo un intervalo de confianza del 95% para la media poblacional de BRIGHTNESS, centrado en μ = 335.3, con límites inferiores y superiores de LI = 335.1 y LS = 335.4, respectivamente. Esto permite estimar con alta confianza el valor promedio de BRIGHTNESS en la población analizada."