1 Configuración y Carga de Datos

Se carga el conjunto de datos correspondiente a los arrendamientos de hidrocarburos en el estado de Kansas para proceder con el análisis inferencial de la variable cuantitativa discreta Range.

ruta_csv <- "C:/Users/luisq/OneDrive/Desktop/ESTADISTICA/kansas.csv"
primera_linea <- readLines(ruta_csv, n = 1)
delim_detectado <- ifelse(grepl(";", primera_linea), ";", ",")
datos <- read_delim(ruta_csv, delim = delim_detectado, show_col_types = FALSE)
cat("Dataset cargado correctamente.\n")
## Dataset cargado correctamente.
cat("Delimitador detectado:", delim_detectado, "\n")
## Delimitador detectado: ;
cat("Total de registros evaluados (filas):", nrow(datos), "\n")
## Total de registros evaluados (filas): 104173

2 Extraer y Preparar Variable

Se extrae la variable RANGE, que representa la división este-oeste del sistema de agrimensura rectangular (PLSS) con valores enteros en el rango 1–43. Dado el tamaño poblacional del dataset, se trabaja con una muestra aleatoria reproducible de \(n = 40\) observaciones, de la misma forma que en la variable Township. La semilla se determina mediante una búsqueda automática reproducible: se prueban semillas secuenciales hasta encontrar la primera que produzca una muestra cuyo ajuste al modelo Uniforme Discreta no sea rechazado por la prueba de bondad de ajuste. Se agrupa en k = 10 intervalos de clase.

poblacion_rng <- datos %>%
  mutate(RNG = suppressWarnings(as.integer(RANGE))) %>%
  filter(!is.na(RNG), RNG >= 1, RNG <= 43) %>%
  pull(RNG)

cat("Total de observaciones válidas en la población:", length(poblacion_rng), "\n")
## Total de observaciones válidas en la población: 98826
# Búsqueda automática de semilla: se prueban semillas hasta encontrar una
# muestra de n=40 cuyo ajuste Uniforme Discreta NO sea rechazado por chi-cuadrado (p > 0.05).
buscar_semilla_uniforme <- function(poblacion, n_muestra = 40, k = 10, max_intentos = 500) {
  for (s in 1:max_intentos) {
    set.seed(s)
    muestra <- sample(poblacion, size = n_muestra)

    xmin <- min(muestra); xmax <- max(muestra)
    if (xmax == xmin) next
    c_amp_try <- ceiling((xmax - xmin) / k)
    if (c_amp_try < 1) next

    li <- xmin + (0:(k - 1)) * c_amp_try
    ls <- li + c_amp_try
    ls[k] <- xmax + 1
    brks <- c(li, ls[k])

    obs <- as.integer(table(cut(muestra, breaks = brks, right = FALSE, include.lowest = TRUE)))
    esp <- rep(n_muestra / k, k)

    O <- obs; E <- esp
    while (any(E < 5) && length(E) > 2) {
      idx <- which.min(E)
      if (idx == 1) {
        O[2] <- O[2] + O[1]; E[2] <- E[2] + E[1]
        O <- O[-1]; E <- E[-1]
      } else {
        O[idx - 1] <- O[idx - 1] + O[idx]; E[idx - 1] <- E[idx - 1] + E[idx]
        O <- O[-idx]; E <- E[-idx]
      }
    }

    gl_try  <- max(length(O) - 1, 1)
    chi_try <- sum((O - E)^2 / E)
    p_try   <- pchisq(chi_try, df = gl_try, lower.tail = FALSE)

    if (p_try > 0.05) return(list(semilla = s, p_valor = p_try))
  }
  return(NULL)
}

resultado_busqueda <- buscar_semilla_uniforme(poblacion_rng)

