setwd("~/UCE/III/estadistica")
# Carga de Datos
datos <- read.csv("Conjunto_Datos_Minerales.csv", header = TRUE, sep = ";", dec = ".")
UltimoAnio <- na.omit(datos$yr_lst_prd)

# Paso 1: Preparación de datos
TDFUltimoAnio <- table(UltimoAnio)
TablaUltimoAnio <- as.data.frame(TDFUltimoAnio)

# Paso 2: Frecuencia relativa (porcentaje)
hi <- (TablaUltimoAnio$Freq / sum(TablaUltimoAnio$Freq)) * 100
TablaUltimoAnio <- data.frame(TablaUltimoAnio, hi = round(hi, 2))

# Paso 3: Frecuencia acumulada ascendente y descendente
Niasc <- cumsum(TablaUltimoAnio$Freq)
Hiasc <- cumsum(TablaUltimoAnio$hi)
Nidsc <- rev(cumsum(rev(TablaUltimoAnio$Freq)))
Hidsc <- rev(cumsum(rev(TablaUltimoAnio$hi)))

# Paso 4: Tabla final
TablaUltimoAnioFinal <- data.frame(
  Año = TablaUltimoAnio$UltimoAnio,
  Frecuencia = TablaUltimoAnio$Freq,
  Porcentaje = TablaUltimoAnio$hi,
  Niasc,
  Hiasc = round(Hiasc, 2),
  Nidsc,
  Hidsc = round(Hidsc, 2)
)

# Paso 5: Gráficos de barras (sin agrupar)

