ANÁLISIS ESTADÍSTICO

CARGA DE DATOS Y LIBRERÍAS

CARGA DE DATOS

library(dplyr)
library(stringr)
library(gt)
library(readxl)

datos <- read.csv("D:/ALTERACIONES EXTRAIDAS.csv")

ASIGNACION DE VARIABLES

ASIGNACION DE VARIABLES

df_material <- data.frame(material = toupper(trimws(datos$CALIFICADOR_MATERIAL)))

df_material$material <- case_when(
  # --- SANO ---
  df_material$material %in% c("SIN ALTERACIÓN") ~ "Sano",
  
  # --- DÉBILMENTE ALTERADO ---
  df_material$material %in% c("ALTERACIÓN LEVE", "SILICIFICACIÓN DÉBIL", 
                               "CLORITIZACIÓN LEVE", "PROPILITIZACIÓN LEVE") ~ "Débilmente alterado",
  
  # --- MODERADAMENTE ALTERADO ---
  df_material$material %in% c("ALTERACIÓN HIDROTERMAL", "ARGILIZACIÓN MODERADA", 
                               "OXIDACIÓN MODERADA", "SILICIFICACIÓN", "ARGILIZACIÓN", 
                               "SERICITIZACIÓN", "CLORITIZACIÓN", "CARBONATIZACIÓN", 
                               "OXIDACIÓN", "PIRITIZACIÓN", "EPIDOTIZACIÓN", "CAOLINIZACIÓN", 
                               "ALBITIZACIÓN", "PROPILITIZACIÓN", "HEMATITITIZACIÓN", 
                               "LIMONITITIZACIÓN", "DOLOMITIZACIÓN") ~ "Moderadamente alterado",
  
  # --- ALTAMENTE ALTERADO ---
  df_material$material %in% c("SERICITIZACIÓN INTENSA", "SILICIFICACIÓN INTENSA", 
                               "SKARNIFICACIÓN") ~ "Altamente alterado",
  
  # --- OTROS (Cualquier categoría no mapeada o celda vacía) ---
  TRUE ~ "Otros"
)

# Definición de orden incluyendo "Otros" al final
orden_material <- c(
  "Sano",
  "Débilmente alterado",
  "Moderadamente alterado",
  "Altamente alterado",
  "Otros"
)

df_material$material <- factor(
  df_material$material,
  levels = orden_material,
  ordered = TRUE
)

TABLA DE DISTRIBUCIÓN DE CANTIDAD

TABLA DE DISTRIBUCION DE CANTIDAD

TDF_material <- df_material %>%
  count(material, name = "ni") %>%
  arrange(material)

# Cálculo inicial de porcentajes
TDF_material <- TDF_material %>%
  mutate(hi = round(ni / sum(ni) * 100, 0))

# Ajuste matemático automático por redondeo para asegurar el 100%
diferencia <- 100 - sum(TDF_material$hi, na.rm = TRUE)
if (diferencia != 0 & nrow(TDF_material) > 0) {
  pos_max <- which.max(TDF_material$ni)
  TDF_material$hi[pos_max] <- TDF_material$hi[pos_max] + diferencia
}

tabla_material <- TDF_material %>%
  gt() %>%
  tab_header(
    title = "Tabla N° 1",
    subtitle = "Distribución del Calificador del Material"
  ) %>%
  grand_summary_rows(
    columns = c(ni, hi),
    fns = list(Total = ~sum(., na.rm = TRUE)),
    fmt = list(~fmt_number(., decimals = 0))
  )

tabla_material
Tabla N° 1
Distribución del Calificador del Material
material ni hi
Sano 347 14
Débilmente alterado 511 20
Moderadamente alterado 1415 57
Altamente alterado 90 4
Otros 137 5
Total 2,500 100
# Agregamos fila TOTAL
tabla_final_material <- TDF_material %>%
  mutate(
    material = as.character(material)
  )

tabla_final_material <- bind_rows(
  tabla_final_material,
  data.frame(
    material = "TOTAL",
    ni = sum(tabla_final_material$ni),
    hi = sum(tabla_final_material$hi)
  )
)

# TABLA ESQUELETO
tabla_material_gt <- tabla_final_material %>%

  gt() %>%

  tab_header(
    title = md("**Tabla Nº2**"),
    subtitle = md("Distribución ordinal de la alteración del material")
  ) %>%

  cols_label(
    material = "Nivel de Alteración",
    ni = "Frecuencia",
    hi = "Porcentaje (%)"
  ) %>%

  cols_align(
    align = "center",
    columns = everything()
  ) %>%

  fmt_number(
    columns = c(ni, hi),
    decimals = 0
  ) %>%

  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = material == "TOTAL"
    )
  ) %>%

  tab_source_note(
    source_note = md("Autor: Grupo 2")
  )