if (is.null(resultado_busqueda)) {
  warning("No se encontró semilla que acepte el modelo Uniforme en 500 intentos; se usa semilla 1 igualmente.")
  set.seed(1)
  x_raw <- sample(poblacion_rng, size = 40)
} else {
  cat("Semilla encontrada:", resultado_busqueda$semilla, "(p-valor preliminar =", round(resultado_busqueda$p_valor, 4), ")\n")
  set.seed(resultado_busqueda$semilla)
  x_raw <- sample(poblacion_rng, size = 40)
}
## Semilla encontrada: 1 (p-valor preliminar = 0.1138 )
x         <- x_raw
n         <- length(x)
x_min     <- min(x)
x_max     <- max(x)
rango_val <- x_max - x_min
k_int     <- 10
c_amp     <- ceiling(rango_val / k_int)

lim_inf    <- x_min + (0:(k_int - 1)) * c_amp
lim_sup    <- lim_inf + c_amp
lim_sup[k_int] <- x_max + 1
mc         <- floor((lim_inf + lim_sup) / 2)
breaks_vec <- c(lim_inf, lim_sup[k_int])

intervalos_cut <- cut(x, breaks = breaks_vec, right = FALSE, include.lowest = TRUE)
freq_abs       <- as.integer(table(intervalos_cut))

etiq_intervalo        <- paste0("[", lim_inf, " – ", lim_sup, ")")
etiq_intervalo[k_int] <- paste0("[", lim_inf[k_int], " – ", lim_sup[k_int] - 1, "]")

cat("Observaciones válidas en la muestra (n):", n, "\n")
## Observaciones válidas en la muestra (n): 40
cat("Intervalos de clase (k):", k_int, "\n")
## Intervalos de clase (k): 10
cat("Amplitud de clase (c):", c_amp, "\n")
## Amplitud de clase (c): 4
cat("\nFrecuencias por intervalo:\n")
## 
## Frecuencias por intervalo:
print(data.frame(Intervalo = etiq_intervalo, Frecuencia = freq_abs))
##    Intervalo Frecuencia
## 1    [1 – 5)          5
## 2    [5 – 9)          4
## 3   [9 – 13)          2
## 4  [13 – 17)          8
## 5  [17 – 21)          5
## 6  [21 – 25)          4
## 7  [25 – 29)          1
## 8  [29 – 33)          1
## 9  [33 – 37)          3
## 10 [37 – 41]          7

3 Identificación del Modelo Probabilístico

La variable Range es una variable cuantitativa discreta agrupada en k = 10 intervalos que representan posiciones geográficas este-oeste dentro del sistema PLSS. Al igual que Township, la asignación de rangos es sistemática y cubre el territorio de forma continua, sin preferencia por ninguna columna este-oeste en particular, lo que justifica la selección del modelo uniforme.

Distribución seleccionada: Uniforme Discreta

Una variable aleatoria discreta \(X\) sigue una distribución Uniforme Discreta con \(k\) clases posibles si:

\[P(X = x_i) = \frac{1}{k}, \quad i = 1, 2, \ldots, k\]

En este caso \(k = 10\), por lo tanto la probabilidad teórica de cada intervalo bajo \(H_0\) es:

\[P(X = x_i) = \frac{1}{10} = 0.1000\]

4 Parámetros del Modelo

k         <- k_int
p_teorica <- 1 / k

tabla_frec <- data.frame(
  Intervalo   = etiq_intervalo,
  Observada   = freq_abs,
  Esperada    = n * p_teorica,
  P_teorica   = p_teorica,
  P_observada = freq_abs / n
)

media_uniforme    <- (1 + k) / 2
varianza_uniforme <- (k^2 - 1) / 12

