Análisis de la variable STAT_DATE

library(dplyr)
library(gt)

Dataset <- read.csv(
  "C:/Users/User/Downloads/Dataset.csv",
  header = TRUE,
  sep = ";"
)

Carga de datos

datos <- Dataset

FCH_ESTATUTO <- trimws(as.character(datos$STAT_DATE))
FCH_ESTATUTO <- FCH_ESTATUTO[!is.na(FCH_ESTATUTO) & FCH_ESTATUTO != ""]

anios <- substr(FCH_ESTATUTO, 1, 4)

anios <- anios[
  as.numeric(anios) >= 1990 &
  as.numeric(anios) <= 2010
]

n <- length(anios)

anios <- factor(
  anios,
  levels = sort(unique(anios)),
  ordered = TRUE
)

cat("Variable : STAT_DATE\n")
## Variable : STAT_DATE
cat("Nombre : FCH_ESTATUTO\n")
## Nombre : FCH_ESTATUTO
cat("n validos :", n, "\n")
## n validos : 2503

Tabla de frecuencias

TDF <- as.data.frame(table(anios))

names(TDF) <- c("Anio", "fi")

TDF <- TDF %>%
  mutate(
    fri = round(fi / n * 100, 2),
    Ni_asc = cumsum(fi),
    Ni_des = rev(cumsum(rev(fi))),
    Hi_asc = round(cumsum(fri), 2),
    Hi_des = round(rev(cumsum(rev(fri))), 2)
  )

TDF_total <- TDF %>%
  add_row(
    Anio = "Total",
    fi = sum(TDF$fi),
    fri = round(sum(TDF$fri), 2),
    Ni_asc = max(TDF$Ni_asc),
    Ni_des = min(TDF$Ni_des),
    Hi_asc = max(TDF$Hi_asc),
    Hi_des = min(TDF$Hi_des)
  )

TDF_total
##     Anio   fi    fri Ni_asc Ni_des Hi_asc Hi_des
## 1   1990   41   1.64     41   2503   1.64 100.01
## 2   1991   42   1.68     83   2462   3.32  98.37
## 3   1992   40   1.60    123   2420   4.92  96.69
## 4   1993   41   1.64    164   2380   6.56  95.09
## 5   1994   32   1.28    196   2339   7.84  93.45
## 6   1995   46   1.84    242   2307   9.68  92.17
## 7   1996   65   2.60    307   2261  12.28  90.33
## 8   1997   78   3.12    385   2196  15.40  87.73
## 9   1998   87   3.48    472   2118  18.88  84.61
## 10  1999  117   4.67    589   2031  23.55  81.13
## 11  2000  126   5.03    715   1914  28.58  76.46
## 12  2001  175   6.99    890   1788  35.57  71.43
## 13  2002  196   7.83   1086   1613  43.40  64.44
## 14  2003  241   9.63   1327   1417  53.03  56.61
## 15  2004  374  14.94   1701   1176  67.97  46.98
## 16  2005  535  21.37   2236    802  89.34  32.04
## 17  2006  267  10.67   2503    267 100.01  10.67
## 18 Total 2503 100.01   2503    267 100.01  10.67

Tabla formateada

TDF_total %>%
  gt() %>%
  tab_header(
    title = md("**Tabla 1**"),
    subtitle = md("Distribución de frecuencias por año de estatuto")
  )
Tabla 1
Distribución de frecuencias por año de estatuto
Anio fi fri Ni_asc Ni_des Hi_asc Hi_des
1990 41 1.64 41 2503 1.64 100.01
1991 42 1.68 83 2462 3.32 98.37
1992 40 1.60 123 2420 4.92 96.69
1993 41 1.64 164 2380 6.56 95.09
1994 32 1.28 196 2339 7.84 93.45
1995 46 1.84 242 2307 9.68 92.17
1996 65 2.60 307 2261 12.28 90.33
1997 78 3.12 385 2196 15.40 87.73
1998 87 3.48 472 2118 18.88 84.61
1999 117 4.67 589 2031 23.55 81.13
2000 126 5.03 715 1914 28.58 76.46
2001 175 6.99 890 1788 35.57 71.43
2002 196 7.83 1086 1613 43.40 64.44
2003 241 9.63 1327 1417 53.03 56.61
2004 374 14.94 1701 1176 67.97 46.98
2005 535 21.37 2236 802 89.34 32.04
2006 267 10.67 2503 267 100.01 10.67
Total 2503 100.01 2503 267 100.01 10.67

Gráfico de frecuencia absoluta

TDF_graf <- TDF_total %>%
  filter(Anio != "Total")

barplot(
  TDF_graf$fi,
  names.arg = TDF_graf$Anio,
  las = 2,
  col = "#7030A0",
  main = "Frecuencia Absoluta",
  ylab = "Frecuencia absoluta"
)

Gráfico de frecuencia relativa

barplot(
  TDF_graf$fri,
  names.arg = TDF_graf$Anio,
  las = 2,
  col = "#C5A3D8",
  main = "Frecuencia Relativa",
  ylab = "Frecuencia relativa (%)"
)

Diagrama circular

pie(
  TDF_graf$fri,
  labels = TDF_graf$Anio,
  main = "Distribución porcentual"
)

Ojiva acumulada

plot(
  1:nrow(TDF_graf),
  TDF_graf$Hi_asc,
  type = "b",
  pch = 16,
  xaxt = "n",
  main = "Ojiva acumulada",
  ylab = "Frecuencia acumulada (%)"
)

axis(
  1,
  at = 1:nrow(TDF_graf),
  labels = TDF_graf$Anio,
  las = 2
)

Indicadores estadísticos

moda_idx <- which.max(TDF_graf$fi)

moda <- TDF_graf$Anio[moda_idx]
moda_fi <- TDF_graf$fi[moda_idx]
moda_fri <- TDF_graf$fri[moda_idx]

med_idx <- which(TDF_graf$Ni_asc >= n/2)[1]
mediana <- TDF_graf$Anio[med_idx]

data.frame(
  Indicador = c("Moda", "Mediana"),
  Resultado = c(
    paste0(moda, " (", moda_fi, " eventos, ", moda_fri, "%)"),
    mediana
  )
)
##   Indicador                  Resultado
## 1      Moda 2005 (535 eventos, 21.37%)
## 2   Mediana                       2003

Conclusión

La variable STAT_DATE representa el año del estado operativo registrado para cada instalación minera. El análisis permite identificar los períodos con mayor concentración de cambios de estado y proporciona una referencia temporal para relacionar la actividad minera con las emisiones estatales de CO₂, NOx y CH₄.