ACTIVIDAD #1: ANÁLISIS EXPLORATORIO DE DATOS GEOESTADÍSTICOS

Analisis estadístico, Uninorte, Raquel Padilla, Enrique Pedrosa y Santiago Rodríguez

###Contextualización

La geología es una disciplina fundamental en el estudio de la estructura, composición y evolución de la Tierra. El análisis de datos geológicos permite comprender fenómenos como la distribución de minerales, la evolución de cuencas sedimentarias, la identificación de estructuras tectónicas y la evaluación de recursos naturales. En este taller, se exploraron datos geológicos para identificar patrones y correlaciones entre variables como la composición química de rocas, la profundidad de yacimientos y la densidad de minerales.

Este taller se centró en la aplicación de métodos de análisis exploratorio de datos (EDA) para estudiar un conjunto de datos geológicos y extraer información clave para la toma de decisiones en la exploración y explotación de recursos naturales.

Primera parte: Revisión de datos

library(readr)
datos <- readxl::read_excel("basegeo.xlsx")
datos
## # A tibble: 20 × 6
##       ID `Profundidad (m)` `Tipo de Roca` `% de SiO2` `Densidad (g/cm³)`
##    <dbl>             <dbl> <chr>                <dbl>              <dbl>
##  1     1               120 Sedimentaria          65.2               2.65
##  2     2               230 Ígnea                 72.4               2.7 
##  3     3                85 Metamórfica           68.3               2.75
##  4     4               150 Sedimentaria          71.1               2.68
##  5     5               300 Ígnea                 62                 2.6 
##  6     6               210 Metamórfica           69.5               2.72
##  7     7                95 Sedimentaria          66.8               2.66
##  8     8               275 Ígnea                 73                 2.71
##  9     9               140 Metamórfica           64.5               2.64
## 10    10               310 Sedimentaria          70.3               2.69
## 11    11               120 Ígnea                 65.2               2.65
## 12    12               230 Metamórfica           72.4               2.7 
## 13    13                85 Sedimentaria          68.3               2.75
## 14    14               150 Ígnea                 71.1               2.68
## 15    15               300 Metamórfica           62                 2.6 
## 16    16               210 Sedimentaria          69.5               2.72
## 17    17                95 Ígnea                 66.8               2.66
## 18    18               275 Metamórfica           73                 2.71
## 19    19               140 Sedimentaria          64.5               2.64
## 20    20               310 Ígnea                 70.3               2.69
## # ℹ 1 more variable: `Presencia de Fósiles` <chr>

Teniendo en cuenta el conjunto de datos geológicos, se evaluó lo siguiente:

  1. ¿Cuál fue la población objetivo?
    Respuesta: Los yacimientos geológicos de rocas, cuya información se recolectó en términos de profundidad, tipo de roca, porcentaje de cuarzo, densidad y presencia de fósiles.

  2. ¿Existió una muestra? ¿Cuál fue?
    Respuesta: Sí, la muestra consistió en 20 observaciones con datos de distintos yacimientos, recortadas de una población original de 50 observaciones, encontrada en BrightSpace.

  3. Mención de un parámetro y un estadístico en este estudio, si es posible.
    Respuesta: No fue posible obtener un parámetro, ya que solo se trabajó con una muestra. Sin embargo, se pudo calcular un estadístico, como el rango de profundidad, siendo este de 225 metros.

# Instalar y cargar el paquete necesario (si no está instalado)
if (!require("readxl")) install.packages("readxl", dependencies=TRUE)
## Cargando paquete requerido: readxl
library(readxl)

# Cargar la base de datos desde el archivo Excel
ruta_archivo <- "basegeo.xlsx"  # Reemplaza con la ruta correcta si es necesario
datos <- read_excel(ruta_archivo)

# Obtener el valor mínimo y máximo de la variable "Profundidad (m)"
X_min <- min(datos$`Profundidad (m)`, na.rm = TRUE)  # X_min = Mínimo
X_max <- max(datos$`Profundidad (m)`, na.rm = TRUE)  # X_max = Máximo

# Calcular el rango (R = X_max - X_min)
R <- X_max - X_min