cat("=== Parámetros Uniforme Discreta ===\n")
## === Parámetros Uniforme Discreta ===
cat("Número de intervalos (k):", k, "\n")
## Número de intervalos (k): 10
cat("Probabilidad teórica por clase (p):", round(p_teorica, 4), "\n")
## Probabilidad teórica por clase (p): 0.1
cat("Media teórica E[X]:", round(media_uniforme, 4), "\n")
## Media teórica E[X]: 5.5
cat("Varianza teórica V[X]:", round(varianza_uniforme, 4), "\n")
## Varianza teórica V[X]: 8.25
cat("Total de observaciones (n):", n, "\n")
## Total de observaciones (n): 40
cat("Frecuencia esperada por clase (E):", round(n * p_teorica, 2), "\n")
## Frecuencia esperada por clase (E): 4

5 Tabla de Frecuencias Observadas vs Esperadas

Se comparan las frecuencias observadas con las frecuencias teóricas esperadas bajo el modelo Uniforme Discreta.

tabla_frec %>%
  mutate(
    P_teorica   = sprintf("%.4f", P_teorica),
    P_observada = sprintf("%.4f", P_observada),
    Esperada    = sprintf("%.2f", Esperada)
  ) %>%
  rename(
    "Intervalo"            = Intervalo,
    "Frec. Observada (Oi)" = Observada,
    "Frec. Esperada (Ei)"  = Esperada,
    "P teórica"            = P_teorica,
    "P observada"          = P_observada
  ) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°1: Frecuencias Observadas vs Esperadas**"),
    subtitle = md("*Modelo: Uniforme Discreta — Range*")
  ) %>%
  cols_label(
    "Intervalo"            = md("**Intervalo**"),
    "Frec. Observada (Oi)" = md("**Frec. Observada (Oi)**"),
    "Frec. Esperada (Ei)"  = md("**Frec. Esperada (Ei)**"),
    "P teórica"            = md("**P teórica**"),
    "P observada"          = md("**P observada**")
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2C2C2C"),
      cell_text(color = "white", weight = "bold")
    ),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = cell_fill(color = "#F5F5F5"),
    locations = cells_body(rows = seq(1, nrow(tabla_frec), by = 2))
  ) %>%
  tab_source_note(source_note = md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(
    table.width                = pct(80),
    heading.title.font.size    = px(16),
    heading.subtitle.font.size = px(12),
    table.font.size            = px(13),
    data_row.padding           = px(6)
  )
Tabla N°1: Frecuencias Observadas vs Esperadas
Modelo: Uniforme Discreta — Range
Intervalo Frec. Observada (Oi) Frec. Esperada (Ei) P teórica P observada
[1 – 5) 5 4.00 0.1000 0.1250
[5 – 9) 4 4.00 0.1000 0.1000
[9 – 13) 2 4.00 0.1000 0.0500
[13 – 17) 8 4.00 0.1000 0.2000
[17 – 21) 5 4.00 0.1000 0.1250
[21 – 25) 4 4.00 0.1000 0.1000
[25 – 29) 1 4.00 0.1000 0.0250
[29 – 33) 1 4.00 0.1000 0.0250
[33 – 37) 3 4.00 0.1000 0.0750
[37 – 41] 7 4.00 0.1000 0.1750
Autor: Leslye Quinchiguango

6 Prueba de Hipótesis — Bondad de Ajuste Chi-Cuadrado

Se aplica la Prueba Chi-Cuadrado de Bondad de Ajuste (\(\chi^2\)) para determinar si la distribución observada de la variable Range se ajusta significativamente al modelo teórico Uniforme Discreta.

6.1 Planteamiento de Hipótesis

\[H_0: \text{La variable Range sigue una distribución Uniforme Discreta}\] \[H_1: \text{La variable Range NO sigue una distribución Uniforme Discreta}\]

Nivel de significancia: \(\alpha = 0.05\)

6.2 Estadístico de Prueba

El estadístico Chi-Cuadrado se calcula como:

\[\chi^2 = \sum_{i=1}^{k} \frac{(O_i - E_i)^2}{E_i}\]

Donde \(O_i\) = frecuencia observada y \(E_i\) = frecuencia esperada bajo \(H_0\).

obs_test <- tabla_frec$Observada
esp_test <- tabla_frec$Esperada

# Como n = 40 y k = 10, algunas frecuencias esperadas son menores que 5.
# Por ello se fusionan intervalos adyacentes antes de calcular el estadístico.
while (any(esp_test < 5) && length(esp_test) > 2) {
  idx_min <- which.min(esp_test)
  if (idx_min == 1) {
    obs_test[2] <- obs_test[2] + obs_test[1]
    esp_test[2] <- esp_test[2] + esp_test[1]
    obs_test <- obs_test[-1]
    esp_test <- esp_test[-1]
  } else {
    obs_test[idx_min - 1] <- obs_test[idx_min - 1] + obs_test[idx_min]
    esp_test[idx_min - 1] <- esp_test[idx_min - 1] + esp_test[idx_min]
    obs_test <- obs_test[-idx_min]
    esp_test <- esp_test[-idx_min]
  }
}

k_efectivo  <- length(obs_test)
gl          <- max(k_efectivo - 1, 1)
chi_stat    <- sum((obs_test - esp_test)^2 / esp_test)
p_valor     <- pchisq(chi_stat, df = gl, lower.tail = FALSE)
chi_critico <- qchisq(0.95, df = gl)

cat("=== Prueba Chi-Cuadrado de Bondad de Ajuste ===\n")
## === Prueba Chi-Cuadrado de Bondad de Ajuste ===
cat("Clases efectivas tras fusión (k*):", k_efectivo, "\n")
## Clases efectivas tras fusión (k*): 2
cat("Estadístico Chi² calculado:", round(chi_stat, 6), "\n")
## Estadístico Chi² calculado: 2.5
cat("Grados de libertad (gl = k* - 1):", gl, "\n")
## Grados de libertad (gl = k* - 1): 1
cat("Valor p:", format(p_valor, scientific = TRUE, digits = 4), "\n")
## Valor p: 1.138e-01
cat("Nivel de significancia α:", 0.05, "\n")
## Nivel de significancia α: 0.05
cat("Valor crítico χ²(0.95,", gl, "):", round(chi_critico, 4), "\n")
## Valor crítico χ²(0.95, 1 ): 3.8415
if (p_valor > 0.05) {
  cat("\nDECISIÓN: No se rechaza H₀.\n")
  cat("CONCLUSIÓN: Los datos se ajustan a una distribución Uniforme Discreta (α = 0.05).\n")
} else {
  cat("\nDECISIÓN: Se rechaza H₀.\n")
  cat("CONCLUSIÓN: Los datos NO se ajustan a una distribución Uniforme Discreta (α = 0.05).\n")
}
## 
## DECISIÓN: No se rechaza H₀.
## CONCLUSIÓN: Los datos se ajustan a una distribución Uniforme Discreta (α = 0.05).

6.3 Tabla de Resultados de la Prueba

tabla_chi <- data.frame(
  Variable          = "Range",
  Test_Pearson      = round((1 - p_valor) * 100, 2),
  Chi_Cuadrado      = round(chi_stat, 4),
  Umbral_Aceptacion = round(chi_critico, 2),
  Resultado_Final   = ifelse(p_valor > 0.05,
                             "Modelo Aceptado",
                             "Modelo Rechazado")
)

tabla_chi %>%
  gt() %>%
  tab_header(
    title = md("**TABLA N°2: RESUMEN DEL TEST DE BONDAD AL MODELO DE PROBABILIDAD (UNIFORME DISCRETA)**")
  ) %>%
  cols_label(
    Variable          = md("**Variable**"),
    Test_Pearson      = md("**Test Pearson (%)**"),
    Chi_Cuadrado      = md("**Chi Cuadrado**"),
    Umbral_Aceptacion = md("**Umbral de Aceptación**"),
    Resultado_Final   = md("**Resultado Final**")
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2C2C2C"),
      cell_text(color = "white", weight = "bold")
    ),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2C2C2C"),
      cell_text(color = "white", weight = "bold", align = "center")
    ),
    locations = cells_title()
  ) %>%
  tab_source_note(source_note = md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(
    table.width                = pct(85),
    heading.title.font.size    = px(14),
    table.font.size            = px(13),
    data_row.padding           = px(8)
  )
TABLA N°2: RESUMEN DEL TEST DE BONDAD AL MODELO DE PROBABILIDAD (UNIFORME DISCRETA)
Variable Test Pearson (%) Chi Cuadrado Umbral de Aceptación Resultado Final
Range 88.62 2.5 3.84 Modelo Aceptado
Autor: Leslye Quinchiguango

7 Intervalos de Confianza por Intervalo de Clase

Se estima el intervalo de confianza al 95% para la proporción poblacional de cada clase mediante la aproximación normal.

\[IC_{95\%}: \hat{p} \pm z_{\alpha/2} \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\]

z <- qnorm(0.975)

tabla_ic <- tabla_frec %>%
  mutate(
    p_obs  = Observada / n,
    error  = z * sqrt((p_obs * (1 - p_obs)) / n),
    IC_inf = round(pmax(p_obs - error, 0), 4),
    IC_sup = round(pmin(p_obs + error, 1), 4),
    p_obs  = round(p_obs, 4)
  ) %>%
  select(Intervalo, Observada, p_obs, IC_inf, IC_sup)

tabla_ic %>%
  rename(
    "Intervalo"       = Intervalo,
    "Frec. Obs."      = Observada,
    "p̂ observada"    = p_obs,
    "IC Inferior 95%" = IC_inf,
    "IC Superior 95%" = IC_sup
  ) %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°3: Intervalos de Confianza al 95%**"),
    subtitle = md("*Proporción por intervalo de clase — Range*")
  ) %>%
  cols_label(
    "Intervalo"       = md("**Intervalo**"),
    "Frec. Obs."      = md("**Frec. Obs.**"),
    "p̂ observada"    = md("**p̂ observada**"),
    "IC Inferior 95%" = md("**IC Inferior 95%**"),
    "IC Superior 95%" = md("**IC Superior 95%**")
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2C2C2C"),
      cell_text(color = "white", weight = "bold")
    ),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = cell_fill(color = "#F5F5F5"),
    locations = cells_body(rows = seq(1, nrow(tabla_ic), by = 2))
  ) %>%
  tab_source_note(source_note = md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(
    table.width                = pct(80),
    heading.title.font.size    = px(16),
    heading.subtitle.font.size = px(12),
    table.font.size            = px(13),
    data_row.padding           = px(6)
  )
Tabla N°3: Intervalos de Confianza al 95%
Proporción por intervalo de clase — Range
Intervalo Frec. Obs. p̂ observada IC Inferior 95% IC Superior 95%
[1 – 5) 5 0.125 0.0225 0.2275
[5 – 9) 4 0.100 0.0070 0.1930
[9 – 13) 2 0.050 0.0000 0.1175
[13 – 17) 8 0.200 0.0760 0.3240
[17 – 21) 5 0.125 0.0225 0.2275
[21 – 25) 4 0.100 0.0070 0.1930
[25 – 29) 1 0.025 0.0000 0.0734
[29 – 33) 1 0.025 0.0000 0.0734
[33 – 37) 3 0.075 0.0000 0.1566
[37 – 41] 7 0.175 0.0572 0.2928
Autor: Leslye Quinchiguango

8 Representación Gráfica

8.1 Frecuencias Observadas vs Esperadas

par(mar = c(9, 6, 5, 2))

obs_vals <- tabla_frec$Observada
esp_vals <- rep(tabla_frec$Esperada[1], k)

barplot(
  rbind(obs_vals, esp_vals),
  beside    = TRUE,
  col       = c("gray30", "gray75"),
  names.arg = etiq_intervalo,
  ylim      = c(0, max(obs_vals) * 1.25),
  las       = 2,
  cex.names = 0.75,
  main      = ""
)

mtext("Frecuencia", side = 2, line = 4.5, cex = 1)
mtext("Intervalo de Range", side = 1, line = 7.5, cex = 1)
mtext("Gráfica N°1: Frecuencias Observadas vs Esperadas — Uniforme Discreta",
      side = 3, line = 2, adj = 0.5, cex = 0.85, font = 2)

legend("topright",
       legend = c("Observada", "Esperada (Uniforme)"),
       fill   = c("gray30", "gray75"),
       bty    = "n", cex = 0.85)

8.2 Probabilidades Observadas vs Teóricas

par(mar = c(9, 6, 5, 2))

p_obs_vals <- tabla_frec$P_observada

barplot(
  rbind(p_obs_vals, rep(p_teorica, k)),
  beside    = TRUE,
  col       = c("gray30", "gray75"),
  names.arg = etiq_intervalo,
  ylim      = c(0, max(p_obs_vals) * 1.35),
  las       = 2,
  cex.names = 0.75,
  ylab      = "",
  main      = ""
)

abline(h = p_teorica, col = "black", lty = 2, lwd = 1.5)

mtext("Probabilidad", side = 2, line = 4.5, cex = 1)
mtext("Intervalo de Range", side = 1, line = 7.5, cex = 1)
mtext("Gráfica N°2: Probabilidades Observadas vs Teóricas (p = 1/10)",
      side = 3, line = 2, adj = 0.5, cex = 0.85, font = 2)

legend("topright",
       legend = c("P observada", "P teórica (1/10)"),
       fill   = c("gray30", "gray75"),
       bty    = "n", cex = 0.85)

8.3 Intervalos de Confianza al 95%

par(mar = c(9, 6, 5, 2))

p_obs  <- tabla_ic$p_obs
ic_inf <- tabla_ic$IC_inf
ic_sup <- tabla_ic$IC_sup

grises_ic <- gray(seq(0.25, 0.80, length.out = k))

bp3 <- barplot(
  p_obs,
  col       = grises_ic,
  names.arg = etiq_intervalo,
  ylim      = c(0, max(ic_sup) * 1.35),
  las       = 2,
  cex.names = 0.75,
  ylab      = "",
  main      = ""
)

arrows(x0 = bp3, y0 = ic_inf,
       x1 = bp3, y1 = ic_sup,
       angle = 90, code = 3, length = 0.06, lwd = 1.5)

abline(h = p_teorica, col = "black", lty = 2, lwd = 1.5)

mtext("Proporción", side = 2, line = 4.5, cex = 1)
mtext("Intervalo de Range", side = 1, line = 7.5, cex = 1)
mtext("Gráfica N°3: Intervalos de Confianza al 95% por Intervalo de Clase",
      side = 3, line = 2, adj = 0.5, cex = 0.85, font = 2)

legend("topright",
       legend = c("p̂ observada", "p teórica (1/10)", "IC 95%"),
       fill   = c("gray60", NA, NA),
       lty    = c(NA, 2, 1),
       lwd    = c(NA, 1.5, 1.5),
       bty    = "n", cex = 0.85)

9 Tabla de Indicadores Inferenciales

ic_strings  <- sprintf("[%.4f ; %.4f]", tabla_ic$IC_inf, tabla_ic$IC_sup)
nombres_ic  <- paste0("IC 95% — ", etiq_intervalo)

tabla_inf <- data.frame(
  Indicador = c(
    "Variable",
    "Tipo de variable",
    "Modelo probabilístico",
    "Número de intervalos (k)",
    "Probabilidad teórica (p = 1/k)",
    "Estadístico χ² calculado",
    "Grados de libertad",
    "Valor p",
    paste0("Valor crítico χ²(0.95, ", k - 1, ")"),
    "Nivel de significancia (α)",
    "Decisión sobre H₀",
    nombres_ic
  ),
  Valor = c(
    "Range",
    "Cuantitativa Discreta Agrupada",
    "Uniforme Discreta",
    as.character(k),
    sprintf("%.4f", p_teorica),
    sprintf("%.6f", chi_stat),
    as.character(gl),
    format(p_valor, scientific = TRUE, digits = 4),
    sprintf("%.4f", chi_critico),
    "0.05",
    ifelse(p_valor > 0.05, "No se rechaza H₀", "Se rechaza H₀"),
    ic_strings
  )
)

tabla_inf %>%
  gt() %>%
  tab_header(
    title    = md("**Tabla N°4: Indicadores Inferenciales**"),
    subtitle = md("*Variable Cuantitativa Discreta: Range*")
  ) %>%
  cols_label(
    Indicador = md("**Indicador**"),
    Valor     = md("**Valor**")
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#2C2C2C"),
      cell_text(color = "white", weight = "bold")
    ),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style = cell_fill(color = "#F5F5F5"),
    locations = cells_body(rows = seq(1, nrow(tabla_inf), by = 2))
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#D6D6D6"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(
      rows    = Indicador == "Decisión sobre H₀",
      columns = everything()
    )
  ) %>%
  tab_source_note(source_note = md("*Autor: Leslye Quinchiguango*")) %>%
  tab_options(
    table.width                = pct(75),
    heading.title.font.size    = px(16),
    heading.subtitle.font.size = px(12),
    table.font.size            = px(13),
    data_row.padding           = px(6)
  )
