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.numeric(datos$`Número de métodos analíticos empleados`)
disc <- na.omit(disc)  

# CARGA DE LIBRERIAS

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

#Agrupar la variable en intervalos (Modificado hasta el 6)

clasificacion <- character(length(disc))

for(i in seq_along(disc)){
  if(disc[i] >= 1 & disc[i] < 2){
    clasificacion[i] <- "[1 , 2)"
  } else if(disc[i] >= 2 & disc[i] < 3){
    clasificacion[i] <- "[2 , 3)"
  } else if(disc[i] >= 3 & disc[i] < 4){
    clasificacion[i] <- "[3 , 4)"
  } else if(disc[i] >= 4 & disc[i] < 5){
    clasificacion[i] <- "[4 , 5)"
  } else if(disc[i] >= 5 & disc[i] <= 6){
    clasificacion[i] <- "[5 , 6]"
  } else {
    clasificacion[i] <- NA
  }
}

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

#Orden adecuado

orden <- c("[1 , 2)",
           "[2 , 3)",
           "[3 , 4)",
           "[4 , 5)",
           "[5 , 6]")

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,2) 

# 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 = 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 <- sum(tabla_final$hi)

# 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   [1 , 2)  429  17.16    429  17.16    2500     100
## 2   [2 , 3)  453  18.12    882  35.28    2071   82.84
## 3   [3 , 4)  399  15.96   1281  51.24    1618   64.72
## 4   [4 , 5)  420  16.80   1701  68.04    1219   48.76
## 5   [5 , 6]  799  31.96   2500    100     799   31.96
## 6     TOTAL 2500 100.00      -      -       -       -
# TABLA GT
TablaDisc <- tabla_final %>%
  gt() %>%
  
  tab_header(
    title = md("**Tabla Nº 1**"),
    subtitle = md("Distribución del número de métodos analíticos empleados")
  ) %>%
  
  fmt_number(
    columns = c(ni, hi),
    decimals = 2
  ) %>%
  
  cols_align(
    align = "center",
    columns = everything()
  ) %>%
  
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = Intervalo == "TOTAL"
    )
  ) %>%
  
  tab_source_note(
    source_note = md("Autor: Grupo 2")
  )

TablaDisc
Tabla Nº 1
Distribución del número de métodos analíticos empleados
Intervalo ni hi Ni_Asc Hi_Asc Ni_Desc Hi_Desc
[1 , 2) 429.00 17.16 429 17.16 2500 100
[2 , 3) 453.00 18.12 882 35.28 2071 82.84
[3 , 4) 399.00 15.96 1281 51.24 1618 64.72
[4 , 5) 420.00 16.80 1701 68.04 1219 48.76
[5 , 6] 799.00 31.96 2500 100 799 31.96
TOTAL 2,500.00 100.00 - - - -
Autor: Grupo 2

Gráficas de distribución de cantidad

# Histograma de cantidad

hist(disc, 
     main="Grafica Nº1: Distribución de cantidad del número de métodos analíticos empleados",
     col="gray",
     ylab="Cantidad",
     xlab = "Número de métodos analíticos empleados"
     )

# Histograma de cantidad

hist(disc, 
     main="Grafica Nº2: Distribución de cantidad del número de métodos analíticos empleados",
     col="gray",
     xlab="Número de métodos analíticos empleados",
     ylab="Cantidad",
     ylim=c(0,800))

# Histograma de cantidad en porcentaje

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

barplot(hi_plot,
        main = "Grafica Nº3: Distribución porcentual del número de métodos analíticos empleados",
        col="gray", 
        space=0,
        las=1,
        xlab="Número de métodos analíticos empleados",
        ylab="Porcentaje",
        names.arg = orden, # Se cambian las etiquetas numéricas fijas por los intervalos reales
        cex.names = 0.6)

