ANÁLISIS ESTADÍSTICO

CARGA DE DATOS Y LIBRERÍAS

CARGA DE DATOS

#Limpiar entorno
rm(list = ls())
#Cargar librerías
if (!require("readr")) install.packages("readr")
if (!require("dplyr")) install.packages("dplyr")
if (!require("knitr")) install.packages("knitr")
if (!require("moments")) install.packages("moments")

library(readr)
library(dplyr)
library(knitr)
library(moments)
#Cargar datos
ruta <- "D:/contenido_oro_2500_registros_ppm.csv"
datos <- read_csv(ruta)

cat("✓ Datos cargados exitosamente\n")
## ✓ Datos cargados exitosamente
cat("✓ Dimensiones:", nrow(datos), "observaciones\n")
## ✓ Dimensiones: 2500 observaciones

EXTRAER Y LIMPIAR LA VARIABLE

ASIGNACION DE VARIABLES

# Extraer y limpiar la variable CONTENIDO_ORO_PPM
CONTENIDO_ORO_PPM_raw <- datos$CONTENIDO_ORO_PPM
CONTENIDO_ORO_PPM <- as.numeric(CONTENIDO_ORO_PPM_raw)
CONTENIDO_ORO_PPM <- CONTENIDO_ORO_PPM[!is.na(CONTENIDO_ORO_PPM)]
CONTENIDO_ORO_PPM <- CONTENIDO_ORO_PPM[CONTENIDO_ORO_PPM != 0]

n <- length(CONTENIDO_ORO_PPM)

TABLA DE DISTRIBUCION DE PARAMETROS POR STURGES

# Parámetros de Sturges
R <- max(CONTENIDO_ORO_PPM) - min(CONTENIDO_ORO_PPM)
k <- floor(1 + 3.3 * log10(n))
A <- R / k

parametros_sturges <- data.frame(
  Parámetro = c("Rango (R)", 
                "Número de datos (n)", 
                "Número de intervalos (k)", 
                "Amplitud de clase (A)"),
  Valor = c(round(R, 4), n, k, round(A, 4))
)

kable(parametros_sturges, 
      caption = "Tabla 1: Parámetros de Sturges para la variable Contenido de Oro (PPM)"
)
Tabla 1: Parámetros de Sturges para la variable Contenido de Oro (PPM)
Parámetro Valor
Rango (R) 24.9455
Número de datos (n) 2500.0000
Número de intervalos (k) 12.0000
Amplitud de clase (A) 2.0788
# Intervalos y frecuencias
Li <- seq(min(CONTENIDO_ORO_PPM), max(CONTENIDO_ORO_PPM) - A, by = A)
Ls <- seq(min(CONTENIDO_ORO_PPM) + A, max(CONTENIDO_ORO_PPM), by = A)
MC <- (Li + Ls) / 2

ni <- numeric(k)
for (i in 1:k) {
  if (i == k) {
    ni[i] <- sum(CONTENIDO_ORO_PPM >= Li[i] & CONTENIDO_ORO_PPM <= Ls[i])
  } else {
    ni[i] <- sum(CONTENIDO_ORO_PPM >= Li[i] & CONTENIDO_ORO_PPM < Ls[i])
  }
}

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)

TDF <- data.frame(
  Clase = 1:k,
  Li = round(Li, 2),
  Ls = round(Ls, 2),
  MC = round(MC, 2),
  ni = ni,
  hi = hi,
  Niasc = Niasc,
  Nidsc = Nidsc,
  Hiasc = Hiasc,
  Hidsc = Hidsc
)

kable(TDF,
      caption = "Tabla 2: Distribución de frecuencias de Contenido de Oro (PPM)")
