1 Carga de Datos y Librerías

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

datos <- read.csv("~/Estudio/TERCER SEMESTRE/Estadistica/Dataset.csv",
                   sep = ";", stringsAsFactors = FALSE)

cat("Datos cargados correctamente\n")
## Datos cargados correctamente
cat("Numero de observaciones:", nrow(datos), "\n")
## Numero de observaciones: 2996
# Extraer variable
df_tipo <- data.frame(
  codigo = trimws(as.character(datos$MINE_TYPE))
)

# Reemplazar categorias
df_tipo$tipo <- case_when(
  df_tipo$codigo == "1"  ~ "Underground",
  df_tipo$codigo == "2"  ~ "Surface",
  df_tipo$codigo == "3"  ~ "Strip",
  df_tipo$codigo == "4"  ~ "Auger",
  df_tipo$codigo == "5"  ~ "Culm/Refuse",
  df_tipo$codigo == "6"  ~ "Dredge",
  df_tipo$codigo == "10" ~ "In Situ",
  df_tipo$codigo == "11" ~ "Mill/Prep Plant",
  df_tipo$codigo == "12" ~ "Shops/Yards",
  TRUE ~ "Sin registro"
)

# Orden de categorias
orden_tipo <- c(
  "Underground", "Surface", "Strip", "Auger",
  "Culm/Refuse", "Dredge", "In Situ",
  "Mill/Prep Plant", "Shops/Yards", "Sin registro"
)

# Convertir en factor
df_tipo$tipo <- factor(
  df_tipo$tipo,
  levels = orden_tipo
)

2 Tabla de Distribución de Probabilidad

# Frecuencias y probabilidades
ni <- table(df_tipo$tipo)
hi <- round(prop.table(ni), 4)
P  <- round(hi * 100, 2)

# Crear tabla base
tabla_final <- data.frame(
  Tipo = names(ni),
  ni   = as.numeric(ni),
  hi   = as.numeric(hi),
  P    = as.numeric(P)
)

# Fila TOTAL
fila_total <- data.frame(
  Tipo = "TOTAL",
  ni   = sum(tabla_final$ni),
  hi   = round(sum(tabla_final$hi), 4),
  P    = round(sum(tabla_final$P), 2)
)

# Agregar TOTAL
tabla_final <- rbind(
  tabla_final,
  fila_total
)

tabla_final
##               Tipo   ni     hi      P
## 1      Underground   69 0.0230   2.30
## 2          Surface   19 0.0063   0.63
## 3            Strip    4 0.0013   0.13
## 4            Auger  104 0.0347   3.47
## 5      Culm/Refuse  366 0.1222  12.22
## 6           Dredge  634 0.2116  21.16
## 7          In Situ    5 0.0017   0.17
## 8  Mill/Prep Plant  757 0.2527  25.27
## 9      Shops/Yards  964 0.3218  32.18
## 10    Sin registro   74 0.0247   2.47
## 11           TOTAL 2996 1.0000 100.00
# Tabla gt
tabla_final %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N° 1**"),
    subtitle = md("Distribución de probabilidad del tipo de mina en Estados Unidos")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 4 - Minas")
  ) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black",
    row.striping.include_table_body = TRUE
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = Tipo == "TOTAL")
  )
Tabla N° 1
Distribución de probabilidad del tipo de mina en Estados Unidos
Tipo ni hi P
Underground 69 0.0230 2.30
Surface 19 0.0063 0.63
Strip 4 0.0013 0.13
Auger 104 0.0347 3.47
Culm/Refuse 366 0.1222 12.22
Dredge 634 0.2116 21.16
In Situ 5 0.0017 0.17
Mill/Prep Plant 757 0.2527 25.27
Shops/Yards 964 0.3218 32.18
Sin registro 74 0.0247 2.47
TOTAL 2996 1.0000 100.00
Autor: Grupo 4 - Minas

3 Tabla de Distribución de Probabilidad Agrupada

# Frecuencias acumuladas
Ni <- cumsum(tabla_final$ni[tabla_final$Tipo != "TOTAL"])
Hi <- round(cumsum(tabla_final$hi[tabla_final$Tipo != "TOTAL"]), 4)
Pi <- round(cumsum(tabla_final$P[tabla_final$Tipo != "TOTAL"]), 2)

# Tabla agrupada
tabla_agrupada <- data.frame(
  Tipo = tabla_final$Tipo[tabla_final$Tipo != "TOTAL"],
  ni   = tabla_final$ni[tabla_final$Tipo != "TOTAL"],
  hi   = tabla_final$hi[tabla_final$Tipo != "TOTAL"],
  P    = tabla_final$P[tabla_final$Tipo != "TOTAL"],
  Ni   = Ni,
  Hi   = Hi,
  Pi   = Pi
)

