SCAN

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