Tabla 2: Distribución de frecuencias de Contenido de Oro (PPM)
Clase Li Ls MC ni hi Niasc Nidsc Hiasc Hidsc
1 0.05 2.13 1.09 1950 78.00 1950 2500 78.00 100.00
2 2.13 4.21 3.17 397 15.88 2347 550 93.88 22.00
3 4.21 6.29 5.25 63 2.52 2410 153 96.40 6.12
4 6.29 8.37 7.33 26 1.04 2436 90 97.44 3.60
5 8.37 10.45 9.41 21 0.84 2457 64 98.28 2.56
6 10.45 12.53 11.49 13 0.52 2470 43 98.80 1.72
7 12.53 14.61 13.57 13 0.52 2483 30 99.32 1.20
8 14.61 16.68 15.65 6 0.24 2489 17 99.56 0.68
9 16.68 18.76 17.72 5 0.20 2494 11 99.76 0.44
10 18.76 20.84 19.80 3 0.12 2497 6 99.88 0.24
11 20.84 22.92 21.88 2 0.08 2499 3 99.96 0.12
12 22.92 25.00 23.96 1 0.04 2500 1 100.00 0.04
intervalos <- paste(round(Li, 2), round(Ls, 2), sep = " - ")
intervalos_resumen <- paste(
  round(Li, 0),
  round(Ls, 0),
  sep = " a "
)

Debido a que los límites de clase obtenidos mediante la regla de Sturges presentan números decimales difíciles de interpretar visualmente.

h <- hist(CONTENIDO_ORO_PPM,
          breaks = k,
          plot = FALSE)

Li <- head(h$breaks, -1)
Ls <- tail(h$breaks, -1)

ni <- h$counts
n <- sum(ni)

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)

MC <- h$mids

TDF <- data.frame(
  Clase = seq_along(ni),
  Li = round(Li, 2),
  Ls = round(Ls, 2),
  MC = round(MC, 2),
  ni = ni,
  hi = hi,
  Niasc = Niasc,
  Nidsc = Nidsc,
  Hiasc = Hiasc,
  Hidsc = Hidsc
)

kable(
  TDF,
  caption = "Tabla 2: Distribución de frecuencias resumen"
)
Tabla 2: Distribución de frecuencias resumen
Clase Li Ls MC ni hi Niasc Nidsc Hiasc Hidsc
1 0 2 1 1881 75.24 1881 2500 75.24 100.00
2 2 4 3 455 18.20 2336 619 93.44 24.76
3 4 6 5 70 2.80 2406 164 96.24 6.56
4 6 8 7 27 1.08 2433 94 97.32 3.76
5 8 10 9 23 0.92 2456 67 98.24 2.68
6 10 12 11 10 0.40 2466 44 98.64 1.76
7 12 14 13 15 0.60 2481 34 99.24 1.36
8 14 16 15 6 0.24 2487 19 99.48 0.76
9 16 18 17 6 0.24 2493 13 99.72 0.52
10 18 20 19 4 0.16 2497 7 99.88 0.28
11 20 22 21 2 0.08 2499 3 99.96 0.12
12 22 24 23 0 0.00 2499 1 99.96 0.04
13 24 26 25 1 0.04 2500 1 100.00 0.04

GRAFICAS DE DISTRIBUCION DE CANTIDAD

# Histograma 1 (Ajuste estándar / normal)
hist(CONTENIDO_ORO_PPM,
     breaks = k,
     col = "gold",
     main = "Gráfica 1: Distribución de cantidad de contenido de oro\nen depósitos minerales",
     xlab = "Contenido de Oro (PPM)",
     ylab = "Frecuencia")

# Histograma 2 (Con margen superior ampliado)
hist(CONTENIDO_ORO_PPM,
     breaks = k,
     col = "goldenrod",
     ylim = c(0, max(ni)*1.2),
     main = "Gráfica 2: Distribución global del contenido de oro\nen depósitos minerales",
     xlab = "Contenido de Oro (PPM)",
     ylab = "Frecuencia")