tabla_material_gt
Tabla Nº2
Distribución ordinal de la alteración del material
Nivel de Alteración Frecuencia Porcentaje (%)
Sano 347 14
Débilmente alterado 511 20
Moderadamente alterado 1,415 57
Altamente alterado 90 4
Otros 137 5
TOTAL 2,500 100
Autor: Grupo 2

GRÁFICAS DE DISTRIBUCIÓN DE CANTIDAD

# Se añade margen inferior extra para que los textos verticales no se corten
par(mar = c(8, 4, 4, 2))

# Gráfica Nº1: Frecuencia absoluta
barplot(TDF_material$ni,
        main = "Gráfica Nº1: Distribución de cantidad de las alteraciones 
        en depósitos minerales de Estados Unidos",
        xlab = "", 
        ylab = "Cantidad (ni)",
        col = "steelblue",
        names.arg = TDF_material$material,
        cex.names = 0.75,
        las = 2) # las = 2 vuelve el texto vertical respecto al eje

# Se añade margen inferior extra
par(mar = c(8, 4, 4, 2))

# Gráfica Nº2: Frecuencia absoluta ajustada
barplot(TDF_material$ni,
        main = "Gráfica Nº2: Distribución de cantidad de las alteraciones 
        en depósitos minerales de Estados Unidos",
        xlab = "",
        ylab = "Cantidad (ni)",
        col = "steelblue",
        names.arg = TDF_material$material,
        cex.names = 0.75,
        las = 2,
        ylim = c(0, max(TDF_material$ni) * 1.2))

# Se añade margen inferior extra
par(mar = c(8, 4, 4, 2))

# Gráfica Nº3: Frecuencia relativa
barplot(TDF_material$hi,
        main = "Gráfica Nº3: Distribución de cantidad en porcentaje de las 
    alteraciones en depósitos minerales de Estados Unidos",
        xlab = "",
        ylab = "Porcentaje (%)",
        col = "steelblue",
        names.arg = TDF_material$material,
        cex.names = 0.75,
        las = 2)

# Se añade margen inferior extra
par(mar = c(8, 4, 4, 2))

# Gráfica Nº4: Frecuencia relativa escala completa
barplot(TDF_material$hi,
        main = "Gráfica Nº4: Distribución de cantidad en porcentaje de las 
    alteraciones en depósitos minerales de Estados Unidos",
        xlab = "",
        ylab = "Porcentaje (%)",
        col = "steelblue",
        names.arg = TDF_material$material,
        cex.names = 0.75,
        las = 2,
        ylim = c(0, 100))

# Gráfico circular (Mantiene sus márgenes laterales para la leyenda)
par(mar = c(4, 4, 4, 10))

colores <- rainbow(length(TDF_material$hi))

pie(TDF_material$hi,
    col = colores,
    main = "Gráfica Nº5: Distribución de cantidad en porcentaje de las 
    alteraciones en depósitos minerales de Estados Unidos",
    labels = NA)

legend("right",
       legend = paste(TDF_material$material, TDF_material$hi, "%"),
       fill = colores,
       title = "ALTERACIONES",
       bty = "o",
       xpd = TRUE,
       inset = c(-0.45, 0))

INDICADORES ESTADISTICOS

# Moda
moda_material <- TDF_material[TDF_material$ni == max(TDF_material$ni), ]
moda_material
##                 material   ni hi
## 3 Moderadamente alterado 1415 57
# Mediana
TDF_material <- TDF_material %>%
  mutate(Ni = cumsum(ni))

N <- sum(TDF_material$ni)

mediana_material <- TDF_material %>%
  filter(Ni >= N/2) %>%
  slice(1)

mediana_material
##                 material   ni hi   Ni
## 1 Moderadamente alterado 1415 57 2273

Conclución

#conclucion
"La variable alteraciones presenta niveles que fluctúan entre baja y alta alteración, y sus valores se concentran en materiales moderadamente alterados. Esto resulta favorable para la evaluación minera, debido a que las alteraciones moderadas suelen estar asociadas a procesos hidrotermales vinculados con la formación de yacimientos minerales."
## [1] "La variable alteraciones presenta niveles que fluctúan entre baja y alta alteración, y sus valores se concentran en materiales moderadamente alterados. Esto resulta favorable para la evaluación minera, debido a que las alteraciones moderadas suelen estar asociadas a procesos hidrotermales vinculados con la formación de yacimientos minerales."