Carga de Datos y
Librerías
library(dplyr)
library(stringr)
library(gt)
datos <- read.csv("~/Estudio/TERCER SEMESTRE/Estadistica/Dataset.csv",
sep = ";", stringsAsFactors = FALSE)
# Crear variable ordinal
df_fecha <- data.frame(
anio = as.numeric(substr(trimws(as.character(datos$STAT_DATE)), 1, 4))
)
df_fecha <- df_fecha[df_fecha$anio >= 1990 & df_fecha$anio <= 2010, , drop = FALSE]
# Reclasificación ordinal en terciles balanceados
df_fecha$periodo <- case_when(
df_fecha$anio >= 1990 & df_fecha$anio <= 2001 ~ "1990-2001",
df_fecha$anio >= 2002 & df_fecha$anio <= 2004 ~ "2002-2004",
df_fecha$anio >= 2005 & df_fecha$anio <= 2006 ~ "2005-2006",
TRUE ~ NA_character_
)
# Orden lógico
orden_periodo <- c("1990-2001", "2002-2004", "2005-2006")
# Convertir a factor ordenado
df_fecha$periodo <- factor(
df_fecha$periodo,
levels = orden_periodo,
ordered = TRUE
)
Tabla de Distribución
de Probabilidad
ni <- table(df_fecha$periodo)
hi <- round(prop.table(ni), 4)
P <- round(hi * 100, 2)
tabla_finalfecha <- data.frame(
Periodo = names(ni),
ni = as.numeric(ni),
hi = as.numeric(hi),
P = as.numeric(P)
)
# Fila TOTAL
fila_total <- data.frame(
Periodo = "TOTAL",
ni = sum(tabla_finalfecha$ni),
hi = round(sum(tabla_finalfecha$hi), 4),
P = round(sum(tabla_finalfecha$P), 2)
)
tabla_finalfecha <- rbind(
tabla_finalfecha,
fila_total
)
tabla_finalfecha
## Periodo ni hi P
## 1 1990-2001 890 0.3556 35.56
## 2 2002-2004 811 0.3240 32.40
## 3 2005-2006 802 0.3204 32.04
## 4 TOTAL 2503 1.0000 100.00
# Tabla gt
tabla_finalfecha %>%
gt() %>%
tab_header(
title = md("**Tabla N°1**"),
subtitle = md("Distribución ordinal del período de estatuto operativo")
) %>%
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 = Periodo == "TOTAL")
)
| Tabla N°1 |
| Distribución ordinal del período de estatuto operativo |
| Periodo |
ni |
hi |
P |
| 1990-2001 |
890 |
0.3556 |
35.56 |
| 2002-2004 |
811 |
0.3240 |
32.40 |
| 2005-2006 |
802 |
0.3204 |
32.04 |
| TOTAL |
2503 |
1.0000 |
100.00 |
| Autor: Grupo 4 - Minas |
Tabla de Distribución
de Probabilidad Agrupada
# Frecuencias acumuladas (tiene sentido en ordinal, por el orden lógico)
tabla_sin_total_agr <- tabla_finalfecha[tabla_finalfecha$Periodo != "TOTAL", ]
Ni <- cumsum(tabla_sin_total_agr$ni)
Hi <- round(cumsum(tabla_sin_total_agr$hi), 4)
Pi <- round(cumsum(tabla_sin_total_agr$P), 2)
tabla_agrupada <- data.frame(
Periodo = tabla_sin_total_agr$Periodo,
ni = tabla_sin_total_agr$ni,
hi = tabla_sin_total_agr$hi,
P = tabla_sin_total_agr$P,
Ni = Ni,
Hi = Hi,
Pi = Pi
)
tabla_agrupada
## Periodo ni hi P Ni Hi Pi
## 1 1990-2001 890 0.3556 35.56 890 0.3556 35.56
## 2 2002-2004 811 0.3240 32.40 1701 0.6796 67.96
## 3 2005-2006 802 0.3204 32.04 2503 1.0000 100.00
# Tabla agrupada gt
tabla_agrupada %>%
gt() %>%
tab_header(
title = md("**Tabla N°2**"),
subtitle = md("Distribución acumulada de probabilidad del período de estatuto operativo")
) %>%
tab_source_note(
source_note = md("Autor: Grupo 4 - Minas")
)
| Tabla N°2 |
| Distribución acumulada de probabilidad del período de estatuto operativo |
| Periodo |
ni |
hi |
P |
Ni |
Hi |
Pi |
| 1990-2001 |
890 |
0.3556 |
35.56 |
890 |
0.3556 |
35.56 |
| 2002-2004 |
811 |
0.3240 |
32.40 |
1701 |
0.6796 |
67.96 |
| 2005-2006 |
802 |
0.3204 |
32.04 |
2503 |
1.0000 |
100.00 |
| Autor: Grupo 4 - Minas |
Gráficas de
Distribución de Probabilidad
P_global <- tabla_finalfecha$P[
tabla_finalfecha$Periodo != "TOTAL"
]
barplot(
P_global,
main = "Gráfica N°1: Distribución ordinal del período\nde estatuto operativo",
xlab = "Periodo",
ylab = "Probabilidad (%)",
col = "blue",
names.arg = tabla_finalfecha$Periodo[
tabla_finalfecha$Periodo != "TOTAL"
],
ylim = c(0, 100),
las = 1
)