# Calcular media y mediana
media_rel <- mean(CONTENIDO_ORO_PPM)
mediana_rel <- median(CONTENIDO_ORO_PPM)

# Histograma porcentaje
h <- hist(CONTENIDO_ORO_PPM,
          breaks = k,
          plot = FALSE)

porcentaje <- h$counts / sum(h$counts) * 100

par(mar = c(7,4,4,2))

barplot(
  porcentaje,
  names.arg = paste(round(head(h$breaks,-1),2),
                    round(tail(h$breaks,-1),2),
                    sep = "-"),
  col = "darkorange",
  ylim = c(0, max(porcentaje)*1.15),
  ylab = "Frecuencia Relativa (%)",
  main = "Gráfica 3: Distribución porcentual del contenido de oro
  en depósitos minerales",
  las = 2,
  space = 0,
  border = "white"
)

title(
  xlab = "Contenido de Oro (PPM)",
  line = 5.5
)

# Calcular media y mediana 
media_rel_global <- mean(CONTENIDO_ORO_PPM)
mediana_rel_global <- median(CONTENIDO_ORO_PPM)

# Histograma sin dibujar
h <- hist(CONTENIDO_ORO_PPM,
          breaks = k,
          plot = FALSE)

# Frecuencia relativa (%)
hi <- h$counts / sum(h$counts) * 100

# Etiquetas de intervalos
intervalos_graf <- paste(
  round(head(h$breaks,-1), 2),
  round(tail(h$breaks,-1), 2),
  sep = " - "
)

par(mar = c(7,4,4,2))

barplot(
  hi,
  names.arg = intervalos_graf,
  col = "goldenrod1",
  ylim = c(0, 100),
  cex.names = 0.7,
  space = 0,
  ylab = "Frecuencia Relativa (%)",
  xlab = "",
  main = "Gráfica 4: Distribución de cantidad en porcentaje del
  contenido de oro en depósitos minerales",
  las = 2,
  border = "white"
)

title(
  xlab = "Intervalos de Contenido de Oro (PPM)",
  line = 6
)

# Histograma con polígono
histograma <- hist(
  CONTENIDO_ORO_PPM,
  breaks = h$breaks,
  col = rgb(0.9, 0.8, 0.2, 0.6),
  border = "black",
  main = "Gráfica Nº5: Histograma con polígono de frecuencias
  del contenido de oro en depósitos minerales",
  xlab = "Contenido de Oro (PPM)",
  ylab = "Cantidad"
)

# Polígono de frecuencias
lines(
  histograma$mids,
  histograma$counts,
  type = "o",
  pch = 16,
  lwd = 2,
  col = "darkgoldenrod4"
)

# Ojiva de Frecuencias Absolutas Acumuladas
plot(Ls, Niasc, 
     type = "o", 
     pch = 16, 
     col = "blue",
     main = "Gráfica 6: Ojiva de Frecuencias Absolutas Acumuladas 
     de los depósitos por Contenido de Oro (PPM)",
     xlab = "Contenido de Oro (PPM)",
     ylab = "Frecuencia Acumulada Absoluta (Ni)")

lines(Ls, Nidsc, 
      type = "o", 
      pch = 16, 
      col = "red")

legend("topleft",
       c("Ni Ascendente", "Ni Descendente"),
       col = c("blue", "red"),
       pch = 16)

# Ojiva de Frecuencias Relativas Acumuladas
plot(Ls, Hiasc, 
     type = "o", 
     pch = 16, 
     col = "blue",
     main = "Gráfica 7: Ojiva de Frecuencias Relativas Acumuladas 
     de los depósitos por Contenido de Oro (PPM)",
     xlab = "Contenido de Oro (PPM)",
     ylab = "Frecuencia Acumulada Relativa (%)")

