ANÁLISIS ESTADÍSTICO

CARGA DE DATOS Y LIBRERÍAS

CARGA DE DATOS

# CARGA DE DATOS

library(readxl)

datos <- read_excel("D:/dataset_variables_discretas_mineria.xlsx")

# Extraer y dejar solo datos válidos 

disc <- as.integer(datos$`Frecuencia de muestras por depósito`)
disc <- na.omit(disc)  

# CARGA DE LIBRERIAS

#Carga de librerias
library(gt)
library(dplyr)
library(knitr)
library(e1071)

# Agrupar la variable en intervalos mediante la Regla de Sturges

n_intervalos <- nclass.Sturges(disc)

ri <- min(disc)
rs <- max(disc)

# Cortes enteros
cortes <- round(seq(ri, rs, length.out = n_intervalos + 1))

clasificacion <- cut(
  disc,
  breaks = unique(cortes),
  right = FALSE,
  include.lowest = TRUE
)

# Quitar posibles NA de la clasificación
clasificacion <- na.omit(clasificacion)

# Orden adecuado
orden <- levels(clasificacion)

clasificacion <- factor(clasificacion, levels = orden)

TABLA DE DISTRIBUCION DE CANTIDAD

# 4) Frecuencias simples
ni <- table(clasificacion)
total <- sum(ni)
hi <- round(as.numeric(ni) / total * 100)

# 5) Acumuladas ascendente
Ni_Asc <- cumsum(ni)
Hi_Asc <- cumsum(hi)

# 6) Acumuladas descendente
Ni_Desc <- rev(cumsum(rev(ni)))
Hi_Desc <- rev(cumsum(rev(hi)))

# 7) Tabla final 
tabla_final <- data.frame(
  Intervalo = orden,
  ni = as.numeric(ni),
  hi = floor(hi),
  Ni_Asc = as.numeric(Ni_Asc),
  Hi_Asc = round(Hi_Asc, 3),
  Ni_Desc = as.numeric(Ni_Desc),
  Hi_Desc = round(Hi_Desc, 3)
)

# Verificar que las proporciones sumen 100
sum(tabla_final$hi) 
## [1] 100
tail(tabla_final$Hi_Asc,1)  
## [1] 100
head(tabla_final$Hi_Desc,1) 
## [1] 100
# Calcular sumatorias simples
suma_ni <- sum(tabla_final$ni)
suma_hi <- 100

# Crear fila total
fila_total <- data.frame(
  Intervalo = "TOTAL",
  ni = suma_ni,
  hi = round((suma_hi),2),
  Ni_Asc = "-",
  Hi_Asc = "-",
  Ni_Desc = "-",
  Hi_Desc = "-"
)

# Unir a la tabla
tabla_final <- rbind(tabla_final, fila_total)

tabla_final
##    Intervalo   ni  hi Ni_Asc Hi_Asc Ni_Desc Hi_Desc
## 1     [3,13)   15   1     15      1    2500     100
## 2    [13,24)  104   4    119      5    2485      99
## 3    [24,34)  260  10    379     15    2381      95
## 4    [34,45)  396  16    775     31    2121      85
## 5    [45,55)  338  14   1113     45    1725      69
## 6    [55,65)  175   7   1288     52    1387      55
## 7    [65,76)  282  11   1570     63    1212      48
## 8    [76,86)   82   3   1652     66     930      37
## 9    [86,96)  358  14   2010     80     848      34
## 10  [96,107)    0   0   2010     80     490      20
## 11 [107,117)  227   9   2237     89     490      20
## 12 [117,128)  125   5   2362     94     263      11
## 13 [128,138]  138   6   2500    100     138       6
## 14     TOTAL 2500 100      -      -       -       -
# TABLA GT
TablaDisc <- tabla_final %>%
  gt() %>%
  tab_header(
    title = md("*Tabla Nº. 1*"),
    subtitle = md("**Tabla de distribución de la frecuencia de muestras por depósito en los yacimientos mineros (Sturges)**")
  ) %>%
  tab_source_note(
    source_note = md("__Autor: Grupo 2__")
  ) %>%
  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"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = Intervalo == "TOTAL"   
    )
  )