# 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 porcentual del número de métodos analíticos empleados",
        col = "gray",
        las = 1,
        xlab = "Número de métodos analíticos empleados",
        ylab = "Porcentaje",
        names.arg = orden, # Se cambian las etiquetas numéricas fijas por los intervalos reales
        ylim = c(0,100),
        cex.names = 0.6)

# Ojivas combinadas Ni

x_intervalos <- c(1, 2, 3, 4, 5)

plot(x = x_intervalos,
     y = Ni_Asc,
     type = "o",
     col = "blue",
     main = "Grafica Nº5: Ojiva combinada del número de métodos analíticos empleados\n(Ni)",
     xlab = "Intervalos de métodos analíticos empleados",
     ylab = "Cantidad acumulada (Ni)",
     xaxt = "n", # Oculta el eje X por defecto para personalizarlo
     las = 2
)
# Forzar a que el eje X muestre correctamente los límites 
axis(1, at = x_intervalos, labels = orden, cex.axis = 0.7)

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

# Ojivas combinadas Hi

plot(x = x_intervalos,
     y = Hi_Asc,
     type = "o",
     col = "blue",
     main = "Grafica Nº6: Ojiva combinada del número de métodos analíticos empleados\n(Hi)",
     xlab = "Intervalos de métodos analíticos empleados",
     ylab = "Porcentaje acumulado (Hi)",
     xaxt = "n", # Oculta el eje X por defecto para personalizarlo
     las = 2,
     ylim = c(0, 100)
)
# Forzar a que el eje X muestre correctamente los límites 
axis(1, at = x_intervalos, labels = orden, cex.axis = 0.7)

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

# DIAGRAMA DE CAJA

boxplot(disc,
        horizontal = TRUE,
        col = "blue",
        main = "Gráfica Nº7: Distribución del número de métodos analíticos empleados",
        xlab = "Número de métodos analíticos empleados")

# Ver los cuartiles

summary(disc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    2.00    3.00    3.45    5.00    6.00

Indicadores Estadisticos

# Indicadores Estadisticos

# POSICION

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

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

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

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

Variable<-c("Número de métodos analíticos empleados")

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 número de métodos analíticos empleados"
)
Tabla N°3. Indicadores estadísticos de la variable número de métodos analíticos empleados
Variable minimo máximo x Me sd Cv (%) As K
Número de métodos analíticos empleados 1 6 3.45 3 1.72 49.77 0.05 -1.28
# ==============================================================================
# OUTLIERS (CORREGIDO PARA EVITAR INF / -INF)
# ==============================================================================

# OUTLIERS

outliers <- boxplot.stats(disc)$out
num_outliers <- length(outliers)

# Verificar si existen outliers
if(num_outliers == 0){
  
  minoutliers <- NA
  maxoutliers <- NA
  
} else {
  
  minoutliers <- min(outliers)
  maxoutliers <- max(outliers)
}

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"
)
Tabla N°4: Outliers de la variable
Outliers Mínimo Máximo
0 NA NA

Conclución

#conclucion
"La variable número de métodos analíticos empleados presenta valores entre 1 y 6, con una concentración alrededor de la mediana de 3 métodos. La desviación estándar de 1.72 y el coeficiente de variación de 49.77% indican variabilidad moderada-alta en los procedimientos analíticos utilizados. La distribución es prácticamente simétrica, lo que evidencia uniformidad en la aplicación de métodos. Esto resulta favorable, ya que permite obtener análisis más completos y confiables de las muestras minerales."
## [1] "La variable número de métodos analíticos empleados presenta valores entre 1 y 6, con una concentración alrededor de la mediana de 3 métodos. La desviación estándar de 1.72 y el coeficiente de variación de 49.77% indican variabilidad moderada-alta en los procedimientos analíticos utilizados. La distribución es prácticamente simétrica, lo que evidencia uniformidad en la aplicación de métodos. Esto resulta favorable, ya que permite obtener análisis más completos y confiables de las muestras minerales."