lines(Ls, 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(CONTENIDO_ORO_PPM)
mediana_box <- median(CONTENIDO_ORO_PPM)
Q1_box <- quantile(CONTENIDO_ORO_PPM, 0.25)
Q3_box <- quantile(CONTENIDO_ORO_PPM, 0.75)
IQR_box <- IQR(CONTENIDO_ORO_PPM)

# Calcular outliers 
lim_inf_outlier_box <- Q1_box - 1.5 * IQR_box
lim_sup_outlier_box <- Q3_box + 1.5 * IQR_box
outliers_box <- CONTENIDO_ORO_PPM[CONTENIDO_ORO_PPM < lim_inf_outlier_box | CONTENIDO_ORO_PPM > lim_sup_outlier_box]
n_outliers_box <- length(outliers_box)

boxplot(CONTENIDO_ORO_PPM,
        horizontal = TRUE,
        col = "gold",
        main = "Gráfica 7: Distribución del Contenido de Oro (PPM) 
        con detección de valores atípicos",
        xlab = "Contenido de Oro (PPM)",
        ylab = "",
        border = "darkgoldenrod")

# Añadir estadísticos importantes
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)

# Ver resumen estadístico
summary(CONTENIDO_ORO_PPM)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0545  0.5526  1.0453  1.6976  1.9789 25.0000
# Histograma con diagrama de caja superpuesto
hist(
  CONTENIDO_ORO_PPM,
  breaks = h$breaks,
  col = "lightgray",
  border = "white",
  main = "Gráfica Nº8: Histograma con diagrama de caja superpuesto
  del contenido de oro en depósitos minerales",
  xlab = "Contenido de Oro (PPM)",
  ylab = "Cantidad"
)

boxplot(
  CONTENIDO_ORO_PPM,
  horizontal = TRUE,
  at = par("usr")[4] * 0.70,
  add = TRUE,
  xaxt = "n",
  yaxt = "n",
  boxwex = par("usr")[4] * 0.30,
  col = rgb(1, 0.84, 0, 0.4),
  border = "darkgoldenrod"
)

INDICADORES ESTADISTICOS Y OUTLIERS

# Calcular indicadores de tendencia central
minimo <- min(CONTENIDO_ORO_PPM)
maximo <- max(CONTENIDO_ORO_PPM)
rango <- maximo - minimo
media <- mean(CONTENIDO_ORO_PPM)
mediana <- median(CONTENIDO_ORO_PPM)
moda <- as.numeric(names(sort(table(CONTENIDO_ORO_PPM), 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("PPM", 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 para la variable CONTENIDO_ORO_PPM",
      align = "l")
Tabla 3: Indicadores de Tendencia Central para la variable CONTENIDO_ORO_PPM
Indicador Valor Unidad Interpretación
Mínimo 0.0545 PPM Valor mínimo observado
Media 1.6976 PPM Promedio de todos los valores
Mediana 1.0453 PPM Valor que divide la muestra en dos partes iguales
Moda 3.5000 PPM Valor más frecuente en la muestra
Máximo 25.0000 PPM Valor máximo observado
Rango 24.9455 PPM Diferencia entre el máximo y el mínimo
# Calcular indicadores de dispersión
varianza <- var(CONTENIDO_ORO_PPM)
desv_est <- sd(CONTENIDO_ORO_PPM)
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("PPM²", "PPM", ""),
  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 para la variable CONTENIDO_ORO_PPM",
      align = "l")
Tabla 4: Indicadores de Dispersión para la variable CONTENIDO_ORO_PPM
Indicador Valor Unidad Interpretación
Varianza 5.1779 PPM² Medida de dispersión al cuadrado
Desviación Estándar 2.2755 PPM Dispersión promedio respecto a la media
Coeficiente de Variación 134.04% Dispersión relativa: ALTA (CV ≥ 30%)
# Calcular indicadores de posición
cuartiles <- quantile(CONTENIDO_ORO_PPM)
Q1 <- cuartiles[2]
Q2 <- cuartiles[3]
Q3 <- cuartiles[4]
IQR_val <- IQR(CONTENIDO_ORO_PPM)

# Detección de outliers
lim_inf_outlier <- Q1 - 1.5 * IQR_val
lim_sup_outlier <- Q3 + 1.5 * IQR_val
outliers <- CONTENIDO_ORO_PPM[CONTENIDO_ORO_PPM < lim_inf_outlier | CONTENIDO_ORO_PPM > 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("PPM", 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 en CONTENIDO_ORO_PPM",
      align = "l")
Tabla 5: Indicadores de Posición y detección de outliers en CONTENIDO_ORO_PPM
Indicador Valor Unidad Interpretación
Cuartil 1 (Q1) 0.5526 PPM 25% de datos por debajo de este valor
Cuartil 2 (Q2 - Mediana) 1.0453 PPM 50% de datos por debajo de este valor (coincide con mediana)
Cuartil 3 (Q3) 1.9789 PPM 75% de datos por debajo de este valor
Rango Intercuartílico (IQR) 1.4263 PPM Rango del 50% central de datos (Q3 - Q1)
Límite Inferior Outliers -1.5867 PPM Límite inferior para detección de valores atípicos
Límite Superior Outliers 4.1183 PPM Límite superior para detección de valores atípicos
Número de Outliers 158 (6.32%) observaciones Cantidad y porcentaje de valores atípicos detectados
# Calcular coeficiente de asimetría de Fisher
asimetria <- moments::skewness(CONTENIDO_ORO_PPM)

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)"
}

# Curtosis
curtosis <- moments::kurtosis(CONTENIDO_ORO_PPM) - 3

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 de CONTENIDO_ORO_PPM",
      align = "l")
