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
| 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
| 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."