# Mostrar los resultados con símbolos estadísticos
cat("X_min (Valor mínimo de profundidad) =", X_min, "metros\n")
## X_min (Valor mínimo de profundidad) = 85 metros
cat("X_max (Valor máximo de profundidad) =", X_max, "metros\n")
## X_max (Valor máximo de profundidad) = 310 metros
cat("R (Rango) =", R, "metros\n")
## R (Rango) = 225 metros
  1. Clasificación de las variables de acuerdo con su naturaleza y nivel de medición.
str(datos)
## tibble [20 × 6] (S3: tbl_df/tbl/data.frame)
##  $ ID                  : num [1:20] 1 2 3 4 5 6 7 8 9 10 ...
##  $ Profundidad (m)     : num [1:20] 120 230 85 150 300 210 95 275 140 310 ...
##  $ Tipo de Roca        : chr [1:20] "Sedimentaria" "Ígnea" "Metamórfica" "Sedimentaria" ...
##  $ % de SiO2           : num [1:20] 65.2 72.4 68.3 71.1 62 69.5 66.8 73 64.5 70.3 ...
##  $ Densidad (g/cm³)    : num [1:20] 2.65 2.7 2.75 2.68 2.6 2.72 2.66 2.71 2.64 2.69 ...
##  $ Presencia de Fósiles: chr [1:20] "Sí" "No" "Sí" "No" ...

Respuesta: Se generó el siguiente data frame, clasificando las variables:

# Instalar y cargar el paquete necesario para una mejor visualización (si no está instalado)
if (!require("tibble")) install.packages("tibble", dependencies = TRUE)
## Cargando paquete requerido: tibble
library(tibble)

# Crear el data frame original
df_geologico <- tibble::tibble(
  "Variable" = c("ID", "Profundidad del yacimiento", "Tipo de roca", "Composición química (% de SiO2)", "Densidad de mineral (g/cm³)", "Presencia de fósiles"),
  "Naturaleza" = c("Cualitativa", "Cuantitativa continua", "Cualitativa", "Cuantitativa continua", "Cuantitativa continua", "Cualitativa"),
  "Nivel de medición" = c("Ordinal", "Razón", "Nominal", "Razón", "Razón", "Nominal")
)

# Mostrar la tabla corregida
print(df_geologico)
## # A tibble: 6 × 3
##   Variable                        Naturaleza            `Nivel de medición`
##   <chr>                           <chr>                 <chr>              
## 1 ID                              Cualitativa           Ordinal            
## 2 Profundidad del yacimiento      Cuantitativa continua Razón              
## 3 Tipo de roca                    Cualitativa           Nominal            
## 4 Composición química (% de SiO2) Cuantitativa continua Razón              
## 5 Densidad de mineral (g/cm³)     Cuantitativa continua Razón              
## 6 Presencia de fósiles            Cualitativa           Nominal

Segunda parte: Organización de datos en tablas de frecuencia

  1. Tablas de frecuencia
  1. Se elaboraron tablas de frecuencia para las dos variables categóricas:

Tablas 1 y 2. Distribución de frecuencia de las variables categóricas.

# Cargar librerías necesarias
library(readxl)
library(dplyr)  # Para manipulación de datos
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Cargar la base de datos desde el archivo Excel
archivo <- "basegeo.xlsx"  # Asegúrate de que el nombre sea correcto
hoja <- 1  # Se asume que los datos están en la primera hoja
datos <- read_excel(archivo, sheet = hoja)

# Crear tablas de frecuencia para variables categóricas
frecuencia_tipo_roca <- table(datos$`Tipo de Roca`)
frecuencia_fosiles <- table(datos$`Presencia de Fósiles`)

# Convertir tablas de frecuencia a data frames y calcular porcentaje
table_tipo_roca <- as.data.frame(frecuencia_tipo_roca) %>%
  mutate(Porcentaje = round(Freq / sum(Freq) * 100, 2))

table_fosiles <- as.data.frame(frecuencia_fosiles) %>%
  mutate(Porcentaje = round(Freq / sum(Freq) * 100, 2))

# Renombrar columnas para mayor claridad
names(table_tipo_roca) <- c("Tipo de Roca", "Frecuencia", "Porcentaje (%)")
names(table_fosiles) <- c("Presencia de Fósiles", "Frecuencia", "Porcentaje (%)")