TablaDisc
Tabla Nº. 1
Tabla de distribución de la frecuencia de muestras por depósito en los yacimientos mineros (Sturges)
Intervalo ni hi Ni_Asc Hi_Asc Ni_Desc Hi_Desc
[3,13) 15 1 15 1 2500 100
[13,24) 104 4 119 5 2485 99
[24,34) 260 10 379 15 2381 95
[34,45) 396 16 775 31 2121 85
[45,55) 338 14 1113 45 1725 69
[55,65) 175 7 1288 52 1387 55
[65,76) 282 11 1570 63 1212 48
[76,86) 82 3 1652 66 930 37
[86,96) 358 14 2010 80 848 34
[96,107) 0 0 2010 80 490 20
[107,117) 227 9 2237 89 490 20
[117,128) 125 5 2362 94 263 11
[128,138] 138 6 2500 100 138 6
TOTAL 2500 100 - - - -
Autor: Grupo 2

Gráficas de distribución de cantidad

# Histograma de cantidad

hist(disc, 
     main="Grafica Nº1: Distribución de cantidad de muestras en depósitos 
        minerales de Estados Unidos",
     col="gray",
     ylab="Cantidad",
     xlab = "Frecuencia de muestras por depósito",
     breaks = n_intervalos,
     cex.names = 0.6)

# Histograma de cantidad

hist(disc, 
     main="Grafica Nº2: Distribución de cantidad de muestras en depósitos 
        minerales de Estados Unidos",
     col="gray",
     xlab="Frecuencia de muestras por depósito",
     ylab="Cantidad",
     breaks = n_intervalos,
     cex.names = 0.6,
     ylim=c(0,800))

# Histograma de cantidad en porcentaje

# Las etiquetas X se adaptan dinámicamente al número de intervalos calculados
etiquetas_x <- seq_len(n_intervalos)

hi_plot <- tabla_final$hi[tabla_final$Intervalo != "TOTAL"]

barplot(hi_plot,
        main = "Grafica Nº3: Distribución de cantidad en porcentaje de muestras 
        en depósitos minerales de Estados Unidos",
        col="gray", 
        space=0,
        las=1,
        xlab="Intervalos (Calculados por Sturges)",
        ylab="Porcentaje",
        names.arg = orden, # Muestra los intervalos reales dinámicos en el eje X
        cex.names = 0.5)

# Histograma de cantidad en porcentaje

# Filtrar los datos SIN la fila TOTAL
hi_plot <- tabla_final$hi[tabla_final$Intervalo != "TOTAL"]

barplot(hi_plot,
        space = 0,
        main="Grafica Nº4: Distribución de cantidad en porcentaje de muestras 
        en depósitos minerales de Estados Unidos",
        col = "gray",
        las = 1,
        xlab = "Intervalos (Calculados por Sturges)",
        ylab = "Porcentaje",
        names.arg = orden, # Muestra los intervalos reales dinámicos en el eje X
        ylim = c(0,100),
        cex.names = 0.5)

# Histograma

histograma <- hist(
  disc,
  breaks = n_intervalos,
  col = rgb(0.7,0.7,0.7,0.7),
  border = "black",
  main = "Gráfica Nº5: Histograma con polígono de frecuencias 
  del número de muestras tomadas en depósitos
  minerales de Estados Unidos",
  xlab = "Frecuencia de muestras por depósito",
  ylab = "Cantidad"
)

lines(
  histograma$mids,
  histograma$counts,
  type = "o",
  pch = 16,
  lwd = 3
)

# Ojivas combinadas Ni

x_intervalos <- seq_len(n_intervalos)

plot(x = x_intervalos,
     y = Ni_Asc,
     type = "p",
     col = "blue",
     main = "Grafica Nº6: Ojiva combinada de la frecuencia de muestras por depósito\n(Ni)",
     xlab = "Intervalos secuenciales",
     ylab = "Cantidad acumulada (Ni)",
     las = 2
)

lines(x = x_intervalos,
      y = Ni_Desc,
      type = "p",
      col = "red")

# Ojivas combinadas Hi

plot(x = x_intervalos,
     y = Hi_Asc,
     type = "p",
     col = "blue",
     main = "Grafica Nº7: Ojiva combinada de la frecuencia de muestras por depósito\n(Hi)",
     xlab = "Intervalos secuenciales",
     ylab = "Porcentaje acumulado (Hi)",
     las = 2,
     ylim = c(0, 100)
)

lines(x = x_intervalos,
      y = Hi_Desc,
      type = "p",
      col = "black")

# DIAGRAMA DE CAJA

boxplot(disc,
        horizontal = TRUE,
        col = "blue",
        main = "Gráfica Nº8: Distribución de cantidad de muestras en depósitos 
        minerales de Estados Unidos",
        xlab = "Frecuencia de muestras por depósito")

