Cuando tenemos bases de datos muy grandes, la aplicación de estas técnicas se puede convertir en una práctica muy compleja. Por ejemplo, si en vez de tener 16 variables como en el ejemplo anterior, tenemos 60,000 variables medidas en más de 1,000 observaciones, ir verificando una a una si hay "cosas" raras es imposible.
¿Qué son las ciencias ómicas?
Son las ciencias que analizan grandes cantidades de datos generando información relevante para la toma de decisiones en nuestras salud y enfermedades.
Son un grupo de disciplinas nuevas que manejan conocimiento que se genera a partir de medidas de un gran número de elementos biológicos que están involucradas en el comportamiento normal o patológico del ser humano.
Algunos ejemplos:
Genómica: Es nuestro ADN, son kilómetros de letras seguidas que definen al ser humano, en total unos 3 mil millones de letras que podemos traducir a 0 y 1.
Transcriptómica: La traducción del ADN a genes que definen nuestros caracteres (color de ojos, pelo, etc). El cuerpo humano lo conforman 60,000 genes de los cuales solo 20,000 se sabe su función.
Microbioma: Los millones de bacterias, hongos, virus que pueden vivir en nuestro cuerpo.
Todo esto, o la combinación de todo este conocimiento nos puede servir en la práctica clínica para hacer un diagnóstico más temprano o prevenir el desarrollo de una enfermedad o desarrollar un fármaco nuevo.
Cada uno de estos elementos se traduce a enormes cantidades de datos que generan matrices que los científicos de datos podemos analizar:
Genómica:
Transcriptómica:
¿Cómo depuramos estos datos?
Vamos a usar como ejemplo los datos de transcriptómica de 200 genes medidos en 153 pacientes de los cuales 87 tienen cáncer de mama y 66 son individuos sanos. El obejetivo del estudio sería ver si hay genes que puedan estar asociados con el desarrollo de cáncer de mama. Ésto nos puede ayudar a prevenir el cáncer o a buscar nuevos fármacos para luchar contra la enfermedad.
Variables | Descripción |
---|---|
sample_id | Identificador del paciente |
tumor_1_normal_2 | Si tiene cáncer de mama es 1 y si es una mujer sana es 2 |
Genes | El resto de variables corresponden a los nombres de los genes estudiados que son variables cuantitativas representando los niveles de expresión. No pueden ser negativos |
¿Podemos ir mirando variable por variable si es numerica, categorica, etc?
Una forma de asegurarnos lo que hay en un fichero tan grande es a través del uso de funciones como apply() sapply()
apply()
es un tipo de función en R que aplica la función que se le pase como argumento a todos los elementos de una matriz.
apply
tiene tres argumentos:
X
: Una matriz o un objeto que pueda coercionarse a una matriz, generalmente, un data frame.
MARGIN
: La dimensión (margen) que agrupará los elementos de la matriz X
, para aplicarles una función. Son identificadas con números, 1 son filas y 2 son colummnas.
FUN
: La función que aplicaremos a la matriz X
en su dimención MARGIN
.
sapply()
es un caso especial de apply()
, diseñado para aplicar funciones a todos los elementos de una lista, vector o data.frame.
Para ver el tipo de dato en nuestro ejemplo usaríamos la función class()
combinada con sapply()
:
Vemos que tenemos una variable character, 4 integer y 197 numeric. La variable character debería ser la correspondiente al ID, las numeric los genes, pero, ¿a qué corresponden las 4 integer?
Vemos que uno de los integer es la variable que nos indica si la muestra corresponde a mujer con cáncer o sana. Ésta debería ser un factor. Los otros tres corresponden a genes que o tienen todo ceros o tienen todo unos. Esto claramente son genes que son erróneos y por tanto procederemos a eliminarlos.
Creamos un gráfico con las proporciones correspondientes para la variable tumor_type:
Para comprobar el resto de variables podemos hacer algunos gráficos:
Este tipo de datos están normalizados, por tanto una cosa que se debería comprobar es si siguen una distribución normal. Este lo trabajaremos más en el Tema 4.
Para comprobar que no haya cosas raras podemos representar un boxplot e intentar ver todos los individuos y genes en un solo gráfico:
Y otro por genes:
En el primero no detectamos nada que llame la atención por tanto no parece que los pacientes tengan que pasar ningún filtro, pero en el de genes observamos que algunos genes tienen muchos ceros o valores muy cercanos a cero. En este tipo de datos esto es un problema ya que un gen con muchos ceros o valores cercanos a cero puede ser indicativo de que la secuenciación ha fallado para ese gen y por tanto habría que quitarlo. Esto lo veremos en el Tema 2.