# Imprimir los resultados
print(table_tipo_roca)
##   Tipo de Roca Frecuencia Porcentaje (%)
## 1        Ígnea          7             35
## 2  Metamórfica          6             30
## 3 Sedimentaria          7             35
print(table_fosiles)
##   Presencia de Fósiles Frecuencia Porcentaje (%)
## 1                   No         10             50
## 2                   Sí         10             50
  1. Se construyó una tabla de frecuencias agrupada con la variable profundidad del yacimiento:

Distribución de frecuencias agrupadas de la profundidad del yacimiento.

# Instalar y cargar la librería si no está instalada
if (!require("readxl")) install.packages("readxl", dependencies = TRUE)
library(readxl)  # Cargar librería para leer archivos Excel

# Cargar la base de datos desde Excel
archivo <- "basegeo.xlsx"  # Nombre del archivo
hoja <- 1  # Se asume que los datos están en la primera hoja
DATABASE <- read_excel(archivo, sheet = hoja)

# Crear tabla de frecuencias para la variable "Profundidad (m)"
profundidades <- DATABASE$`Profundidad (m)`  # Extraer la columna de profundidad
frecuencia_absoluta <- table(cut(profundidades, breaks = 5))
frecuencia_acumulada <- cumsum(frecuencia_absoluta)
frecuencia_relativa <- prop.table(frecuencia_absoluta) * 100  # Convertir a porcentaje
frecuencia_relativa_acumulada <- cumsum(frecuencia_relativa)

# Construir un data frame con las frecuencias y unidades
tabla_frecuencia <- data.frame(
  "Intervalo de Profundidad (m)" = names(frecuencia_absoluta),
  "Frecuencia Absoluta (número de yacimientos)" = as.vector(frecuencia_absoluta),
  "Frecuencia Acumulada (número de yacimientos)" = as.vector(frecuencia_acumulada),
  "Frecuencia Relativa (%)" = paste0(round(as.vector(frecuencia_relativa), 2), " %"),
  "Frecuencia Relativa Acumulada (%)" = paste0(round(as.vector(frecuencia_relativa_acumulada), 2), " %")
)

# Agregar título descriptivo
cat("Tabla de Frecuencias para la variable 'Profundidad (m)'\n\n")
## Tabla de Frecuencias para la variable 'Profundidad (m)'
# Imprimir la tabla
print(tabla_frecuencia, row.names = FALSE)
##  Intervalo.de.Profundidad..m. Frecuencia.Absoluta..número.de.yacimientos.
##                    (84.8,130]                                           6
##                     (130,175]                                           4
##                     (175,220]                                           2
##                     (220,265]                                           2
##                     (265,310]                                           6
##  Frecuencia.Acumulada..número.de.yacimientos. Frecuencia.Relativa....
##                                             6                    30 %
##                                            10                    20 %
##                                            12                    10 %
##                                            14                    10 %
##                                            20                    30 %
##  Frecuencia.Relativa.Acumulada....
##                               30 %
##                               50 %
##                               60 %
##                               70 %
##                              100 %

Interpretación: Punto a: En la primera tabla se observa la distribución de la variable categórica “Tipo de Roca”, la cual presenta tres tipos: ígnea, con una frecuencia de 7 y un porcentaje del 35%; metamórfica, con una frecuencia de 6 y un porcentaje del 30%; y sedimentaria, con una frecuencia de 7 y un porcentaje del 35%. Se puede notar que los tipos de roca ígnea y sedimentaria son los más frecuentes dentro del conjunto de datos. Por otro lado, la segunda tabla muestra la distribución de la variable “Presencia de Fósiles”, donde las respuestas “Sí” y “No” presentan una frecuencia de 10 y 10 datos, respectivamente, lo que equivale a un 50% para cada categoría.