Tabla 6: Indicadores de forma de la distribución de CONTENIDO_ORO_PPM
Indicador Valor Fórmula
Coeficiente de Asimetría (Fisher) 4.4309 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) 25.8917 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
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("PPM", "PPM", "PPM", "PPM", "PPM", "PPM",
             "PPM²", "PPM", "", "PPM", "PPM", "PPM", "PPM",
             "", "", "", "")
)

kable(tabla_resumen,
      caption = "Tabla 7: Resumen completo de indicadores estadísticos de CONTENIDO_ORO_PPM",
      align = "l",
      row.names = FALSE)
Tabla 7: Resumen completo de indicadores estadísticos de CONTENIDO_ORO_PPM
Categoría Indicador Valor Unidad
Tendencia Central Mínimo 0.0545 PPM
Tendencia Central Media 1.6976 PPM
Tendencia Central Mediana 1.0453 PPM
Tendencia Central Moda 3.5 PPM
Tendencia Central Máximo 25 PPM
Tendencia Central Rango 24.9455 PPM
Dispersión Varianza 5.1779 PPM²
Dispersión Desviación Estándar 2.2755 PPM
Dispersión Coeficiente de Variación 134.04%
Posición Cuartil 1 (Q1) 0.5526 PPM
Posición Cuartil 2 (Q2) 1.0453 PPM
Posición Cuartil 3 (Q3) 1.9789 PPM
Posición Rango Intercuartílico 1.4263 PPM
Forma Asimetría (g₁) 4.4309
Forma Interpretación Asimetría Asimetría positiva (sesgo a la derecha)
Forma Curtosis (g₂) 25.8917
Forma Interpretación Curtosis Distribución leptocúrtica (picuda)

Conclusión

La variable contenido de oro en partes por millón (PPM) presenta valores que fluctúan entre un mínimo de 0.05 PPM y un máximo de 25 PPM, con una mediana de 1.05 PPM. La desviación estándar de 2.28 PPM refleja la dispersión observada respecto a la media de 1.7 PPM. El análisis de forma señala una asimetría positiva y distribución leptocúrtica, con un total de 158 valores atípicos identificados 6.32%, los cuales corresponden a depósitos con ley de oro significativamente más alta que el promedio de la población.