1 Carga de Librerías

library(dplyr)
library(gt)

2 Carga de Datos

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

datos_ciudad <- datos %>%
  group_by(CITY) %>%
  summarise(MINAS_EXTRA = first(MINAS_EXTRA)) %>%
  ungroup()

3 Seleccionar Variable

MINAS_EXTRA <- as.numeric(datos_ciudad$MINAS_EXTRA)
MINAS_EXTRA <- na.omit(MINAS_EXTRA)
n <- length(MINAS_EXTRA)
n
## [1] 1347

4 Tabla de Distribución de Frecuencias

tabla_freq <- table(MINAS_EXTRA)

valor <- as.numeric(names(tabla_freq))
ni    <- as.numeric(tabla_freq)
hi    <- round((ni/sum(ni))*100, 2)

TDFgeo <- data.frame(valor, ni, hi)

fila_total <- data.frame(
  valor = "TOTAL",
  ni    = sum(TDFgeo$ni),
  hi    = 100.00
)

TDFgeo_total <- rbind(TDFgeo, fila_total)

tabla_geo <- TDFgeo_total %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1**"),
    subtitle = md("Tabla de distribución de frecuencias de MINAS_EXTRA")
  ) %>%
  cols_label(
    valor = "N° de minas extra",
    ni    = "Frecuencia absoluta",
    hi    = "Frecuencia relativa (%)"
  ) %>%
  tab_source_note(
    source_note = md("Autor: Luis Cruz")
  ) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  )

tabla_geo
Tabla N°1
Tabla de distribución de frecuencias de MINAS_EXTRA
N° de minas extra Frecuencia absoluta Frecuencia relativa (%)
0 570 42.32
1 377 27.99
2 167 12.40
3 105 7.80
4 54 4.01
5 33 2.45
6 16 1.19
7 14 1.04
8 4 0.30
9 4 0.30
10 2 0.15
11 1 0.07
TOTAL 1347 100.00
Autor: Luis Cruz

5 Gráfica de Distribución de Frecuencias

porcentajes_plot <- hi
nombres_plot <- valor

barras <- barplot(
  height = porcentajes_plot,
  names.arg = nombres_plot,
  space = 0.4,
  col = "skyblue",
  border = "black",
  main = "Gráfica N°1: Distribución porcentual del número\nde minas extra por ciudad ",
  xlab = "Número de minas extra",
  ylab = "Porcentaje",
  las = 1,
  ylim = c(0, max(porcentajes_plot) * 1.15),
  cex.names = 0.85
)

# Cuadrícula horizontal (líneas guía)
abline(h = pretty(c(0, max(porcentajes_plot))), col = "gray70", lty = 2, lwd = 0.8)

# Se vuelven a dibujar las barras encima para que la cuadrícula quede detrás
barplot(
  height = porcentajes_plot,
  space = 0.4,
  col = "skyblue",
  border = "black",
  add = TRUE,
  axes = FALSE,
  names.arg = rep("", length(nombres_plot))
)

box()

6 Conjetura del Modelo

Pensemos en la apertura de minas en una ciudad como una secuencia de “intentos” independientes: una vez que una ciudad tiene su primera mina, existe una probabilidad p de que ahí se detenga la expansión (éxito = no se abren más minas) y una probabilidad (1-p) de que se abra una mina adicional (fracaso = la expansión continúa).

MINAS_EXTRA = número de minas adicionales (más allá de la primera) que se siguieron abriendo en esa ciudad antes de que la expansión se detuviera.

Esto es exactamente la definición clásica de la variable Geométrica: número de fracasos antes del primer éxito, en una secuencia de ensayos independientes con probabilidad de éxito constante p. Cada “intento de seguir expandiendo” es independiente de los anteriores (propiedad de falta de memoria), lo cual es razonable si asumimos que la decisión de abrir una mina más no depende de cuántas ya se abrieron antes.

7 Parámetros

p_1 <- 1 / (mean(MINAS_EXTRA) + 1)
p_1
## [1] 0.4420742
valores <- 0:max(MINAS_EXTRA)

8 Sobreposición de la Realidad con el Modelo

Fo_pct_conjetura <- as.numeric(table(factor(MINAS_EXTRA, levels = valores))) / n * 100
Fe_pct_conjetura <- dgeom(valores, p_1) * 100

datos_barras <- rbind(Fo_pct_conjetura, Fe_pct_conjetura)
colnames(datos_barras) <- valores
rownames(datos_barras) <- c("Realidad", "Modelo Geométrico")

barplot(datos_barras,
        beside = TRUE,
        col = c("blue", "red"),
        border = "black",
        ylim = c(0, max(datos_barras) * 1.2),
        main = "Gráfica N°2: Distribución porcentual de\nMINAS_EXTRA",
        xlab = "Número de minas extra",
        ylab = "Probabilidad")

legend("topright",
       legend = c("Realidad", "Modelo geométrico"),
       fill = c("blue", "red"),
       horiz = TRUE,
       bty = "n",
       cex = 0.8)

9 Test de Bondad

Fo_completo <- as.numeric(table(factor(MINAS_EXTRA, levels = 0:max(MINAS_EXTRA))))