barplot(TablaUltimoAnioFinal$Frecuencia,
        main = "Gráfico No.1: Distribución de cantidad del último año de producción",
        xlab = "Año", ylab = "Cantidad",
        col = "orange",
        names.arg = TablaUltimoAnioFinal$Año,
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

barplot(TablaUltimoAnioFinal$Frecuencia,
        main = "Gráfico No.2: Distribución de cantidad del último año de producción",
        xlab = "Año", ylab = "Cantidad",
        col = "red",
        names.arg = TablaUltimoAnioFinal$Año,
        ylim = c(0, length(UltimoAnio)),
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

barplot(TablaUltimoAnioFinal$Porcentaje,
        main = "Gráfico No.3: Distribución de porcentaje del último año de producción",
        xlab = "Año", ylab = "Porcentaje",
        col = "skyblue",
        names.arg = TablaUltimoAnioFinal$Año,
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

barplot(TablaUltimoAnioFinal$Porcentaje,
        main = "Gráfico No.4: Distribución de porcentaje del último año de producción",
        xlab = "Año", ylab = "Porcentaje",
        col = "blue",
        names.arg = TablaUltimoAnioFinal$Año,
        ylim = c(0, 100),
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

# Ojivas
x <- as.numeric(as.character(TablaUltimoAnioFinal$Año))
plot(x, TablaUltimoAnioFinal$Niasc, type = "p", main = "Gráfico No.5: Ojiva ascendente - Último año",
     xlab = "Año", ylab = "Frecuencia acumulada", col = "blue")

plot(x, TablaUltimoAnioFinal$Nidsc, type = "p", main = "Gráfico No.6: Ojiva descendente - Último año",
     xlab = "Año", ylab = "Frecuencia acumulada", col = "blue")

plot(x, TablaUltimoAnioFinal$Hiasc, type = "p", main = "Gráfico No.7: Ojiva ascendente % - Último año",
     xlab = "Año", ylab = "% acumulado", col = "blue")

plot(x, TablaUltimoAnioFinal$Hidsc, type = "p", main = "Gráfico No.8: Ojiva descendente % - Último año",
     xlab = "Año", ylab = "% acumulado", col = "blue")

plot(x, TablaUltimoAnioFinal$Niasc, type = "p",
     main = "Gráfico No.9: Ojivas Ni: ascendente vs descendente",
     xlab = "Año", ylab = "Frecuencia acumulada", col = "green")
lines(x, TablaUltimoAnioFinal$Nidsc, type = "p", col = "blue")

plot(x, TablaUltimoAnioFinal$Hiasc, type = "p",
     main = "Gráfico No.10: Ojivas Hi (%): ascendente vs descendente",
     xlab = "Año", ylab = "% acumulado", col = "green")
lines(x, TablaUltimoAnioFinal$Hidsc, type = "p", col = "blue")

# ---------------- AGRUPACIÓN CADA 100 AÑOS ---------------------

# Crear intervalos de 100 en 100 años
minA <- floor(min(UltimoAnio, na.rm = TRUE) / 100) * 100
maxA <- ceiling(max(UltimoAnio, na.rm = TRUE) / 100) * 100
breaks <- seq(minA, maxA, by = 100)

# Etiquetas legibles para los intervalos
etiquetas_legibles <- paste0(head(breaks, -1), " a ", tail(breaks, -1))

# Agrupar los datos en intervalos
UltimoAnioIntervalos <- cut(UltimoAnio,
                            breaks = breaks,
                            labels = etiquetas_legibles,
                            include.lowest = TRUE,
                            right = FALSE)

# Crear tabla de frecuencias
TDFIntervalos <- table(UltimoAnioIntervalos)
TablaIntervalos <- as.data.frame(TDFIntervalos)

# Calcular frecuencia relativa (%)
hi <- (TablaIntervalos$Freq / sum(TablaIntervalos$Freq)) * 100
TablaIntervalos$hi <- round(hi, 2)

# Frecuencias acumuladas absolutas y relativas
Niasc <- cumsum(TablaIntervalos$Freq)
Hiasc <- cumsum(TablaIntervalos$hi)
Nidsc <- rev(cumsum(rev(TablaIntervalos$Freq)))
Hidsc <- rev(cumsum(rev(TablaIntervalos$hi)))

# Extraer límites para calcular punto medio
lim_inf <- head(breaks, -1)
lim_sup <- tail(breaks, -1)
punto_medio <- (lim_inf + lim_sup) / 2

# Tabla final agrupada con todos los datos
TablaAgrupada <- data.frame(
  Limite_Inferior = lim_inf,
  Limite_Superior = lim_sup,
  Mc = punto_medio,
  ni = TablaIntervalos$Freq,
  hi = TablaIntervalos$hi,
  Niasc = Niasc,
  Hiasc = round(Hiasc, 2),
  Nidsc = Nidsc,
  Hidsc = round(Hidsc, 2)
)

print(TablaAgrupada)
##   Limite_Inferior Limite_Superior   Mc   ni    hi Niasc  Hiasc Nidsc  Hidsc
## 1            1500            1600 1550    1  0.02     1   0.02  5483 100.00
## 2            1600            1700 1650    0  0.00     1   0.02  5482  99.98
## 3            1700            1800 1750    4  0.07     5   0.09  5482  99.98
## 4            1800            1900 1850  691 12.60   696  12.69  5478  99.91
## 5            1900            2000 1950 4745 86.54  5441  99.23  4787  87.31
## 6            2000            2100 2050   42  0.77  5483 100.00    42   0.77
# ---------------- GRÁFICOS ------------------------

# Histograma agrupado
hist(UltimoAnio,
     breaks = breaks,
     right = FALSE,
     main = "Gráfico No.11: Histograma: Último año de producción (agrupado cada 100 años)",
     xlab = "Año",
     ylab = "Frecuencia",
     col = "orange",
     border = "white")

# Ojivas agrupadas - usar punto medio (Mc) para x
x <- TablaAgrupada$Mc

plot(x, TablaAgrupada$Niasc, type = "b", main = "Gráfico No.12: Ojiva Ascendente (Agrupada)",
     xlab = "Año (punto medio)", ylab = "Frecuencia acumulada", col = "blue")

plot(x, TablaAgrupada$Nidsc, type = "b", main = "Gráfico No.13: Ojiva Descendente (Agrupada)",
     xlab = "Año (punto medio)", ylab = "Frecuencia acumulada", col = "blue")

plot(x, TablaAgrupada$Hiasc, type = "b", main = "Gráfico No.14: Ojiva Ascendente % (Agrupada)",
     xlab = "Año (punto medio)", ylab = "% acumulado", col = "blue")

plot(x, TablaAgrupada$Hidsc, type = "b", main = "Gráfico No.15: Ojiva Descendente % (Agrupada)",
     xlab = "Año (punto medio)", ylab = "% acumulado", col = "blue")

plot(x, TablaAgrupada$Niasc, type = "b", main = "Gráfico No.16: Ojivas Ni: Asc. y Desc. (Agrupada)",
     xlab = "Año (punto medio)", ylab = "Frecuencia acumulada", col = "green")
lines(x, TablaAgrupada$Nidsc, type = "b", col = "blue")

plot(x, TablaAgrupada$Hiasc, type = "b", main = "Gráfico No.17: Ojivas Hi %: Asc. y Desc. (Agrupada)",
     xlab = "Año (punto medio)", ylab = "% acumulado", col = "green")
lines(x, TablaAgrupada$Hidsc, type = "b", col = "blue")

# Boxplot
boxplot(UltimoAnio, horizontal = TRUE, col = "red",
        main = "Gráfico No.18: Distribución del último año de producción")

# ---------------- MEDIDAS ESTADÍSTICAS ------------------------
library(moments)

minimo     <- min(UltimoAnio, na.rm = TRUE)
maximo     <- max(UltimoAnio, na.rm = TRUE)
rango      <- maximo - minimo
media      <- mean(UltimoAnio, na.rm = TRUE)
mediana    <- median(UltimoAnio, na.rm = TRUE)
cuartiles  <- quantile(UltimoAnio, probs = c(0.25, 0.5, 0.75), na.rm = TRUE)
varianza   <- var(UltimoAnio, na.rm = TRUE)
desviacion <- sd(UltimoAnio, na.rm = TRUE)
coef_var   <- desviacion / media * 100
asimetria  <- skewness(UltimoAnio, na.rm = TRUE)
curtosis   <- kurtosis(UltimoAnio, na.rm = TRUE)

valores <- c(minimo, maximo, rango, media, mediana,
             cuartiles[1], cuartiles[3],
             varianza, desviacion, coef_var,
             asimetria, curtosis)

nombres <- c("Mínimo", "Máximo", "Rango", "Media", "Mediana", "Q1", "Q3",
             "Varianza", "Desv. estándar", "Coef. de variación (%)",
             "Asimetría", "Curtosis")

tabla_horizontal <- as.data.frame(t(valores))
colnames(tabla_horizontal) <- nombres

print(tabla_horizontal)
##   Mínimo Máximo Rango    Media Mediana   Q1   Q3 Varianza Desv. estándar
## 1   1589   2013   424 1939.364    1943 1918 1962  1134.67       33.68486
##   Coef. de variación (%)  Asimetría Curtosis
## 1               1.736902 -0.8000225 5.367192
# ---------------- DETECCIÓN DE OUTLIERS ------------------------

IQR_val <- cuartiles[3] - cuartiles[1]
limite_inferior <- cuartiles[1] - 1.5 * IQR_val
limite_superior <- cuartiles[3] + 1.5 * IQR_val

outliers <- UltimoAnio[UltimoAnio < limite_inferior | UltimoAnio > limite_superior]
num_outliers <- length(outliers)
min_outlier <- if (num_outliers > 0) min(outliers) else NA
max_outlier <- if (num_outliers > 0) max(outliers) else NA

Tabla_outliers <- data.frame(
  "Cantidad de outliers" = num_outliers,
  "Valor mínimo de outliers" = min_outlier,
  "Valor máximo de outliers" = max_outlier
)

print(Tabla_outliers)
##   Cantidad.de.outliers Valor.mínimo.de.outliers Valor.máximo.de.outliers
## 1                   52                     1589                     1851

Conclusión

La variable ‘último año de producción’ presenta valores que oscilan entre 1589 y 2013, abarcando un rango temporal de 424 años, lo que refleja la continuidad de la actividad minera desde épocas históricas hasta tiempos recientes. La media es de 1939.36 y la mediana de 1943, evidenciando una ligera asimetría negativa (asimetría = -0.80), asociada a la presencia de yacimientos que finalizaron su producción en fechas tempranas, lo cual desplaza ligeramente la media hacia valores menores.

Los cuartiles Q1 = 1918 y Q3 = 1962 indican que la mayoría de los datos se concentran en un intervalo de 44 años, centrado en el siglo XX, periodo caracterizado por la consolidación industrial, la globalización de mercados y la mayor demanda de recursos minerales. La desviación estándar de 33.68 años muestra una dispersión moderada, mientras que el coeficiente de variación del 1.74% confirma una baja variabilidad relativa con respecto a la media.

Por otro lado, la curtosis elevada (5.37) indica una distribución leptocúrtica, con una alta concentración de valores próximos a la mediana y una presencia no despreciable de valores extremos, especialmente antiguos. En conjunto, estos resultados permiten concluir que la etapa final de explotación de muchos yacimientos se dio de forma masiva entre las décadas de 1920 y 1960, en consonancia con procesos históricos clave como la Segunda Guerra Mundial, el auge industrial y el desarrollo tecnológico de la minería.