tabla_agrupada
##               Tipo  ni     hi     P   Ni     Hi     Pi
## 1      Underground  69 0.0230  2.30   69 0.0230   2.30
## 2          Surface  19 0.0063  0.63   88 0.0293   2.93
## 3            Strip   4 0.0013  0.13   92 0.0306   3.06
## 4            Auger 104 0.0347  3.47  196 0.0653   6.53
## 5      Culm/Refuse 366 0.1222 12.22  562 0.1875  18.75
## 6           Dredge 634 0.2116 21.16 1196 0.3991  39.91
## 7          In Situ   5 0.0017  0.17 1201 0.4008  40.08
## 8  Mill/Prep Plant 757 0.2527 25.27 1958 0.6535  65.35
## 9      Shops/Yards 964 0.3218 32.18 2922 0.9753  97.53
## 10    Sin registro  74 0.0247  2.47 2996 1.0000 100.00
# Tabla agrupada gt
tabla_agrupada %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N° 2**"),
    subtitle = md("Distribución acumulada de probabilidad de los tipos de mina")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 4 - Minas")
  )
Tabla N° 2
Distribución acumulada de probabilidad de los tipos de mina
Tipo ni hi P Ni Hi Pi
Underground 69 0.0230 2.30 69 0.0230 2.30
Surface 19 0.0063 0.63 88 0.0293 2.93
Strip 4 0.0013 0.13 92 0.0306 3.06
Auger 104 0.0347 3.47 196 0.0653 6.53
Culm/Refuse 366 0.1222 12.22 562 0.1875 18.75
Dredge 634 0.2116 21.16 1196 0.3991 39.91
In Situ 5 0.0017 0.17 1201 0.4008 40.08
Mill/Prep Plant 757 0.2527 25.27 1958 0.6535 65.35
Shops/Yards 964 0.3218 32.18 2922 0.9753 97.53
Sin registro 74 0.0247 2.47 2996 1.0000 100.00
Autor: Grupo 4 - Minas

4 Gráficas de Distribución de Probabilidad

# Extraer probabilidades sin TOTAL
P_global <- as.numeric(
  tabla_final$P[1:(nrow(tabla_final)-1)]
)

# Gráfico de barras
par(mar = c(8, 5, 4, 2))
barplot(
  P_global,
  main      = "Gráfica N°1: Distribución de probabilidad del\ntipo de mina en Estados Unidos",
  cex.main  = 0.8,
  xlab      = "",
  ylab      = "Probabilidad (%)",
  col       = "green",
  names.arg = tabla_final$Tipo[1:(nrow(tabla_final)-1)],
  cex.names = 0.8,
  ylim      = c(0, 100),
  las       = 2
)

5 Cálculo de Probabilidad

# Eliminar fila TOTAL
tabla_sin_total <- tabla_final[
  tabla_final$Tipo != "TOTAL",
]

# Extraer probabilidad de Mill/Prep Plant
prob_mill <- tabla_sin_total$P[
  tabla_sin_total$Tipo == "Mill/Prep Plant"
]

# Gráfico explicativo
plot(
  1,
  type = "n",
  axes = FALSE,
  xlab = "",
  ylab = ""
)
text(
  x = 1,
  y = 1,
  labels = paste0(
    "Cálculo de probabilidad\n(Estimación general)\n\n",
    "¿Qué probabilidad existe de que una instalación\n",
    "minera registrada en Estados Unidos sea del\n",
    "tipo Mill/Prep Plant?\n\n",
    "Probabilidad = ", prob_mill, " (%)"
  ),
  cex = 1.3,
  col = "black",
  font = 2
)

6 Conclusiones

conclusion <- sprintf(
  "El tipo de mina presenta una distribución probabilística heterogénea dentro de las instalaciones analizadas en Estados Unidos. El tipo %s registra una de las mayores probabilidades de ocurrencia, reflejando su amplio uso en la actividad minera nacional. La distribución acumulada permite observar el comportamiento progresivo de las probabilidades entre categorías, mientras que las gráficas evidencian diferencias importantes entre los tipos de mina analizados.",
  tabla_final$Tipo[which.max(tabla_final$ni[tabla_final$Tipo != "TOTAL"])]
)
print(conclusion)
## [1] "El tipo de mina presenta una distribución probabilística heterogénea dentro de las instalaciones analizadas en Estados Unidos. El tipo Shops/Yards registra una de las mayores probabilidades de ocurrencia, reflejando su amplio uso en la actividad minera nacional. La distribución acumulada permite observar el comportamiento progresivo de las probabilidades entre categorías, mientras que las gráficas evidencian diferencias importantes entre los tipos de mina analizados."