Fo_1 <- c(Fo_completo[1:9], sum(Fo_completo[10:length(Fo_completo)]))
Fo_1
##  [1] 570 377 167 105  54  33  16  14   4   7
Fe_1 <- c(dgeom(0:8, p_1) * n, (1 - pgeom(8, p_1)) * n)
Fe_1
##  [1] 595.473909 332.230274 185.359851 103.417048  57.699042  32.191786
##  [7]  17.960629  10.020699   5.590807   7.055955
# Expresar Fo y Fe en porcentaje para comparar
Fo_pct <- (Fo_1/n)*100
Fe_pct <- (Fe_1/n)*100

plot(Fo_pct, Fe_pct,
     xlim = c(0, max(Fo_pct, Fe_pct)),
     ylim = c(0, max(Fo_pct, Fe_pct)),
     main = "Gráfica N°3: Correlación de frecuencias observadas y\nesperadas del modelo Geométrico de minas extra por ciudad",
     xlab = "Frecuencia Observada (%)",
     ylab = "Frecuencia Esperada (%)",
     col  = "blue3",
     pch  = 19)

abline(a = 0, b = 1, col = "red", lwd = 2)

Correlacion_1 <- cor(Fo_pct, Fe_pct)*100
Correlacion_1
## [1] 99.54493
# Chi-cuadrado
grados_libertad_1 <- length(Fo_1) - 1 - 1   # 1 parametro estimado (p)
grados_libertad_1
## [1] 8
nivel_significancia <- 0.95

x2_1 <- sum((Fo_1 - Fe_1)^2 / Fe_1)
x2_1
## [1] 11.47024
umbral_aceptacion_1 <- qchisq(nivel_significancia, grados_libertad_1)
umbral_aceptacion_1
## [1] 15.50731
# Tabla resumen
Variable <- c("Número de minas extra por ciudad")

tabla_resumen_1 <- data.frame(
  Variable,
  round(Correlacion_1, 2),
  round(x2_1, 2),
  round(umbral_aceptacion_1, 2)
)

colnames(tabla_resumen_1) <- c("Variable", "Test Pearson (%)", "Chi Cuadrado", "Umbral de aceptación")

tabla_resumen_1 %>%
  gt() %>%
  tab_header(title = md("**Tabla N°2**"),
             subtitle = md("Resumen del test de bondad de ajuste (modelo Geométrico)")) %>%
  tab_source_note(source_note = md("Autor: Luis Cruz"))
Tabla N°2
Resumen del test de bondad de ajuste (modelo Geométrico)
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Número de minas extra por ciudad 99.54 11.47 15.51
Autor: Luis Cruz

Con Chi² = 11.47 por debajo del umbral de aceptación 15.51 (95% de confianza, gl = 8), el modelo Geométrico se acepta.

10 Cálculo de Probabilidades

¿Cuál es la probabilidad de que una ciudad tenga como máximo 2 minas extra?

Probabilidad_1 <- pgeom(2, p_1) * 100
Probabilidad_1
## [1] 82.63282
x <- 0:max(MINAS_EXTRA)
y <- dgeom(x, p_1)

plot(x, y,
     type = "h",
     lwd = 3,
     col = "skyblue3",
     main = "Gráfica N°4: Cálculo de probabilidades del modelo\nGeométrico de minas extra por ciudad ",
     ylab = "Probabilidad",
     xlab = "Número de minas extra")

x_section <- 0:2
y_section <- dgeom(x_section, p_1)

points(x_section, y_section, pch = 19, col = "red")
segments(x_section, 0, x_section, y_section, col = "red", lwd = 3)

legend("topright",
       legend = c("Modelo Geométrico", "Área de Probabilidad"),
       col = c("skyblue3", "red"),
       lwd = 3,
       cex = 0.7)

texto_prob <- paste0("Probabilidad = ", round(Probabilidad_1, 2), " %")
text(x = max(x) * 0.6, y = max(y) * 0.9,
     labels = texto_prob,
     col = "black",
     cex = 0.8,
     font = 2)

# De 300 ciudades futuras, cuantas tendrian a lo sumo 2 minas extra
cantidad_1 <- pgeom(2, p_1) * 300
cantidad_1
## [1] 247.8984

11 Intervalo de Confianza

x_media <- mean(MINAS_EXTRA)
x_media
## [1] 1.262064
sigma <- sd(MINAS_EXTRA)
sigma
## [1] 1.65719
n_ic <- length(MINAS_EXTRA)
n_ic
## [1] 1347
e <- (sigma/sqrt(n_ic)) * qt(0.975, n_ic - 1)
e
## [1] 0.0885783
li <- x_media - e
li
## [1] 1.173486
ls <- x_media + e
ls
## [1] 1.350642
tabla_media <- data.frame(Intervalo = sprintf("P [%.2f< μ <%.2f] = 95%%", li, ls))

tabla_media %>%
  gt() %>%
  tab_header(title = md("**Tabla N°3**"),
             subtitle = md("Intervalo de confianza de la media poblacional (95%)")) %>%
  tab_source_note(source_note = md("Autor: Luis Cruz")) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  )
Tabla N°3
Intervalo de confianza de la media poblacional (95%)
Intervalo
P [1.17< μ <1.35] = 95%
Autor: Luis Cruz

12 Conclusión

El comportamiento del número de minas extra por ciudad se explica con un modelo Geométrico de parámetro p = 0.4421. Podemos afirmar con un 95% de confianza que la media aritmética real de MINAS_EXTRA se encuentra entre 1.17 y 1.35, y una desviación estándar de 1.66.