UNIVERSIDAD CENTRAL DEL ECUADOR
PROYECTO: FOCOS DE CALOR EN EL ECUADOR
AUTORES: GUERRERO MARIA GABRIELA,PUCHAICELA MONICA, ZURITA JOHANNA
FECHA: 14/05/2025
datos <- read.csv("maate_focosdecalor_bdd_2021diciembre.csv",
header = T, sep = ",", dec = ".")
# LIMPIEZA de valores no numéricos y negativos en SCAN
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Convertir comas a puntos, eliminar caracteres no válidos
datos$SCAN <- gsub(",", ".", datos$SCAN)
# Validar que sean numéricos reales
datos$SCAN <- ifelse(grepl("^[0-9.]+$", datos$SCAN), as.numeric(datos$SCAN), NA)
# Eliminar o reemplazar valores negativos
datos$SCAN[datos$SCAN <= 0] <- NA # o usar filter(SCAN > 0) más adelante
#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: chr "354,759999999999990" "342,009999999999990" "331,860000000000010" "331,399999999999980" ...
## $ SCAN : num 0.51 0.51 0.15 0.54 0.5 0.53 0.49 0.38 0.55 0.55 ...
## $ TRACK : chr "0,490000000000000" "0,490000000000000" "0,380000000000000" "0,420000000000000" ...
## $ SATELLITE : chr "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" ...
#Extraccion variable Cuantitativa Continua
SCAN <- na.omit (datos$SCAN)
#Tabla de distribución de frecuencia
#Manualmente
min <-min(SCAN)
max <-max(SCAN)
R <-max-min
K <- floor(1+3.33*log10(length(SCAN)))
A <-R/K
Li <-round(seq(from=min,to=max-A,by=A),2)
Ls <-round(seq(from=min+A,to=max,by=A),2)
Mc <-(Li+Ls)/2
ni<-c()
for (i in 1:K) {
if (i < K) {
ni[i] <- length(subset(SCAN, SCAN >= Li[i] & SCAN < Ls[i]))
} else {
ni[i] <- length(subset(SCAN, SCAN >= Li[i] & SCAN <= Ls[i]))
}
}
sum(ni)
## [1] 22462
hi <-ni/sum(ni)*100
Ni_asc<-cumsum(ni)
Hi_asc<-cumsum(hi)
Ni_desc<-rev(cumsum(rev(ni)))
Hi_desc<-rev(cumsum(rev(hi)))
TDFSCAN <- data.frame(
Li, Ls, Mc, ni, round(hi, 2), Ni_asc, Ni_desc, round(Hi_asc, 2), round(Hi_desc, 2)
)
colnames(TDFSCAN) <- c("Li","Ls","Mc","ni","hi","Ni_asc(%)","Ni_desc(%)","Hi_asc","Hi_desc")
#Crear fila de totales
totales<-c(
Li="-",
Ls="-",
Mc="-",
ni=sum(ni),
hi=sum(hi),
Ni_asc="-",
Ni_desc="-",
Hi_asc="-",
Hi_desc="-")
TDFSCAN<-rbind(TDFSCAN,totales)
#Simplificación con el histograma
Hist_SCAN<-hist(SCAN,breaks = 8,plot = F)
k<-length(Hist_SCAN$breaks)
Li<-Hist_SCAN$breaks[1:(length(Hist_SCAN$breaks)-1)]
Ls<-Hist_SCAN$breaks[2:length(Hist_SCAN$breaks)]
ni<-Hist_SCAN$counts
sum(ni)
## [1] 22462
Mc<-Hist_SCAN$mids
hi<-(ni/sum(ni))
sum(hi)
## [1] 1
Ni_asc<-cumsum(ni)
Hi_asc<-cumsum(hi)
Ni_desc<-rev(cumsum(rev(ni)))
Hi_desc<-rev(cumsum(rev(hi)))
TDFSCAN<-data.frame(Li=round(Li,2),
Ls=round(Ls,2),
Mc=round(Mc,2),
ni=ni,
hi=round(hi*100,2),
Ni_asc=Ni_asc,
Ni_desc=Ni_desc,
Hi_asc=round(Hi_asc*100,2),
Hi_desc=round(Hi_desc*100,2))
colnames(TDFSCAN)<-c("Lim inf","Lim sup","MC","ni","hi(%)","Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")
#Crear fila de totales
totales<-c(Li="TOTAL",
Ls="-",
Mc="-",
ni = sum(as.numeric(TDFSCAN$ni)),
hi = sum(as.numeric(TDFSCAN$hi) * 100),
Ni_asc="-",
Ni_desc="-",
Hi_asc="-",
Hi_desc="-")
TDFSCAN<-rbind(TDFSCAN,totales)
library(gt)
tabla_SCAN <- TDFSCAN %>%
gt() %>%
tab_header(
title = md("**Tabla N° 14**"),
subtitle = md("*Distribución de frecuencias simples y acumuladas para la variable SCAN (Tamaño de píxel)*")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
row.striping.include_table_body = TRUE,
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(
rows = `Lim inf` == "TOTAL"
)
)
tabla_SCAN
| Tabla N° 14 | ||||||||
| Distribución de frecuencias simples y acumuladas para la variable SCAN (Tamaño de píxel) | ||||||||
| Lim inf | Lim sup | MC | ni | hi(%) | Ni asc | Ni desc | Hi asc(%) | Hi desc(%) |
|---|---|---|---|---|---|---|---|---|
| 0.1 | 0.2 | 0.15 | 324 | 1.44 | 324 | 22462 | 1.44 | 100 |
| 0.2 | 0.3 | 0.25 | 0 | 0 | 324 | 22138 | 1.44 | 98.56 |
| 0.3 | 0.4 | 0.35 | 8645 | 38.49 | 8969 | 22138 | 39.93 | 98.56 |
| 0.4 | 0.5 | 0.45 | 8568 | 38.14 | 17537 | 13493 | 78.07 | 60.07 |
| 0.5 | 0.6 | 0.55 | 3687 | 16.41 | 21224 | 4925 | 94.49 | 21.93 |
| 0.6 | 0.7 | 0.65 | 1011 | 4.5 | 22235 | 1238 | 98.99 | 5.51 |
| 0.7 | 0.8 | 0.75 | 227 | 1.01 | 22462 | 227 | 100 | 1.01 |
| TOTAL | - | - | 22462 | 9999 | - | - | - | - |
| Autor: Grupo 3 | ||||||||
#Gráficas
#Histograma
hist(SCAN,breaks = 10,
main = "Gráfica N°14.1: Distribución para el
Escaneo de Seguimiento",
xlab = "Escaneo",
ylab = "Cantidad",
ylim = c(0,max(ni)),
col = "blue",
cex.main=0.9,
cex.lab=1,
cex.axis=0.9,
xaxt="n")
axis(1,at=Hist_SCAN$breaks,labels = Hist_SCAN$breaks,las=1,
cex.axis=0.9)
#Gráfica Global
hist(SCAN, breaks = 10,
main = "Gráfica N°14.2: Distribución para el
Escaneo de Seguimiento",
xlab = "Escaneo (%)",
ylab = "Cantidad",
ylim = c(0, length(SCAN)),
col = "green",
cex.main = 0.9,
cex.lab = 1,
cex.axis = 0.9,
xaxt = "n")
axis(1, at = Hist_SCAN$breaks,
labels = Hist_SCAN$breaks, las = 1,
cex.axis = 0.9)
# Filtrar solo las filas numéricas (excluyendo la fila "TOTAL")
datos_grafico <- TDFSCAN[!TDFSCAN$MC %in% c("-", "TOTAL"), ]
# Convertir 'hi' a numérico
hi_numerico <- as.numeric(datos_grafico$hi)
barplot(hi_numerico,
space = 0,
col = "skyblue",
main = "Gráfica N°14.3: Distribución porcentual de frecuencias
relativas para el Escaneo de Seguimiento",
xlab = "Escaneo",
ylab = "Porcentaje (%)",
names.arg = datos_grafico$MC,
ylim = c(0, 100))
# Local
hist(SCAN, breaks = 10,
main = "Gráfica N°14.4: Distribución para el Escaneo de Seguimiento",
xlab = "Escaneo (%)",
ylab = "Cantidad",
ylim = c(0,max(ni)),
col = "yellow",
cex.main = 0.9,
cex.lab = 1,
cex.axis = 0.9,
xaxt = "n")
axis(1, at = Hist_SCAN$breaks,
labels = Hist_SCAN$breaks, las = 1,
cex.axis = 0.9)
# Filtrar filas válidas (excluir "TOTAL")
datos_validos <- TDFSCAN[!TDFSCAN$MC %in% c("-", "TOTAL"), ]
# Convertir 'hi' a numérico
hi_valores <- as.numeric(datos_validos$hi)
barplot(hi_valores,
space = 0,
col = "brown",
main = "Gráfica N°14.5: Distribución para el Escaneo de Seguimiento",
xlab = "Escaneo (%)",
ylab = "Porcentaje (%)",
ylim = c(0, 50),
names.arg = datos_validos$MC)
# Diagrama de Ojiva Ascendente y Descendente
plot(Li ,Ni_desc,
main = "Gráfica N°14.6: Distribución de frecuencias Ascendente y descendente
para el Escaneo de Seguimiento",
xlab = "Escaneo (%)",
ylab = "Cantidad",
xlim = c(0,1),
col = "red",
cex.axis=0.8,
type = "o",
lwd = 3,
las=1,
xaxt="n")
lines(Ls,Ni_asc,
col = "green",
type = "o",
lwd = 3)
axis(1, at = seq(0, 1, by = 0.25))
# Diagrama de Ojiva Ascendente y Descendente Porcentual
plot(Li, Hi_desc * 100,
main = "Gráfica N°14.7: Distribución de frecuencia Ascendente y Descendente porcentual
para el Escaneo de Seguimiento",
xlab = "Escaneo (%)",
ylab = "Porcentaje (%)",
xlim = c(0,1),
col = "red",
type = "o",
lwd = 2,
xaxt="n")
lines(Ls, Hi_asc * 100,
col = "blue",
type = "o",
lwd = 3)
axis(1, at = seq(0,1,by=0.25))
# Diagrama de Caja
boxplot(SCAN,
horizontal = TRUE,
main = "Gráfica N°14.8:Distribución de frecuencia para el Escaneo de Seguimiento",
xlab = " Tamaño de Pixel (%)",
col = "pink",
outline = TRUE,
pch = 1)
# INDICADORES ESTADISTICOS
# Indicadores de Tendencia Central
# Media aritmética
media <- round(mean(SCAN), 2)
media
## [1] 0.45
# Moda
max_ni <- max(TDFSCAN$ni)
moda <- TDFSCAN$MC[TDFSCAN$ni == max_ni]
moda_valor <- as.character(moda)
moda_valor
## [1] "0.35"
# Mediana
mediana <- median(SCAN)
mediana
## [1] 0.43
# INDICADORES DE DISPERSIÓN #
# Varianza
varianza <- var(SCAN)
varianza
## [1] 0.007859867
# Desviación Estándar
sd <- sd(SCAN)
sd
## [1] 0.08865589
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 19.7
# INDICADORES DE FORMA #
# Asimetría
library(e1071)
asimetria <- skewness(SCAN, type = 2)
asimetria
## [1] 0.4584543
#Curtosis
curtosis <- kurtosis(SCAN)
curtosis
## [1] 2.136166
tabla_indicadores <- data.frame("Variable" =c("Tamaño de Pixel"),
"Rango" = c("[0.13;0.8]"),
"X" = c(media),
"Me" = c(round(mediana,2)),
"Mo" = c(moda_valor),
"V" = c(round(varianza,2)),
"Sd" = c(round(sd,2)),
"Cv" = c(cv),
"As" = c(round(asimetria,4)),
"K" = c(round(curtosis,2)),
"Valores Atipicos" = "No hay presencia de valores atipicos")
library(gt)
tabla_indicadores_gt <- tabla_indicadores %>%
gt() %>%
tab_header(
title = md("**Tabla N° 14.9**"),
subtitle = md("*Indicadores estadísticos descriptivos para el Tamaño de Pixel (SCAN)*")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 3")
) %>%
tab_options(
table.border.top.color = "black",
table.border.bottom.color = "black",
table.border.top.style = "solid",
table.border.bottom.style = "solid",
column_labels.border.top.color = "black",
column_labels.border.bottom.color = "black",
column_labels.border.bottom.width = px(2),
row.striping.include_table_body = TRUE,
heading.border.bottom.color = "black",
heading.border.bottom.width = px(2),
table_body.hlines.color = "gray",
table_body.border.bottom.color = "black"
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_title(groups = "title")
)
tabla_indicadores_gt
| Tabla N° 14.9 | ||||||||||
| Indicadores estadísticos descriptivos para el Tamaño de Pixel (SCAN) | ||||||||||
| Variable | Rango | X | Me | Mo | V | Sd | Cv | As | K | Valores.Atipicos |
|---|---|---|---|---|---|---|---|---|---|---|
| Tamaño de Pixel | [0.13;0.8] | 0.45 | 0.43 | 0.35 | 0.01 | 0.09 | 19.7 | 0.4585 | 2.14 | No hay presencia de valores atipicos |
| Autor: Grupo 3 | ||||||||||