# Ver los cuartiles

summary(disc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    3.00   41.00   59.00   68.44   90.00  138.00
# HISTOGRAMA + CAJA DE BIGOTES SUPERPUESTA

hist(
  disc,
  col = "lightgray",
  border = "white",
  main = "Gráfica Nº9: Histograma con diagrama de caja superpuesto",
  xlab = "Frecuencia de muestras por depósito",
  ylab = "Cantidad"
)

# Dibujar la caja sobre el histograma
boxplot(
  disc,
  horizontal = TRUE,
  at = par("usr")[4] * 0.65,      # posición cerca de la parte superior
  add = TRUE,
  xaxt = "n",
  yaxt = "n",
  boxwex = par("usr")[4] * 0.25,  # grosor de la caja
  col = rgb(0.2,0.2,1,0.30),      # azul transparente
  border = "blue"
)

Indicadores Estadisticos

# Indicadores Estadisticos

# POSICION

#MEDIA ARITMETICA
x<-mean(disc)
x
## [1] 68.44
# MODA
Mo <- as.numeric(names(which.max(table(disc))))
Mo
## [1] 138
#MEDIANA ARITMETICA

ri<-min(disc)
rs<-max(disc)
Me<-median(disc)
Me
## [1] 59
# DISPERSION

#DESVIACIÓN ESTÁNDAR
sd<-sd(disc)
sd
## [1] 34.15405
#COEFICIENTE DE VARIACIÓN
CV <- ((sd / x) * 100)
CV
## [1] 49.90364
# FORMA

#COEFICIENTE DE ASIMETRÍA
As<-skewness(disc)
As
## [1] 0.487428
#COEFICIENTE DE CURTOSIS
K<-kurtosis(disc)
K
## [1] -0.8267864
# TABLA DE INDICADORES ESTADISTICOS

Variable<-c("Frecuencia de muestras por depósito")

TablaIndicadores<-data.frame(
  Variable,
  ri,
  rs,
  round(x,2),
  Me,
  round(sd,2), 
  round(CV,2), 
  round(As,2),
  round(K,2)
)

colnames(TablaIndicadores)<-c(
  "Variable",
  "minimo",
  "máximo",
  "x",
  "Me",
  "sd",
  "Cv (%)",
  "As",
  "K"
)

kable(
  TablaIndicadores,
  format = "markdown",
  caption = "Tabla N°3. Indicadores estadísticos de la variable frecuencia de muestras por depósito"
)
Tabla N°3. Indicadores estadísticos de la variable frecuencia de muestras por depósito
Variable minimo máximo x Me sd Cv (%) As K
Frecuencia de muestras por depósito 3 138 68.44 59 34.15 49.9 0.49 -0.83
# OUTLIERS

outliers <- boxplot.stats(disc)$out

num_outliers <- length(outliers)

minoutliers<-min(outliers)
minoutliers
## [1] Inf
maxoutliers<-max(outliers)
maxoutliers
## [1] -Inf
TablaOutliers<-data.frame(num_outliers,minoutliers,maxoutliers)

colnames(TablaOutliers)<-c("Outliers","Mínimo","Máximo")

kable(
  TablaOutliers,
  format = "markdown",
  caption = "Tabla N°4: Outliers de la variable frecuencia de muestras por depósito"
)
Tabla N°4: Outliers de la variable frecuencia de muestras por depósito
Outliers Mínimo Máximo
0 Inf -Inf

Conclusión

#conclucion
"La variable frecuencia de muestras por depósito presenta valores entre 3 y 138, concentrándose alrededor de la mediana de 59 muestras. La desviación estándar de 34.15 y el coeficiente de variación de 49.90% indican una distribución heterogénea. La ligera asimetría positiva refleja mayor acumulación de frecuencias bajas y medias. Esto resulta favorable para el análisis minero, ya que evidencia una cobertura amplia de muestreo en diferentes depósitos."
## [1] "La variable frecuencia de muestras por depósito presenta valores entre 3 y 138, concentrándose alrededor de la mediana de 59 muestras. La desviación estándar de 34.15 y el coeficiente de variación de 49.90% indican una distribución heterogénea. La ligera asimetría positiva refleja mayor acumulación de frecuencias bajas y medias. Esto resulta favorable para el análisis minero, ya que evidencia una cobertura amplia de muestreo en diferentes depósitos."