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_estado <- data.frame(
  codigo = trimws(as.character(datos$STAT_CODE))
)

# Reemplazar categorias
df_estado$estado <- case_when(
  df_estado$codigo == "A" ~ "Activa",
  df_estado$codigo == "B" ~ "Temp. Inactiva",
  df_estado$codigo == "C" ~ "Cerrada",
  df_estado$codigo == "F" ~ "Inactiva Perm.",
  df_estado$codigo == "1" ~ "Activa Carbon",
  df_estado$codigo == "2" ~ "Temp. Inactiva Carbon",
  df_estado$codigo == "3" ~ "Cerrada Carbon",
  TRUE ~ "Sin registro"
)

# Orden de categorias
orden_estado <- c(
  "Activa", "Temp. Inactiva", "Cerrada", "Inactiva Perm.",
  "Activa Carbon", "Temp. Inactiva Carbon", "Cerrada Carbon",
  "Sin registro"
)

# Convertir en factor
df_estado$estado <- factor(
  df_estado$estado,
  levels = orden_estado
)

2 Tabla de Distribución de Probabilidad

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

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

# Fila TOTAL
fila_total <- data.frame(
  Estado = "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
##                  Estado   ni     hi      P
## 1                Activa 1198 0.3999  39.99
## 2        Temp. Inactiva  202 0.0674   6.74
## 3               Cerrada  277 0.0925   9.25
## 4        Inactiva Perm.   44 0.0147   1.47
## 5         Activa Carbon  688 0.2296  22.96
## 6 Temp. Inactiva Carbon  471 0.1572  15.72
## 7        Cerrada Carbon   42 0.0140   1.40
## 8          Sin registro   74 0.0247   2.47
## 9                 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 estado operativo de las minas 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 = Estado == "TOTAL")
  )
Tabla N° 1
Distribución de probabilidad del estado operativo de las minas en Estados Unidos
Estado ni hi P
Activa 1198 0.3999 39.99
Temp. Inactiva 202 0.0674 6.74
Cerrada 277 0.0925 9.25
Inactiva Perm. 44 0.0147 1.47
Activa Carbon 688 0.2296 22.96
Temp. Inactiva Carbon 471 0.1572 15.72
Cerrada Carbon 42 0.0140 1.40
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$Estado != "TOTAL"])
Hi <- round(cumsum(tabla_final$hi[tabla_final$Estado != "TOTAL"]), 4)
Pi <- round(cumsum(tabla_final$P[tabla_final$Estado != "TOTAL"]), 2)

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

tabla_agrupada
##                  Estado   ni     hi     P   Ni     Hi     Pi
## 1                Activa 1198 0.3999 39.99 1198 0.3999  39.99
## 2        Temp. Inactiva  202 0.0674  6.74 1400 0.4673  46.73
## 3               Cerrada  277 0.0925  9.25 1677 0.5598  55.98
## 4        Inactiva Perm.   44 0.0147  1.47 1721 0.5745  57.45
## 5         Activa Carbon  688 0.2296 22.96 2409 0.8041  80.41
## 6 Temp. Inactiva Carbon  471 0.1572 15.72 2880 0.9613  96.13
## 7        Cerrada Carbon   42 0.0140  1.40 2922 0.9753  97.53
## 8          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 estados operativos")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 4 - Minas")
  )
Tabla N° 2
Distribución acumulada de probabilidad de los estados operativos
Estado ni hi P Ni Hi Pi
Activa 1198 0.3999 39.99 1198 0.3999 39.99
Temp. Inactiva 202 0.0674 6.74 1400 0.4673 46.73
Cerrada 277 0.0925 9.25 1677 0.5598 55.98
Inactiva Perm. 44 0.0147 1.47 1721 0.5745 57.45
Activa Carbon 688 0.2296 22.96 2409 0.8041 80.41
Temp. Inactiva Carbon 471 0.1572 15.72 2880 0.9613 96.13
Cerrada Carbon 42 0.0140 1.40 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 estado\noperativo de las minas en Estados Unidos",
  cex.main  = 0.8,
  xlab      = "",
  ylab      = "Probabilidad (%)",
  col       = "green",
  names.arg = tabla_final$Estado[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$Estado != "TOTAL",
]

# Extraer probabilidad de Activa
prob_activa <- tabla_sin_total$P[
  tabla_sin_total$Estado == "Activa"
]

# 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 se\n",
    "encuentre en estado Activa?\n\n",
    "Probabilidad = ", prob_activa, " (%)"
  ),
  cex = 1.3,
  col = "black",
  font = 2
)

6 Conclusiones

conclusion <- sprintf(
  "El estado operativo de las minas presenta una distribución probabilística heterogénea dentro de las instalaciones analizadas en Estados Unidos. El estado %s registra la mayor probabilidad de ocurrencia, indicando que la mayor parte de las instalaciones registradas se encuentran en ese estado operativo. 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 estados operativos analizados.",
  tabla_final$Estado[which.max(tabla_final$ni[tabla_final$Estado != "TOTAL"])]
)
print(conclusion)
## [1] "El estado operativo de las minas presenta una distribución probabilística heterogénea dentro de las instalaciones analizadas en Estados Unidos. El estado Activa registra la mayor probabilidad de ocurrencia, indicando que la mayor parte de las instalaciones registradas se encuentran en ese estado operativo. 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 estados operativos analizados."