Punto b: A través de los intervalos de la tabla generada, se observa que los datos están agrupados en intervalos de clase de 45 unidades. Se identifican dos intervalos con la mayor frecuencia: el primero (84.8, 130] y el último ((265, 310], ambos con una frecuencia de 6 datos. Esto indica que la distribución de los datos se concentra principalmente en estos dos extremos.

Además, el 50% de los ocho valores restantes se encuentra en el segundo intervalo. También se observa que 12 de los 20 datos corresponden a profundidades superiores a 20, lo que sugiere una distribución asimétrica a la derecha. En este sentido, el 60% de los datos se encuentra dentro del intervalo (175, 220], evidenciando una mayor concentración en los valores más bajos dentro de la escala de profundidad.

  1. Gráficos generados a partir de las tablas anteriores:

    1. Diagrama circular para la distribución de tipos de roca

    Figura 1. Distribución de los tipos de roca.

library(ggplot2)

# Calcular frecuencias y porcentajes
freq_tipo_roca <- table(DATABASE$`Tipo de Roca`)
df_tipo_roca <- as.data.frame(freq_tipo_roca)
df_tipo_roca$Porcentaje <- round(100 * df_tipo_roca$Freq / sum(df_tipo_roca$Freq), 1)  # Cálculo de porcentaje

# Asignar colores según el tipo de roca
colores_rocas <- c("Ígnea" = "#8B0000",       # Rojo oscuro (magma)
                   "Sedimentaria" = "#A0522D", # Marrón tierra
                   "Metamórfica" = "#708090")  # Gris pizarra

# Crear el gráfico de pastel con etiquetas de porcentaje
ggplot(df_tipo_roca, aes(x = "", y = Freq, fill = Var1)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  scale_fill_manual(values = colores_rocas) +  # Aplicar los colores personalizados
  theme_minimal() +
  labs(title = "Distribución de Tipos de Roca", fill = "Tipo de Roca") +
  theme(axis.text.x = element_blank(), 
        axis.ticks = element_blank(), 
        axis.title.x = element_blank(), 
        axis.title.y = element_blank()) +
  geom_text(aes(label = paste0(Porcentaje, "%")), 
            position = position_stack(vjust = 0.5), size = 5, color = "white")  # Agregar etiquetas de porcentaje

  1. Histograma de la profundidad del yacimiento con su polígono de frecuencia

Figura 2. Histograma de la profundidad del yacimiento.

library(ggplot2)  # Asegurar que ggplot2 está cargado

ggplot(DATABASE, aes(x = `Profundidad (m)`)) +
  geom_histogram(binwidth = 50, color = "black", fill = "skyblue", alpha = 0.7) +
  geom_density(aes(y = after_stat(count) * 50), color = "red", linewidth = 1) +  # Polígono de frecuencia
  theme_minimal() +
  labs(title = "Histograma de Profundidad del Yacimiento", 
       x = "Profundidad (m)", 
       y = "Frecuencia")

  1. Diagrama de cajas y bigotes para analizar la variabilidad de la composición química de las rocas

Figura 3. Variabilidad en la composición química de las rocas.

ggplot(DATABASE, aes(x = "", y = `% de SiO2`)) +
  geom_boxplot(fill = "lightblue", color = "black") +
  theme_minimal() +
  labs(title = "Variabilidad de la Composición Química de las Rocas", y = "% de SiO2", x = "")

Interpretación: Punto a: El diagrama circular muestra que los tipos de roca ígnea y sedimentaria tienen la misma representación, cada una con un 35% del total de datos, mientras que las rocas metamórficas representan el 30%. Esto indica que las rocas ígneas y sedimentarias son las más comunes en el conjunto de datos

Punto b: El histograma muestra que la mayor frecuencia de datos se encuentra hasta el intervalo de (175,220] m de profundidad, lo que sugiere que la mayoría del yacimiento se encuentra en esa franja. El polígono de frecuencia indica una distribución asimétrica hacia la derecha, lo que implica que hay menos datos en las mayores profundidades. Esto podría sugerir que la exploración del yacimiento se ha concentrado en profundidades menores o que la presencia de material geológico de interés disminuye a mayor profundidad.

Punto c: El diagrama de caja muestra la variabilidad del porcentaje de SiO₂ en las rocas. La mediana está cerca del 68-69%, indicando que la mitad de los valores son mayores y la otra mitad menores. La mayor parte de los datos (rango intercuartil) se encuentra entre 65% y 70%, mientras que los valores extremos oscilan entre 62.5% y 72.5%. La distribución parece ligeramente sesgada hacia valores menores, pero sin una diferencia significativa. No se observan valores atípicos, lo que sugiere que la variabilidad del SiO₂ en las muestras es moderada y uniforme.

Cuarta parte: Cálculo de estadísticas descriptivas (1 punto)

  1. Tabla resumen con estadísticas descriptivas para variables cuantitativas

Tabla 4. Estadísticas descriptivas de las variables cuantitativas.

# Instalar paquetes si no están instalados
# Instalar paquetes si no están instalados
if (!require("dplyr")) install.packages("dplyr", dependencies = TRUE)
if (!require("tidyr")) install.packages("tidyr", dependencies = TRUE)
## Cargando paquete requerido: tidyr
# Cargar librerías
library(dplyr)
library(tidyr)

# Seleccionar solo las variables cuantitativas y calcular estadísticas
estadisticas_cuantitativas <- DATABASE %>%
  summarise(
    Min_Profundidad = min(`Profundidad (m)`),
    Max_Profundidad = max(`Profundidad (m)`),
    Media_Profundidad = mean(`Profundidad (m)`),
    Mediana_Profundidad = median(`Profundidad (m)`),
    DesvEst_Profundidad = sd(`Profundidad (m)`),

    Min_SiO2 = min(`% de SiO2`),
    Max_SiO2 = max(`% de SiO2`),
    Media_SiO2 = mean(`% de SiO2`),
    Mediana_SiO2 = median(`% de SiO2`),
    DesvEst_SiO2 = sd(`% de SiO2`),

    Min_Densidad = min(`Densidad (g/cm³)`),
    Max_Densidad = max(`Densidad (g/cm³)`),
    Media_Densidad = mean(`Densidad (g/cm³)`),
    Mediana_Densidad = median(`Densidad (g/cm³)`),
    DesvEst_Densidad = sd(`Densidad (g/cm³)`)
  ) %>%
  pivot_longer(cols = everything(), 
               names_to = "Estadística", 
               values_to = "Valor") %>%
  mutate(
    Valor = round(Valor, 3),  # Redondear valores a 3 decimales
    Unidad = case_when(
      grepl("Profundidad", Estadística) ~ "m",
      grepl("SiO2", Estadística) ~ "%",
      grepl("Densidad", Estadística) ~ "g/cm³",
      TRUE ~ ""
    ),
    Nombre_Completo = case_when(
      grepl("Min_Profundidad", Estadística) ~ "Mínimo de Profundidad",
      grepl("Max_Profundidad", Estadística) ~ "Máximo de Profundidad",
      grepl("Media_Profundidad", Estadística) ~ "Media de Profundidad",
      grepl("Mediana_Profundidad", Estadística) ~ "Mediana de Profundidad",
      grepl("DesvEst_Profundidad", Estadística) ~ "Desviación Estándar de Profundidad",
      
      grepl("Min_SiO2", Estadística) ~ "Mínimo de % de SiO2",
      grepl("Max_SiO2", Estadística) ~ "Máximo de % de SiO2",
      grepl("Media_SiO2", Estadística) ~ "Media de % de SiO2",
      grepl("Mediana_SiO2", Estadística) ~ "Mediana de % de SiO2",
      grepl("DesvEst_SiO2", Estadística) ~ "Desviación Estándar de % de SiO2",

      grepl("Min_Densidad", Estadística) ~ "Mínimo de Densidad",
      grepl("Max_Densidad", Estadística) ~ "Máximo de Densidad",
      grepl("Media_Densidad", Estadística) ~ "Media de Densidad",
      grepl("Mediana_Densidad", Estadística) ~ "Mediana de Densidad",
      grepl("DesvEst_Densidad", Estadística) ~ "Desviación Estándar de Densidad",
      
      TRUE ~ Estadística
    )
  )

# Imprimir la tabla con las estadísticas reestructuradas
print(estadisticas_cuantitativas)
## # A tibble: 15 × 4
##    Estadística           Valor Unidad Nombre_Completo                   
##    <chr>                 <dbl> <chr>  <chr>                             
##  1 Min_Profundidad      85     m      Mínimo de Profundidad             
##  2 Max_Profundidad     310     m      Máximo de Profundidad             
##  3 Media_Profundidad   192.    m      Media de Profundidad              
##  4 Mediana_Profundidad 180     m      Mediana de Profundidad            
##  5 DesvEst_Profundidad  82.6   m      Desviación Estándar de Profundidad
##  6 Min_SiO2             62     %      Mínimo de % de SiO2               
##  7 Max_SiO2             73     %      Máximo de % de SiO2               
##  8 Media_SiO2           68.3   %      Media de % de SiO2                
##  9 Mediana_SiO2         68.9   %      Mediana de % de SiO2              
## 10 DesvEst_SiO2          3.53  %      Desviación Estándar de % de SiO2  
## 11 Min_Densidad          2.6   g/cm³  Mínimo de Densidad                
## 12 Max_Densidad          2.75  g/cm³  Máximo de Densidad                
## 13 Media_Densidad        2.68  g/cm³  Media de Densidad                 
## 14 Mediana_Densidad      2.68  g/cm³  Mediana de Densidad               
## 15 DesvEst_Densidad      0.043 g/cm³  Desviación Estándar de Densidad

Gráficas para variables cualitativas # Gráficos de distribución de variables cualitativas

Figuras 1 y 4. Distribución de las variables cualitativas.

# Cargar librerías necesarias
library(ggplot2)
library(readxl)
library(dplyr)

# Cargar la base de datos desde el archivo Excel
archivo <- "basegeo.xlsx"  # Asegúrate de que el nombre sea correcto
hoja <- 1  # Se asume que los datos están en la primera hoja
datos <- read_excel(archivo, sheet = hoja)

# Crear tabla de frecuencia para presencia de fósiles
frecuencia_fosiles <- table(datos$`Presencia de Fósiles`)

# Convertir la tabla de frecuencia a data frame y calcular porcentaje
table_fosiles <- as.data.frame(frecuencia_fosiles) %>%
  mutate(Porcentaje = round(Freq / sum(Freq) * 100, 2))

# Renombrar columnas
names(table_fosiles) <- c("Presencia de Fósiles", "Frecuencia", "Porcentaje")

# Gráfico de barras para presencia de fósiles
ggplot(table_fosiles, aes(x = `Presencia de Fósiles`, y = Frecuencia, fill = `Presencia de Fósiles`)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.7) +
  labs(title = "Presencia de Fósiles en Muestras", x = "Presencia de Fósiles", y = "Frecuencia") +
  theme_minimal() +
  geom_text(aes(label = paste0(Porcentaje, "%")), vjust = -0.5, size = 5)

Explicación de la información relevante obtenida:

  1. Profundidad de los Yacimientos La profundidad de los yacimientos oscila entre un mínimo de 85 metros y un máximo de 310 metros, con una media de 191.5 metros, es decir un aproximado de unos 200 metros. Estos datos son importantes pues para la viabilidad de los procesos de excavación, en profundidades inferiores a 200 metros bajo el nivel del mar las técnicas de minería convencional son inviables debido a cuestiones de estabilidad, a factores geotérmicos, y a la existencia de yacimientos de aguas subterráneas. Por lo que el uso de cualquier plan de excavación directa debe ser reemplazado en favor de las exploraciones geofísicas del área.
  2. Composición Química (SiO₂ - Dióxido de Silicio) La variabilidad de la sílice en los depósitos puede variar entre el 62% y una cantidad de hasta el 73%, con un promedio total de sílice de un 68. 31%. Esta cantidad apreciable de cuarzo en las rocas es indicativo de que éstas pueden ser resistentes a la erosión y por consiguiente materia prima para la construcción, para fabricar vidrio o para materiales cerámicos. A ello se suma que esta información es válida para la identificación de algunos ambientes geológicos concretos, como son los sistemas fluviales antiguos y/o depósitos volcánicos.
  3. Densidad de las Rocas La densidad de las rocas de los yacimientos, que oscila entre 2.6 y 2.75 g/cm³, con una media de 2.68 g/cm³, es indicativa de una importante cantidad de rocas sedimentarias o ígneas en las areas de los yacimientos.
  4. Presencia de Fósiles (50% tienen fosiles - 50% No tienen fosiles) La presencia de fósiles es determinante para la datacion de las capas de roca, la identificación de paleoambientes antiguos y la reconstrucción de la historia geológica de un área determinada; además, en la actividad de exploración de hidrocarburos, los fósiles pueden ser útiles a modo de indicadores de posibles reservas que contengan petróleo o gas, convirtiéndose en un agente de geología útil y de la industria energética.