Proyecto estrictamente académico. Datos: EarthChem PetDB (CC BY 4.0), descargados el 13/10/2026. Web del proyecto: https://crisrumiguano-art.github.io/geoquimica-earthchem-ml/
Se lee la base limpia (159 760 análisis de roca total × 75 variables). La primera vez se descarga del repositorio del proyecto (26 MB).
knitr::opts_chunk$set(
echo = TRUE, # muestra el código en el documento
message = FALSE, # sin mensajes de carga de paquetes
warning = FALSE, # sin advertencias
fig.align = "center" # gráficos centrados
)
library(e1071) # asimetría y curtosis (install.packages("e1071"))
if (!file.exists("data/earthchem_limpio.csv.gz")) {
dir.create("data", showWarnings = FALSE)
download.file("https://github.com/crisrumiguano-art/geoquimica-earthchem-ml/raw/main/data/earthchem_limpio.csv.gz",
"data/earthchem_limpio.csv.gz", mode = "wb")
}
base <- read.csv(gzfile("data/earthchem_limpio.csv.gz", encoding = "UTF-8"), check.names = FALSE)
dim(base) # filas y columnas## [1] 159760 75
Se toma la columna de la variable y se quitan las filas vacías (vacío = no medido, nunca cero).
ni cuenta los casos de cada categoría y hi los expresa en porcentaje; la moda es la categoría con más casos.
conteo <- sort(table(x), decreasing = TRUE) # cuenta cada categoría, de mayor a menor
categoria <- names(conteo)
ni <- as.vector(conteo) # frecuencia absoluta
hi <- round(ni / sum(ni) * 100, 2) # frecuencia relativa (%)
TDF <- data.frame(categoria, ni, hi) # nominal: sin acumuladas (no hay orden)
knitr::kable(TDF, caption = "Tabla N° 1: distribución de frecuencias")| categoria | ni | hi |
|---|---|---|
| igneous:volcanic:mafic | 88335 | 55.29 |
| igneous:plutonic:ultramafic | 27820 | 17.41 |
| igneous:volcanic:clastic | 11637 | 7.28 |
| igneous:volcanic:intermediate | 9315 | 5.83 |
| igneous:plutonic:mafic | 6024 | 3.77 |
| xenolith | 5798 | 3.63 |
| otros | 4843 | 3.03 |
| metamorphic | 3856 | 2.41 |
| igneous:volcanic:felsic | 2132 | 1.33 |
## [1] "igneous:volcanic:mafic"
Diagrama de barras (altura = ni) y diagrama circular (porción = hi).
par(mfrow = c(1, 2), mar = c(9, 5, 4, 1)) # 2 gráficos lado a lado
colores <- gray.colors(length(ni), start = .25, end = .85) # un gris por categoría
barplot(ni, names.arg = categoria, las = 2, col = colores, ylab = "Cantidad", # barras: altura = ni
main = "Gráfica No. 3: Tipo de roca", cex.names = .8, cex.main = .9)
par(mar = c(1, 1, 4, 1))
pie(hi, labels = paste0(hi, "%"), col = colores, clockwise = TRUE, cex = .75, # circular: porción = hi
main = "Gráfica No. 4: Tipo de roca (%)", cex.main = .9)
legend("topright", legend = categoria, fill = colores, cex = .6, bty = "n")La categoría más frecuente (moda) es igneous:volcanic:mafic, con el 55,29 % de los 159 760 casos con dato, repartidos en 9 categorías. Predominan las rocas ígneas volcánicas máficas (basaltos), coherente con el peso de las dorsales en la base; las categorías poco frecuentes se agrupan en «Otros» para que el gráfico se pueda leer.