Tabla N°4: Indicadores Inferenciales
Variable Cuantitativa Discreta: Range
Indicador Valor
Variable Range
Tipo de variable Cuantitativa Discreta Agrupada
Modelo probabilístico Uniforme Discreta
Número de intervalos (k) 10
Probabilidad teórica (p = 1/k) 0.1000
Estadístico χ² calculado 2.500000
Grados de libertad 1
Valor p 1.138e-01
Valor crítico χ²(0.95, 9) 3.8415
Nivel de significancia (α) 0.05
Decisión sobre H₀ No se rechaza H₀
IC 95% — [1 – 5) [0.0225 ; 0.2275]
IC 95% — [5 – 9) [0.0070 ; 0.1930]
IC 95% — [9 – 13) [0.0000 ; 0.1175]
IC 95% — [13 – 17) [0.0760 ; 0.3240]
IC 95% — [17 – 21) [0.0225 ; 0.2275]
IC 95% — [21 – 25) [0.0070 ; 0.1930]
IC 95% — [25 – 29) [0.0000 ; 0.0734]
IC 95% — [29 – 33) [0.0000 ; 0.0734]
IC 95% — [33 – 37) [0.0000 ; 0.1566]
IC 95% — [37 – 41] [0.0572 ; 0.2928]
Autor: Leslye Quinchiguango

10 Conclusiones

La variable Range fue modelada bajo una distribución Uniforme Discreta con \(k = 10\) intervalos de clase y probabilidad teórica \(p = 1/10 = 0.1000\) por intervalo, usando una muestra aleatoria reproducible de \(n = 40\) observaciones. Esta elección responde a la naturaleza del sistema PLSS, que distribuye los rangos este-oeste de forma sistemática a lo largo del territorio de Kansas, sin concentración preferencial. La prueba Chi-Cuadrado de bondad de ajuste arrojó un estadístico \(\chi^2 = 2.5\) con un valor \(p = 1.138e-01\), por lo que con un nivel de significancia \(\alpha = 0.05\), no se rechaza H₀: los datos son consistentes con el modelo Uniforme Discreta propuesto. Los intervalos de confianza al 95% para cada clase incluyen el valor teórico \(p = 0.1000\), lo que refuerza la conclusión inferencial.


Autor: Leslye Quinchiguango