Conjetura del
Modelo
Al dividir el periodo total en terciles balanceados (igual cantidad
de registros por periodo), las frecuencias relativas resultan
prácticamente equiprobables. Esto sugiere un modelo Uniforme
Discreto, donde cada periodo tiene la misma probabilidad
teórica de ocurrencia: P(X = periodo_i) = 1/k
# Tamaño muestral
n <- sum(
tabla_finalfecha$ni[
tabla_finalfecha$Periodo != "TOTAL"
]
)
n
## [1] 2503
# Frecuencias observadas
x <- tabla_finalfecha$ni[
tabla_finalfecha$Periodo != "TOTAL"
]
x
## [1] 890 811 802
# Numero de categorias
K <- length(x)
K
## [1] 3
# Parametro del modelo uniforme discreto
p_uniforme <- 1 / K
p_uniforme
## [1] 0.3333333
# Modelo Uniforme Discreta
P_uniforme <- rep(p_uniforme, K)
P_uniforme
## [1] 0.3333333 0.3333333 0.3333333
# Frecuencias
Fo <- (x / n) * 100
Fo
## [1] 35.55733 32.40112 32.04155
Fe <- P_uniforme * 100
Fe
## [1] 33.33333 33.33333 33.33333
barplot(
rbind(Fo, Fe),
beside = TRUE,
col = c("skyblue", "blue"),
names.arg = tabla_finalfecha$Periodo[
tabla_finalfecha$Periodo != "TOTAL"
],
main = "Gráfica N°2: Comparación entre la realidad\ny el modelo uniforme discreto",
ylab = "Probabilidad (%)",
xlab = "Periodo",
ylim = c(0, 100)
)
legend(
"topright",
legend = c("Real", "Modelo"),
fill = c("skyblue", "blue")
)

Test de Aprobación
plot(
Fo,
Fe,
xlim = c(0, max(Fo)),
ylim = c(0, max(Fo)),
main = "Gráfica N°3: Correlación de frecuencias",
xlab = "Frecuencia observada (%)",
ylab = "Frecuencia esperada (%)",
pch = 19,
col = "darkblue"
)
abline(
a = 0,
b = 1,
col = "red",
lwd = 2
)

gl <- K - 1
gl
## [1] 2
x2 <- sum((Fo - Fe)^2 / Fe)
x2
## [1] 0.2245168
vc <- qchisq(0.99, gl)
vc
## [1] 9.21034
x2 < vc
## [1] TRUE
Variable <- c("Periodo de estatuto operativo")
tabla_resumen <- data.frame(
Variable,
round(x2, 2),
round(vc, 2)
)
colnames(tabla_resumen) <- c(
"Variable",
"Chi Cuadrado",
"Umbral de aceptación"
)
library(knitr)
kable(
tabla_resumen,
format = "markdown",
caption = "Tabla N°3: Resumen de bondad del modelo"
)
Tabla N°3: Resumen de bondad del modelo
| Periodo de estatuto operativo |
0.22 |
9.21 |
Cálculo de
Probabilidades
# Eliminar fila TOTAL
tabla_sin_total <- tabla_finalfecha[
tabla_finalfecha$Periodo != "TOTAL",
]
# Extraer probabilidad de la categoría 2005-2006
prob_reciente <- tabla_sin_total$P[
tabla_sin_total$Periodo == "2005-2006"
]
prob_reciente
## [1] 32.04
# Gráfico explicativo
plot(
1,
type = "n",
axes = FALSE,
xlab = "",
ylab = ""
)
text(
x = 1,
y = 1,
labels = paste(
"Cálculo de probabilidad\n(Estimación general)\n\n",
"¿Qué probabilidad existe de que una instalación\n",
"minera presente un estatuto operativo en el\n",
"periodo 2005-2006?\n\n",
"Probabilidad = ",
prob_reciente,
" (%)",
sep = ""
),
cex = 1.2,
col = "black",
font = 2
)

Conclusión
conclusion <- sprintf(
"La variable periodo de estatuto operativo se explica a través de un modelo Uniforme Discreto, aprobando el test de Chi-cuadrado. El valor calculado de %.4f es considerablemente menor al valor crítico de %.2f (alpha=0.01), por lo que se acepta la hipótesis de ajuste del modelo. Al dividir el rango temporal completo (1990-2006) en tres periodos balanceados con igual cantidad de registros, cada periodo presenta una probabilidad teórica equiprobable de %.2f%%, lo cual se confirma con las frecuencias observadas reales del dataset MSHA. Esto indica que, al segmentar el periodo de estatuto de forma equilibrada, no existe un periodo que concentre desproporcionadamente los registros frente a los demás. Por ejemplo, la probabilidad de que una instalación minera presente su estatuto operativo en el periodo 2005-2006 es del %.2f%%.",
x2, vc, p_uniforme*100, prob_reciente
)
print(conclusion)
## [1] "La variable periodo de estatuto operativo se explica a través de un modelo Uniforme Discreto, aprobando el test de Chi-cuadrado. El valor calculado de 0.2245 es considerablemente menor al valor crítico de 9.21 (alpha=0.01), por lo que se acepta la hipótesis de ajuste del modelo. Al dividir el rango temporal completo (1990-2006) en tres periodos balanceados con igual cantidad de registros, cada periodo presenta una probabilidad teórica equiprobable de 33.33%, lo cual se confirma con las frecuencias observadas reales del dataset MSHA. Esto indica que, al segmentar el periodo de estatuto de forma equilibrada, no existe un periodo que concentre desproporcionadamente los registros frente a los demás. Por ejemplo, la probabilidad de que una instalación minera presente su estatuto operativo en el periodo 2005-2006 es del 32.04%."