# 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
| 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
| 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."