Variable Cuantitativa Discreta - Experiencia en Mina La variable MINE_EXPER representa el tiempo laborado específicamente en la mina actual del empleado. Esta variable permite analizar la relación entre la experiencia específica en el lugar de trabajo y la probabilidad de accidentes, identificando si los trabajadores menos experimentados están más expuestos a riesgos.
En esta sección se limpia el entorno de trabajo, se cargan las librerías necesarias y se importa el dataset desde un archivo Excel. Además se extrae y prepara la variable MINE_EXPER para el análisis.
# Limpiar entorno
rm(list = ls())
# Cargar librerías
if (!require("readxl")) install.packages("readxl")
if (!require("dplyr")) install.packages("dplyr")
if (!require("knitr")) install.packages("knitr")
if (!require("moments")) install.packages("moments")
library(readxl)
library(dplyr)
library(knitr)
library(moments)
# Cargar datos
ruta <- "C:/Users/klaus/Downloads/5000_Datos.xlsx"
datos <- read_excel(ruta)
cat("✓ Datos cargados exitosamente\n")
## ✓ Datos cargados exitosamente
cat("✓ Dimensiones:", nrow(datos), "observaciones\n")
## ✓ Dimensiones: 4945 observaciones
# Extraer y limpiar variable
if("MINE_EXPER" %in% names(datos)) {
cat("✓ Variable encontrada como: MINE_EXPER\n")
MINE_EXPER_raw <- datos$MINE_EXPER
} else if("EXPERTO_MINA" %in% names(datos)) {
cat("✓ Variable encontrada como: EXPERTO_MINA\n")
MINE_EXPER_raw <- datos$EXPERTO_MINA
} else {
# Buscar cualquier columna que contenga "MINE" o "EXPER"
columnas_relevantes <- grep("MINE|EXPER", names(datos), value = TRUE, ignore.case = TRUE)
if(length(columnas_relevantes) > 0) {
cat("✓ Variable encontrada como:", columnas_relevantes[1], "\n")
MINE_EXPER_raw <- datos[[columnas_relevantes[1]]]
} else {
stop("Variable MINE_EXPER no encontrada en el dataset")
}
}
## ✓ Variable encontrada como: MINE_EXPER
# Convertir a numérico y limpiar
MINE_EXPER <- as.numeric(MINE_EXPER_raw)
MINE_EXPER <- MINE_EXPER[!is.na(MINE_EXPER)]
MINE_EXPER <- MINE_EXPER[MINE_EXPER != 0]
MINE_EXPER <- MINE_EXPER[MINE_EXPER >= 0] # Según la tabla, valores de 0 a 40
# Tamaño muestral
n <- length(MINE_EXPER)
cat("✓ Datos válidos para análisis:", n, "observaciones\n")
## ✓ Datos válidos para análisis: 4253 observaciones
Método estadístico para determinar el número óptimo de intervalos (clases) al construir una tabla de frecuencias agrupadas o un histograma.
Se calculan el número óptimo de intervalos y su amplitud.
# Parámetros de Sturges
R <- max(MINE_EXPER) - min(MINE_EXPER)
k <- floor(1 + 3.3 * log10(n))
A <- R / k
# Crear tabla de parámetros
parametros_sturges <- data.frame(
Parámetro = c("Rango (R)",
"Número de datos (n)",
"Fórmula de k",
"Número de intervalos (k)",
"Amplitud de clase (A)"),
Cálculo = c(
paste("max(MINE_EXPER) - min(MINE_EXPER) =", round(max(MINE_EXPER), 4), "-", round(min(MINE_EXPER), 4)),
paste("n =", n),
paste("1 + 3.3 × log₁₀(", n, ")"),
paste("floor(", round(1 + 3.3 * log10(n), 4), ") =", k),
paste("R / k =", round(R, 4), "/", k, "=", round(A, 4))
),
Valor = c(
paste(round(R, 4), "años"),
n,
round(1 + 3.3 * log10(n), 4),
k,
paste(round(A, 4), "años")
),
Unidad = c("años", "datos", "", "intervalos", "años/int.")
)
kable(parametros_sturges,
caption = "Tabla 1: Parámetros de la Regla de Sturges",
align = "l")
| Parámetro | Cálculo | Valor | Unidad |
|---|---|---|---|
| Rango (R) | max(MINE_EXPER) - min(MINE_EXPER) = 58 - 0.02 | 57.98 años | años |
| Número de datos (n) | n = 4253 | 4253 | datos |
| Fórmula de k | 1 + 3.3 × log₁₀( 4253 ) | 12.9747 | |
| Número de intervalos (k) | floor( 12.9747 ) = 12 | 12 | intervalos |
| Amplitud de clase (A) | R / k = 57.98 / 12 = 4.8317 | 4.8317 años | años/int. |
# Definir límites de clase según Sturges
Li <- seq(min(MINE_EXPER), max(MINE_EXPER) - A, by = A)
Ls <- seq(min(MINE_EXPER) + A, max(MINE_EXPER), by = A)
# Ajustar si es necesario
if(length(Ls) < length(Li)) {
Ls <- c(Ls, max(MINE_EXPER))
}
k <- min(k, length(Li)) # Asegurar que k no sea mayor que el número de intervalos
MC <- (Li[1:k] + Ls[1:k]) / 2
cat("**LÍMITES DE LOS INTERVALOS:**\n\n")
## **LÍMITES DE LOS INTERVALOS:**
cat(sprintf("• Límite inferior inicial: min(MINE_EXPER) = %.4f años\n", round(min(MINE_EXPER), 4)))
## • Límite inferior inicial: min(MINE_EXPER) = 0.0200 años
cat(sprintf("• Límite superior final: max(MINE_EXPER) = %.4f años\n", round(max(MINE_EXPER), 4)))
## • Límite superior final: max(MINE_EXPER) = 58.0000 años
cat(sprintf("• Amplitud constante: A = %.4f años\n", round(A, 4)))
## • Amplitud constante: A = 4.8317 años
cat(sprintf("• Número de clases: k = %d\n", k))
## • Número de clases: k = 12
Se cuenta cuántos valores caen en cada intervalo.
# Calcular frecuencias absolutas
ni <- numeric(k)
for (i in 1:k) {
if (i == k) {
ni[i] <- sum(MINE_EXPER >= Li[i] & MINE_EXPER <= Ls[i])
} else {
ni[i] <- sum(MINE_EXPER >= Li[i] & MINE_EXPER < Ls[i])
}
}
# Calcular frecuencias relativas y acumuladas
hi <- round((ni / n) * 100, 2)
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi), 2)
Hidsc <- round(rev(cumsum(rev(hi))), 2)
# Crear tabla de distribución de frecuencias
TDF <- data.frame(
Clase = 1:k,
"Lím. Inf." = round(Li[1:k], 2),
"Lím. Sup." = round(Ls[1:k], 2),
"Marca Clase" = round(MC, 2),
"ni" = ni,
"hi (%)" = hi,
"Ni ↑" = Niasc,
"Ni ↓" = Nidsc,
"Hi ↑ (%)" = Hiasc,
"Hi ↓ (%)" = Hidsc
)
# Mostrar tabla con kable
kable(TDF,
caption = "Tabla 2: Distribución de frecuencias de la variable Experiencia en Mina (MINE_EXPER) - Regla de Sturges",
align = "c")
| Clase | Lím..Inf. | Lím..Sup. | Marca.Clase | ni | hi…. | Ni.. | Ni…1 | Hi…… | Hi…….1 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0.02 | 4.85 | 2.44 | 2691 | 63.27 | 2691 | 4252 | 63.27 | 99.98 |
| 2 | 4.85 | 9.68 | 7.27 | 641 | 15.07 | 3332 | 1561 | 78.34 | 36.71 |
| 3 | 9.68 | 14.51 | 12.10 | 369 | 8.68 | 3701 | 920 | 87.02 | 21.64 |
| 4 | 14.51 | 19.35 | 16.93 | 176 | 4.14 | 3877 | 551 | 91.16 | 12.96 |
| 5 | 19.35 | 24.18 | 21.76 | 100 | 2.35 | 3977 | 375 | 93.51 | 8.82 |
| 6 | 24.18 | 29.01 | 26.59 | 113 | 2.66 | 4090 | 275 | 96.17 | 6.47 |
| 7 | 29.01 | 33.84 | 31.43 | 82 | 1.93 | 4172 | 162 | 98.10 | 3.81 |
| 8 | 33.84 | 38.67 | 36.26 | 54 | 1.27 | 4226 | 80 | 99.37 | 1.88 |
| 9 | 38.67 | 43.50 | 41.09 | 23 | 0.54 | 4249 | 26 | 99.91 | 0.61 |
| 10 | 43.50 | 48.34 | 45.92 | 2 | 0.05 | 4251 | 3 | 99.96 | 0.07 |
| 11 | 48.34 | 53.17 | 50.75 | 1 | 0.02 | 4252 | 1 | 99.98 | 0.02 |
| 12 | 53.17 | 58.00 | 55.58 | 0 | 0.00 | 4252 | 0 | 99.98 | 0.00 |
Generamos diagramas de barras tanto Global como Local para las frecuencias absolutas para visualizar el conteo de ocurrencias de los valores de la variable.
Histograma de Frecuencia Absoluta Local
# Calcular media y mediana para usar en abline()
media_local <- mean(MINE_EXPER)
mediana_local <- median(MINE_EXPER)
hist(
MINE_EXPER,
breaks = seq(min(MINE_EXPER), max(MINE_EXPER) + A, A),
right = FALSE,
main = "Gráfica 1: Histograma de Frecuencias Absolutas Locales",
xlab = "Experiencia en Mina (años)",
ylab = "Frecuencia Absoluta (ni)",
col = "steelblue",
border = "white"
)
# Añadir líneas de media y mediana (usando variables locales)
abline(v = media_local, col = "red", lwd = 2, lty = 2)
abline(v = mediana_local, col = "blue", lwd = 2, lty = 2)
legend("topright",
legend = c(paste("Media =", round(media_local, 2)),
paste("Mediana =", round(mediana_local, 2))),
col = c("red", "blue"),
lty = 2,
lwd = 2,
bty = "n")
Histograma de Frecuencia Absoluta Global
media_global <- mean(MINE_EXPER)
mediana_global <- median(MINE_EXPER)
hist(
MINE_EXPER,
breaks = seq(min(MINE_EXPER), max(MINE_EXPER) + A, A),
right = FALSE,
main = "Gráfica 2: Histograma de Frecuencias Absolutas Globales",
xlab = "Experiencia en Mina (años)",
ylab = "Frecuencia Absoluta (ni)",
col = "lightcoral",
ylim = c(0, max(ni) + 5),
border = "white"
)
# Añadir líneas de media y mediana
abline(v = media_global, col = "red", lwd = 2, lty = 2)
abline(v = mediana_global, col = "blue", lwd = 2, lty = 2)
legend("topright",
legend = c(paste("Media =", round(media_global, 2)),
paste("Mediana =", round(mediana_global, 2))),
col = c("red", "blue"),
lty = 2,
lwd = 2,
bty = "n")
Histograma de Frecuencia Relativa Local
# Calcular media y mediana para posicionar las líneas
media_rel_local <- mean(MINE_EXPER)
mediana_rel_local <- median(MINE_EXPER)
intervalos <- paste(round(Li[1:k], 2), round(Ls[1:k], 2), sep = " - ")
# Calcular posición de las líneas en el barplot
pos_media_bar <- (media_rel_local - min(Li[1:k])) / A * 1
pos_mediana_bar <- (mediana_rel_local - min(Li[1:k])) / A * 1
barplot(
hi,
names.arg = intervalos,
col= "darkorange",
ylim = c(0, max(hi) + 5),
space = 0,
cex.names = 0.7,
ylab = "Frecuencia Relativa (%)",
xlab = "Intervalos de Experiencia en Mina (años)",
main = "Gráfica 3: Histograma de Frecuencias Relativas Locales",
las = 2,
border = "white"
)
# Añadir líneas verticales de media y mediana
abline(v = pos_media_bar, col = "red", lwd = 2, lty = 2)
abline(v = pos_mediana_bar, col = "blue", lwd = 2, lty = 2)
# Añadir leyenda
legend("topright",
legend = c(paste("Media =", round(media_rel_local, 2)),
paste("Mediana =", round(mediana_rel_local, 2))),
col = c("red", "blue"),
lty = 2,
lwd = 2,
bty = "n")
Histograma de Frecuencia Relativa Global
# Calcular media y mediana
media_rel_global <- mean(MINE_EXPER)
mediana_rel_global <- median(MINE_EXPER)
# Calcular posición de las líneas en el barplot
pos_media_bar_global <- (media_rel_global - min(Li[1:k])) / A * 1
pos_mediana_bar_global <- (mediana_rel_global - min(Li[1:k])) / A * 1
barplot(
hi,
names.arg = intervalos,
col = "mediumpurple",
ylim = c(0, 100),
cex.names = 0.7,
space = 0,
ylab = "Frecuencia Relativa (%)",
xlab = "Intervalos de Experiencia en Mina (años)",
main = "Gráfica 4: Histograma de Frecuencias Relativas Globales",
las = 2,
border = "white"
)
# Añadir líneas verticales de media y mediana
abline(v = pos_media_bar_global, col = "red", lwd = 2, lty = 2)
abline(v = pos_mediana_bar_global, col = "blue", lwd = 2, lty = 2)
# Añadir leyenda
legend("topright",
legend = c(paste("Media =", round(media_rel_global, 2)),
paste("Mediana =", round(mediana_rel_global, 2))),
col = c("red", "blue"),
lty = 2,
lwd = 2,
bty = "n")
Adicionalmente, generamos las ojivas que nos representa las frecuencias acumuladas y, de igual manera, el intercepto de las gráficas de la ojiva ascendente y la descendente.
Ojiva Absoluta (Ni)
plot(Ls[1:k], Niasc,
type = "o",
pch = 16,
col = "blue",
main = "Gráfica 5: Ojiva de Frecuencias Absolutas",
xlab = "Experiencia en Mina (años)",
ylab = "Frecuencia Acumulada Absoluta (Ni)")
lines(Ls[1:k], Nidsc,
type = "o",
pch = 16,
col = "red")
legend("topleft",
c("Ni Ascendente", "Ni Descendente"),
col = c("blue", "red"),
pch = 16)
Ojiva Relativa (Hi)
plot(Ls[1:k], Hiasc,
type = "o",
pch = 16,
col = "blue",
main = "Gráfica 6: Ojiva de Frecuencias Relativas",
xlab = "Experiencia en Mina (años)",
ylab = "Frecuencia Acumulada Relativa (%)")
lines(Ls[1:k], Hidsc,
type = "o",
pch = 16,
col = "red")
legend("bottomright",
c("Hi Ascendente", "Hi Descendente"),
col = c("blue", "red"),
pch = 16)
# Calcular todas las variables necesarias para el boxplot
media_box <- mean(MINE_EXPER)
mediana_box <- median(MINE_EXPER)
Q1_box <- quantile(MINE_EXPER, 0.25)
Q3_box <- quantile(MINE_EXPER, 0.75)
IQR_box <- IQR(MINE_EXPER)
# Calcular outliers
lim_inf_outlier_box <- Q1_box - 1.5 * IQR_box
lim_sup_outlier_box <- Q3_box + 1.5 * IQR_box
outliers_box <- MINE_EXPER[MINE_EXPER < lim_inf_outlier_box | MINE_EXPER > lim_sup_outlier_box]
n_outliers_box <- length(outliers_box)
boxplot(MINE_EXPER,
horizontal = TRUE,
col = "lightblue",
main = "Gráfica 7: Diagrama de Caja - Variable MINE_EXPER",
xlab = "Experiencia en Mina (años)",
ylab = "",
border = "darkblue")
# Añadir estadísticos importantes (usando variables locales)
points(media_box, 1, pch = 23, bg = "red", cex = 1.2)
legend("topright",
legend = c(paste("Media:", round(media_box, 2)),
paste("Mediana:", round(mediana_box, 2)),
paste("Q1:", round(Q1_box, 2)),
paste("Q3:", round(Q3_box, 2)),
paste("Outliers:", n_outliers_box)),
bty = "n",
cex = 0.8)
Son valores numéricos que resumen, describen y analizan características de un conjunto de datos. Permiten simplificar y entender grandes volúmenes de información de manera más eficiente.
Son medidas estadísticas que identifican el valor central o típico de un conjunto de datos.
# Calcular indicadores de tendencia central
minimo <- min(MINE_EXPER)
maximo <- max(MINE_EXPER)
rango <- maximo - minimo
media <- mean(MINE_EXPER)
mediana <- median(MINE_EXPER)
moda <- as.numeric(names(sort(table(MINE_EXPER), decreasing = TRUE)[1]))
# Crear tabla
tendencia_central <- data.frame(
Indicador = c("Mínimo", "Media", "Mediana", "Moda", "Máximo", "Rango"),
Valor = c(
round(minimo, 4),
round(media, 4),
round(mediana, 4),
round(moda, 4),
round(maximo, 4),
round(rango, 4)
),
Unidad = rep("años", 6),
Interpretación = c(
"Valor mínimo observado",
"Promedio de todos los valores",
"Valor que divide la muestra en dos partes iguales",
"Valor más frecuente en la muestra",
"Valor máximo observado",
"Diferencia entre el máximo y el mínimo"
)
)
kable(tendencia_central,
caption = "Tabla 3: Indicadores de Tendencia Central",
align = "l")
| Indicador | Valor | Unidad | Interpretación |
|---|---|---|---|
| Mínimo | 0.0200 | años | Valor mínimo observado |
| Media | 6.2164 | años | Promedio de todos los valores |
| Mediana | 2.7500 | años | Valor que divide la muestra en dos partes iguales |
| Moda | 1.0000 | años | Valor más frecuente en la muestra |
| Máximo | 58.0000 | años | Valor máximo observado |
| Rango | 57.9800 | años | Diferencia entre el máximo y el mínimo |
Se calculan medidas que indican la variabilidad de los datos: varianza, desviación estándar y coeficiente de variación.
# Calcular indicadores de dispersión
varianza <- var(MINE_EXPER)
desv_est <- sd(MINE_EXPER)
CV <- (desv_est / media) * 100
# Interpretación del CV
if(CV < 15) {
interpretacion_CV <- "BAJA (CV < 15%)"
} else if(CV < 30) {
interpretacion_CV <- "MODERADA (15% ≤ CV < 30%)"
} else {
interpretacion_CV <- "ALTA (CV ≥ 30%)"
}
# Crear tabla
dispersion <- data.frame(
Indicador = c("Varianza", "Desviación Estándar", "Coeficiente de Variación"),
Valor = c(
round(varianza, 4),
round(desv_est, 4),
paste0(round(CV, 2), "%")
),
Unidad = c("años²", "años", ""),
Interpretación = c(
"Medida de dispersión al cuadrado",
"Dispersión promedio respecto a la media",
paste("Dispersión relativa:", interpretacion_CV)
)
)
kable(dispersion,
caption = "Tabla 4: Indicadores de Dispersión",
align = "l")
| Indicador | Valor | Unidad | Interpretación |
|---|---|---|---|
| Varianza | 71.9761 | años² | Medida de dispersión al cuadrado |
| Desviación Estándar | 8.4839 | años | Dispersión promedio respecto a la media |
| Coeficiente de Variación | 136.48% | Dispersión relativa: ALTA (CV ≥ 30%) |
Se calculan medidas que dividen la distribución en partes iguales: cuartiles y rango intercuartílico.
# Calcular indicadores de posición
cuartiles <- quantile(MINE_EXPER)
Q1 <- cuartiles[2]
Q2 <- cuartiles[3]
Q3 <- cuartiles[4]
IQR_val <- IQR(MINE_EXPER)
# Detección de outliers
lim_inf_outlier <- Q1 - 1.5 * IQR_val
lim_sup_outlier <- Q3 + 1.5 * IQR_val
outliers <- MINE_EXPER[MINE_EXPER < lim_inf_outlier | MINE_EXPER > lim_sup_outlier]
n_outliers <- length(outliers)
porc_outliers <- round((n_outliers / n) * 100, 2)
# Crear tabla
posicion <- data.frame(
Indicador = c("Cuartil 1 (Q1)", "Cuartil 2 (Q2 - Mediana)", "Cuartil 3 (Q3)",
"Rango Intercuartílico (IQR)", "Límite Inferior Outliers",
"Límite Superior Outliers", "Número de Outliers"),
Valor = c(
round(Q1, 4),
round(Q2, 4),
round(Q3, 4),
round(IQR_val, 4),
round(lim_inf_outlier, 4),
round(lim_sup_outlier, 4),
paste0(n_outliers, " (", porc_outliers, "%)")
),
Unidad = c(rep("años", 6), "observaciones"),
Interpretación = c(
"25% de datos por debajo de este valor",
"50% de datos por debajo de este valor (coincide con mediana)",
"75% de datos por debajo de este valor",
"Rango del 50% central de datos (Q3 - Q1)",
"Límite inferior para detección de valores atípicos",
"Límite superior para detección de valores atípicos",
"Cantidad y porcentaje de valores atípicos detectados"
)
)
kable(posicion,
caption = "Tabla 5: Indicadores de Posición y Detección de Outliers",
align = "l")
| Indicador | Valor | Unidad | Interpretación |
|---|---|---|---|
| Cuartil 1 (Q1) | 0.69 | años | 25% de datos por debajo de este valor |
| Cuartil 2 (Q2 - Mediana) | 2.75 | años | 50% de datos por debajo de este valor (coincide con mediana) |
| Cuartil 3 (Q3) | 8.08 | años | 75% de datos por debajo de este valor |
| Rango Intercuartílico (IQR) | 7.39 | años | Rango del 50% central de datos (Q3 - Q1) |
| Límite Inferior Outliers | -10.395 | años | Límite inferior para detección de valores atípicos |
| Límite Superior Outliers | 19.165 | años | Límite superior para detección de valores atípicos |
| Número de Outliers | 380 (8.93%) | observaciones | Cantidad y porcentaje de valores atípicos detectados |
Se calculan medidas que describen la forma de la distribución: asimetría y curtosis.
# Calcular coeficiente de asimetría de Fisher
asimetria <- moments::skewness(MINE_EXPER)
# Interpretación de asimetría
if(abs(asimetria) < 0.5) {
interpretacion_asimetria <- "Distribución simétrica"
} else if(asimetria > 0) {
interpretacion_asimetria <- "Asimetría positiva (sesgo a la derecha)"
} else {
interpretacion_asimetria <- "Asimetría negativa (sesgo a la izquierda)"
}
# Calcular coeficiente de curtosis (exceso)
curtosis <- moments::kurtosis(MINE_EXPER) - 3 # Restamos 3 para exceso de curtosis
# Interpretación de curtosis
if(abs(curtosis) < 0.5) {
interpretacion_curtosis <- "Distribución mesocúrtica (normal)"
} else if(curtosis > 0) {
interpretacion_curtosis <- "Distribución leptocúrtica (picuda)"
} else {
interpretacion_curtosis <- "Distribución platicúrtica (aplanada)"
}
# Crear tabla
forma <- data.frame(
Indicador = c("Coeficiente de Asimetría (Fisher)", "Interpretación Asimetría",
"Coeficiente de Curtosis (Exceso)", "Interpretación Curtosis"),
Valor = c(
round(asimetria, 4),
interpretacion_asimetria,
round(curtosis, 4),
interpretacion_curtosis
),
Fórmula = c(
"g₁ = E[(X-μ)³]/σ³",
"|g₁| < 0.5: Simétrica; g₁ > 0: Positiva; g₁ < 0: Negativa",
"g₂ = E[(X-μ)⁴]/σ⁴ - 3",
"|g₂| < 0.5: Mesocúrtica; g₂ > 0: Leptocúrtica; g₂ < 0: Platicúrtica"
)
)
kable(forma,
caption = "Tabla 6: Indicadores de Forma de la Distribución",
align = "l")
| Indicador | Valor | Fórmula |
|---|---|---|
| Coeficiente de Asimetría (Fisher) | 2.0694 | g₁ = E[(X-μ)³]/σ³ |
| Interpretación Asimetría | Asimetría positiva (sesgo a la derecha) | |g₁| < 0.5: Simétrica; g₁ > 0: Positiva; g₁ < 0: Negativa |
| Coeficiente de Curtosis (Exceso) | 4.1351 | g₂ = E[(X-μ)⁴]/σ⁴ - 3 |
| Interpretación Curtosis | Distribución leptocúrtica (picuda) | |g₂| < 0.5: Mesocúrtica; g₂ > 0: Leptocúrtica; g₂ < 0: Platicúrtica |
# Crear tabla resumen completa
tabla_resumen <- data.frame(
Categoría = c("Tendencia Central", "Tendencia Central", "Tendencia Central",
"Tendencia Central", "Tendencia Central", "Tendencia Central",
"Dispersión", "Dispersión", "Dispersión",
"Posición", "Posición", "Posición", "Posición",
"Forma", "Forma", "Forma", "Forma"),
Indicador = c("Mínimo", "Media", "Mediana", "Moda", "Máximo", "Rango",
"Varianza", "Desviación Estándar", "Coeficiente de Variación",
"Cuartil 1 (Q1)", "Cuartil 2 (Q2)", "Cuartil 3 (Q3)",
"Rango Intercuartílico",
"Asimetría (g₁)", "Interpretación Asimetría",
"Curtosis (g₂)", "Interpretación Curtosis"),
Valor = c(
round(minimo, 4), round(media, 4), round(mediana, 4), round(moda, 4),
round(maximo, 4), round(rango, 4),
round(varianza, 4), round(desv_est, 4), paste0(round(CV, 2), "%"),
round(Q1, 4), round(Q2, 4), round(Q3, 4), round(IQR_val, 4),
round(asimetria, 4), interpretacion_asimetria,
round(curtosis, 4), interpretacion_curtosis
),
Unidad = c("años", "años", "años", "años", "años", "años",
"años²", "años", "", "años", "años", "años", "años",
"", "", "", "")
)
kable(tabla_resumen,
caption = "Tabla 7: Resumen Completo de Indicadores Estadísticos - Variable MINE_EXPER",
align = "l",
row.names = FALSE)
| Categoría | Indicador | Valor | Unidad |
|---|---|---|---|
| Tendencia Central | Mínimo | 0.02 | años |
| Tendencia Central | Media | 6.2164 | años |
| Tendencia Central | Mediana | 2.75 | años |
| Tendencia Central | Moda | 1 | años |
| Tendencia Central | Máximo | 58 | años |
| Tendencia Central | Rango | 57.98 | años |
| Dispersión | Varianza | 71.9761 | años² |
| Dispersión | Desviación Estándar | 8.4839 | años |
| Dispersión | Coeficiente de Variación | 136.48% | |
| Posición | Cuartil 1 (Q1) | 0.69 | años |
| Posición | Cuartil 2 (Q2) | 2.75 | años |
| Posición | Cuartil 3 (Q3) | 8.08 | años |
| Posición | Rango Intercuartílico | 7.39 | años |
| Forma | Asimetría (g₁) | 2.0694 | |
| Forma | Interpretación Asimetría | Asimetría positiva (sesgo a la derecha) | |
| Forma | Curtosis (g₂) | 4.1351 | |
| Forma | Interpretación Curtosis | Distribución leptocúrtica (picuda) |
La variable MINE_EXPER fluctúa entre [0.02:58.00] años y sus valores giran en torno a 2.75 años (mediana), con una desviación estándar de 8.48 años, presentando un coeficiente de variación de 136.48% (extremadamente heterogéneo). La distribución es fuertemente asimétrica positiva con la existencia de 380 valores atípicos que empiezan desde 19.23 años.
Por todo lo anterior, el comportamiento de la variable es problemático para análisis inferenciales, indicando una distribución altamente sesgada donde la mayoría de los trabajadores tiene poca experiencia específica en la mina actual (mediana de 2.75 años), pero existen casos extremos de trabajadores con hasta 58 años de experiencia en la misma mina. Esta alta variabilidad sugiere que la población laboral está compuesta por dos grupos claramente diferenciados: una mayoría con experiencia limitada y una minoría con experiencia excepcionalmente alta, lo que podría indicar problemas de rotación de personal o políticas de contratación desiguales.