TRACK

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$TRACK <- gsub(",", ".", datos$TRACK)

# Validar que sean numéricos reales
datos$TRACK <- ifelse(grepl("^[0-9.]+$", datos$TRACK), as.numeric(datos$TRACK), NA)

# Eliminar o reemplazar valores negativos
datos$TRACK[datos$TRACK <= 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      : chr  "0,510000000000000" "0,510000000000000" "0,150000000000000" "0,540000000000000" ...
##  $ TRACK     : num  0.49 0.49 0.38 0.42 0.49 0.42 0.49 0.36 0.43 0.43 ...
##  $ 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
TRACK <- na.omit (datos$TRACK)


#Tabla de distribución de frecuencia

#Manualmente
min <-min(TRACK)
max <-max(TRACK)
R <-max-min
K <- floor(1+3.33*log10(length(TRACK)))
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(TRACK, TRACK >= Li[i] & TRACK < Ls[i]))
  } else {
    ni[i] <- length(subset(TRACK, TRACK >= Li[i] & TRACK <= 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)))

TDFTRACK <- data.frame(
  Li, Ls, Mc, ni, round(hi, 2), Ni_asc, Ni_desc, round(Hi_asc, 2), round(Hi_desc, 2)
)

colnames(TDFTRACK) <- 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="-")

TDFTRACK<-rbind(TDFTRACK,totales)

#Simplificación con el histograma

Hist_TRACK<-hist(TRACK,breaks = 8,plot = F)
k<-length(Hist_TRACK$breaks)
Li<-Hist_TRACK$breaks[1:(length(Hist_TRACK$breaks)-1)]
Ls<-Hist_TRACK$breaks[2:length(Hist_TRACK$breaks)]
ni<-Hist_TRACK$counts
sum(ni)
## [1] 22462
Mc<-Hist_TRACK$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)))
TDFTRACK<-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(TDFTRACK)<-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(TDFTRACK$ni)),
           hi = sum(as.numeric(TDFTRACK$hi) * 100),
           Ni_asc="-",
           Ni_desc="-",
           Hi_asc="-",
           Hi_desc="-")

TDFTRACK<-rbind(TDFTRACK,totales)

library(gt)

tabla_TRACK <- TDFTRACK %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 15**"),
    subtitle = md("*Distribución de frecuencias simples y acumuladas para la variable TRACK (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_TRACK
Tabla N° 15
Distribución de frecuencias simples y acumuladas para la variable TRACK (Tamaño de píxel)
Lim inf Lim sup MC ni hi(%) Ni asc Ni desc Hi asc(%) Hi desc(%)
0.35 0.4 0.38 10158 45.22 10158 22462 45.22 100
0.4 0.45 0.43 3083 13.73 13241 12304 58.95 54.78
0.45 0.5 0.48 2869 12.77 16110 9221 71.72 41.05
0.5 0.55 0.52 1759 7.83 17869 6352 79.55 28.28
0.55 0.6 0.58 1680 7.48 19549 4593 87.03 20.45
0.6 0.65 0.63 1147 5.11 20696 2913 92.14 12.97
0.65 0.7 0.68 838 3.73 21534 1766 95.87 7.86
0.7 0.75 0.73 744 3.31 22278 928 99.18 4.13
0.75 0.8 0.78 184 0.82 22462 184 100 0.82
TOTAL - - 22462 10000 - - - -
Autor: Grupo 3
#Gráficas

#Histograma
hist(TRACK,breaks = 10,
     main = "Gráfica N°15.1: Distribución para el
     Tamaño de Pixel",
     xlab = "Tamaño de Pixel",
     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_TRACK$breaks,labels = Hist_TRACK$breaks,las=1,
     cex.axis=0.9)

#Gráfica Global
hist(TRACK, breaks = 10,
     main = "Gráfica N°15.2: Distribución para el
     Tamaño de Pixel",
     xlab = "Tamaño de Pixel (%)",
     ylab = "Cantidad",
     ylim = c(0, length(TRACK)),
     col = "green",
     cex.main = 0.9,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_TRACK$breaks,
     labels = Hist_TRACK$breaks, las = 1,
     cex.axis = 0.9)

# Filtrar solo las filas numéricas (excluyendo la fila "TOTAL")
datos_grafico <- TDFTRACK[!TDFTRACK$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°15.3: Distribución porcentual de frecuencias 
        relativas para Tamaño de Pixel",
        xlab = "Tamaño de Pixel",
        ylab = "Porcentaje (%)",
        names.arg = datos_grafico$MC,
        ylim = c(0, 100))

# Local
hist(TRACK, breaks = 10,
     main = "Gráfica N°15.4: Distribución para Tamaño de Pixel",
     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_TRACK$breaks,
     labels = Hist_TRACK$breaks, las = 1,
     cex.axis = 0.9)

# Filtrar filas válidas (excluir "TOTAL")
datos_validos <- TDFTRACK[!TDFTRACK$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°15.5: Distribución para Tamaño de Pixel",
        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°15.6: Distribución de frecuencias Ascendente y descendente 
      para Tamaño de Pixel",
     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°15.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(TRACK,
        horizontal = TRUE,
        main = "Gráfica N°15.8:Distribución de frecuencia para el Tamaño de Pixel",
        xlab = " Tamaño de Pixel (%)",
        col = "pink",
        outline = TRUE,
        pch = 1)

# INDICADORES ESTADISTICOS

# Indicadores de Tendencia Central

# Media aritmética
media <- round(mean(TRACK), 2)
media
## [1] 0.46
# Moda
max_ni <- max(TDFTRACK$ni)
moda <- TDFTRACK$MC[TDFTRACK$ni == max_ni]
moda_valor <- as.character(moda)
moda_valor
## [1] "0.68"
# Mediana
mediana <- median(TRACK)
mediana
## [1] 0.43
# INDICADORES DE DISPERSIÓN #

# Varianza
varianza <- var(TRACK)
varianza
## [1] 0.01173904
# Desviación Estándar
sd <- sd(TRACK)
sd
## [1] 0.1083469
# Coeficiente de Variación
cv <- round((sd / media) * 100, 2)
cv
## [1] 23.55
# INDICADORES DE FORMA #

# Asimetría
library(e1071)
asimetria <- skewness(TRACK, type = 2)
asimetria
## [1] 1.028684
#Curtosis
curtosis <- kurtosis(TRACK)
curtosis
## [1] 0.05652093
tabla_indicadores <- data.frame("Variable" =c("Tamaño de Pixel"),
                                "Rango" = c("[0.36;0.78]"),
                                "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° 15.9**"),
    subtitle = md("*Indicadores estadísticos descriptivos para el Tamaño de Pixel (TRACK)*")
  ) %>%
  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° 15.9
Indicadores estadísticos descriptivos para el Tamaño de Pixel (TRACK)
Variable Rango X Me Mo V Sd Cv As K Valores.Atipicos
Tamaño de Pixel [0.36;0.78] 0.46 0.43 0.68 0.01 0.11 23.55 1.0287 0.06 No hay presencia de valores atipicos
Autor: Grupo 3