ANÁLISIS ESTADÍSTICO

CARGA DE DATOS Y LIBRERÍAS

CARGA DE DATOS

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

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

ASIGNACION DE VARIABLES

ASIGNACION DE VARIABLES

## ASIGNACION DE VARIABLES

# Limpieza básica
df_modo <- data.frame(
  modo_ocurrencia = trimws(datos$MODO_DE_OCURRENCIA)
)

# Convertir a formato uniforme (Title Case)
df_modo$modo_ocurrencia <- str_to_title(
  df_modo$modo_ocurrencia
)

# Categorías para variable nominal 
categorias_modo <- c(
  "Disseminated",
  "Vein-Hosted",
  "Massive",
  "Fracture-Controlled"
)

# Factor nominal (ordered = FALSE)
df_modo$modo_ocurrencia <- factor(
  df_modo$modo_ocurrencia,
  levels = categorias_modo,
  ordered = FALSE
)

# Ver valores únicos procesados
unique(df_modo$modo_ocurrencia)
## [1] Fracture-Controlled Disseminated        Vein-Hosted        
## [4] Massive            
## Levels: Disseminated Vein-Hosted Massive Fracture-Controlled

TABLA DE DISTRIBUCIÓN DE CANTIDAD

TABLA DE DISTRIBUCION DE CANTIDAD

##  TABLA DE DISTRIBUCIÓN DE CANTIDAD 
# Asignación y ordenación de la variable nominal
df_modo$modo_ocurrencia <- factor(
  df_modo$modo_ocurrencia,
  levels = categorias_modo,
  ordered = FALSE
)

TDF_modo <- df_modo %>%
  count(modo_ocurrencia, name = "ni") %>%
  arrange(modo_ocurrencia)

# Calculamos los porcentajes redondeados
TDF_modo <- TDF_modo %>%
  mutate(hi = round(ni / sum(ni) * 100, 0))

# Ajuste por redondeo:
# la diferencia se le asigna a la categoría con mayor frecuencia
diferencia <- 100 - sum(TDF_modo$hi)

if (diferencia != 0) {

  pos_max <- choosing_row <- which.max(TDF_modo$ni)

  TDF_modo$hi[pos_max] <-
    TDF_modo$hi[pos_max] + diferencia
}

# Tabla N° 1
tabla_modo <- TDF_modo %>%
  gt() %>%
  
  tab_header(
    title = "Tabla N° 1",
    subtitle = "Distribución del Modo de Ocurrencia"
  ) %>%
  
  grand_summary_rows(
    columns = c(ni, hi),
    fns = list(
      Total = ~sum(., na.rm = TRUE)
    ),
    fmt = list(
      ~fmt_number(., decimals = 0)
    )
  )

tabla_modo
Tabla N° 1
Distribución del Modo de Ocurrencia
modo_ocurrencia ni hi
Disseminated 1025 41
Vein-Hosted 725 29
Massive 275 11
Fracture-Controlled 475 19
Total 2,500 100
# Agregamos fila TOTAL
tabla_final_modo <- TDF_modo %>%
  mutate(
    modo_ocurrencia = as.character(modo_ocurrencia)
  )

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

# TABLA ESQUELETO (Tabla Nº2)
tabla_modo_gt <- tabla_final_modo %>%

  gt() %>%

  tab_header(
    title = md("**Tabla Nº2**"),
    subtitle = md("Distribución nominal del modo de ocurrencia")
  ) %>%

  cols_label(
    modo_ocurrencia = "Modo de Ocurrencia",
    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 = modo_ocurrencia == "TOTAL"
    )
  ) %>%

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

tabla_modo_gt
Tabla Nº2
Distribución nominal del modo de ocurrencia
Modo de Ocurrencia Frecuencia Porcentaje (%)
Disseminated 1,025 41
Vein-Hosted 725 29
Massive 275 11
Fracture-Controlled 475 19
TOTAL 2,500 100
Autor: Grupo 2

GRÁFICAS DE DISTRIBUCIÓN DE CANTIDAD

# Ajustar márgenes para nombres largos si se requiere
par(las = 2, mar = c(8, 4, 4, 2))

# Gráfica Nº1: Frecuencia absoluta
barplot(TDF_modo$ni,
        main = "Gráfica Nº1: Distribución de cantidad según el modo de ocurrencia\nen depósitos minerales de Estados Unidos",
        xlab = "",
        ylab = "Cantidad (ni)",
        col = "steelblue",
        names.arg = TDF_modo$modo_ocurrencia,
        cex.names = 0.8)

# Gráfica Nº2: Frecuencia absoluta ajustada
barplot(TDF_modo$ni,
        main = "Gráfica Nº2: Distribución ajustada según el modo de ocurrencia\nen depósitos minerales de Estados Unidos",
        xlab = "",
        ylab = "Cantidad (ni)",
        col = "steelblue",
        names.arg = TDF_modo$modo_ocurrencia,
        cex.names = 0.8,
        ylim = c(0, max(TDF_modo$ni) * 1.2))

# Gráfica Nº3: Frecuencia relativa
barplot(TDF_modo$hi,
        main = "Gráfica Nº3: Porcentaje según el modo de ocurrencia\nen depósitos minerales de Estados Unidos",
        xlab = "",
        ylab = "Porcentaje (%)",
        col = "steelblue",
        names.arg = TDF_modo$modo_ocurrencia,
        cex.names = 0.8)

# Gráfica Nº4: Frecuencia relativa escala completa
barplot(TDF_modo$hi,
        main = "Gráfica Nº4: Porcentaje (0-100%) según el modo de ocurrencia\nen depósitos minerales de Estados Unidos",
        xlab = "",
        ylab = "Porcentaje (%)",
        col = "steelblue",
        names.arg = TDF_modo$modo_ocurrencia,
        cex.names = 0.8,
        ylim = c(0, 100))

# Gráfico circular
par(mar = c(4, 4, 4, 10))

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

pie(TDF_modo$hi,
    col = colores,
    main = "Gráfica Nº5: Distribución porcentual del modo de ocurrencia\nen depósitos minerales de Estados Unidos",
    labels = NA)

legend("right",
       legend = paste(TDF_modo$modo_ocurrencia, TDF_modo$hi, "%"),
       fill = colores,
       title = "MODO DE OCURRENCIA",
       bty = "o",
       xpd = TRUE,
       inset = c(-0.45, 0))

INDICADORES ESTADISTICOS

# Moda
moda_modo <- TDF_modo[TDF_modo$ni == max(TDF_modo$ni), ]
moda_modo
##   modo_ocurrencia   ni hi
## 1    Disseminated 1025 41
# Mediana
TDF_modo <- TDF_modo %>%
  mutate(Ni = cumsum(ni))

N <- sum(TDF_modo$ni)

mediana_modo <- TDF_modo %>%
  filter(Ni >= N/2) %>%
  slice(1)

mediana_modo
##   modo_ocurrencia  ni hi   Ni
## 1     Vein-Hosted 725 29 1750

Conclusión

La variable Modo de Ocurrencia presenta como categoría predominante a la mineralización de tipo Disseminated con un 41% del total de los datos analizados. Al ser una variable cualitativa nomina,lo cual es un factor determinante para seleccionar los métodos de minado masivo y de procesamiento metalúrgico más eficientes.