bionformática estadísticabionformática estadística guillermo ayala gallego 28/01/2014 Índice...
TRANSCRIPT
Bionformática estadísticaGuillermo Ayala Gallego
28/01/2014
Índice
• Bioinformática (estadística)• Microarrays• Preprocesado• Expresión diferencial marginal: comparaciones múltiples, test de
Fisher• Enriquecimiento de conjuntos de genes o análisis de conjuntos de
genes• R/Bioconductor
Bioinformática
• Bioinformática
– Un campo interdisciplinar que desarrolla y mejora métodospara almacenar, recuperar, organizar y analizar datos biológi-cos. Una actividad fundamental en Bioinformática es el desar-rollo de software para generar conocimiento biológico útil.
• Bioinformática estadística
– Análisis de los datos obtenidos por la Biología a nivel molecu-lar, en particular, por las técnicas ómicas.
– Lo que no hay duda: uno de los campos de mayor demandaestadística en los últimos años.
Transcripción y translación
DNA Microarrays
Affymetrix GeneChip
Gene Expression Omnibus: GSE20986
library(Biobase)
library(GEOquery)
library(affy)
gcel = getGEOSuppFiles("GSE20986")
gse20986 = ReadAffy()
bionformática estadística 2
bionformática estadística 3
bionformática estadística 4
bionformática estadística 5
GSE20986_1: conjunto de sondas
¿Qué son estos niveles de gris?
• Para cada sonda tenemos un nivel de gris.• Un valor mayor indica un mayor número de hibridaciones y un
mayor número de copias.• El gen se expresa más.• ¿Tiene un sentido absoluto esta medida de expresión? No.• Esto resta importancia a los problemas de estimación.
¿Cómo es un experimento?
• Observamos n microarrays bajo distintas condiciones y.• Cada microarray es una muestra (una observación).• La variable y será:
– categórica con dos niveles (controles y casos) o más de dosniveles,
– numérica (tiempo, tasa de crecimiento celular, etc.),– un tiempo de supervivencia.
• Y la pregunta habitual: ¿hay relación entre la expresión y la vari-able y?
Un experimento
• La matriz de datos es
X =
x11 . . . x1n
......
...xN1 . . . xNn
• $x_{ij} = $ expresión (abundancia) de la característica i en la mues-
tra j.• En filas: características (N muy grande).• En columnas: muestras (n muy pequeño).
dim(gse20986raw)
## Loading required package: affy
## Features Samples
## 1354896 12
• Se asume: dependencia entre filas e independencia entre colum-nas.
Variabilidad intra y entre arrays
bionformática estadística 6
ID = probeNames(gse20986raw)[998]
matplot(pm(gse20986raw, ID), type = "l")
hist(gse20986raw)
Preprocesado de la información
• Corrección de fondo, normalización y obtención de la expresión.• Métodos más utilizados
– RMA: Robust Multiarray Average– MAS5.0 (proporcionado por el software de Affymetrix)
• Es muy importante evaluar el método de preprocesado.• Hipótesis como la independencia entre columnas no son demasi-
ado asumibles si estudiamos el método de preprocesado que se hautilizado (pero no hay más remedio).
RMA
• Corrección de fondo• Normalización de cuantiles
bionformática estadística 7
• Median polish
gse20986 = rma(gse20986raw)
dim(exprs(gse20986))
## [1] 54675 12
Expresión diferencial (marginal)
Comparaciones múltiples
• Una formulación (i = 1, . . . , m):
– Hi: El gen i no tiene una expresión diferencial entre las condi-ciones consideradas.
– Ki: El gen i tiene una expresión diferencial entre las condi-ciones consideradas.
• Quizás es mejor:
– Hi: La expresión del gen i no tiene asociación con la condición.– Ki: La expresión del gen i tiene asociación con la condición.
Benjamini and Hochberg (1995)
Hipótesis nula No rechazadas Rechazadas Total
Verdadera U V m0
Falsa T S m−m0 =
m1
Total m - R R m
• ¿Qué conocemos? Solamente la variable R y el número de hipóte-sis m.
Tasas de error
FWER: Family wise error rate
• Se define como:
FWER = P(V > 0) = P(V ≥ 1).
• Es la tasa de error de uso clásico en Estadística.• Correcta para un número pequeño de hipótesis.• Es un criterio muy exigente si tenemos un número de hipótesis
muy grande.
bionformática estadística 8
• Notemos que nos fijamos en cometer al menos un error cuandocon frecuencia tendremos decenas de miles de contrastes.
• Como (mala) contrapartida muchos genes que tendrán una expre-sión diferencial realmente no serán detectados.
FDR: false discovery rate
• O tasa de falsos positivos.• Definimos: Q = V/R si R > 0 y Q = 0 en otro caso.• Proporción de tests erróneamente rechazados.•
FDR = E(Q) = E(
VR|R > 0
)P(R > 0).
Método de Benjamini-Hochberg
1. Fijamos la tasa de error α.2. Para cada i (gen) aplicamos un test y obtenemos un p-valor pi.3. Ordenamos los p-valores
pr1 ≤ . . . ≤ prm .
4. Sea
i∗ = max{i : pri ≤im
α}
5. Rechazamos Hri para i = 1, . . . , i∗.6. Si no existe i∗ entonces no rechazamos ninguna hipótesis.
Lo aplicamos con dos grupos
library(genefilter)
library(multtest)
eset = gse20986[, c(2, 3, 5, 10:12)]
tissue = factor(rep(1:2, each = 3), levels = 1:2,
labels = c("retina", "huvec"))
tt = rowttests(eset, tissue) ## t-test
p.BH = mt.rawp2adjp(tt$p.value, "BH")
• Y podemos ver los más significativos.
head(p.BH$adjp)
## rawp BH
## [1,] 0.000000e+00 0.000000e+00
## [2,] 3.278121e-09 8.961564e-05
## [3,] 1.168274e-08 2.129180e-04
## [4,] 2.304883e-08 3.150488e-04
## [5,] 4.593095e-08 4.186219e-04
## [6,] 4.593930e-08 4.186219e-04
bionformática estadística 9
¿Y quienes son?
• Tal como hemos dado la información no sirve para nada.• ¿Qué genes son? Necesitamos su anotación.• Preguntamos qué chip o plataforma se ha utilizado.
annotation(eset)
## [1] "hgu133plus2"
• Y cargamos la base de datos correspondiente.
library(hgu133plus2.db)
## Loading required package: AnnotationDbi
## Loading required package: org.Hs.eg.db
##
##
• Estos genes ocupaban en la matriz original las posiciones.
(sig = head(p.BH$index))
## [1] 40374 23950 19312 14227 35603 41035
• El fabricante le asignó los siguientes identificadores.
(ID = featureNames(eset)[sig])
## [1] "231119_at" "214651_s_at" "209905_at"
## [4] "204779_s_at" "226346_at" "231780_at"
• Y en Gene Ontology sus identificadores son
library(annotate)
lookUp(ID, "hgu133plus2.db", "GO")
• O en ENTREZ
lookUp(ID, "hgu133plus2.db", "ENTREZID")
• O en la base de datos que uno prefiera.
bionformática estadística 10
Test de Fisher
• Ya tenemos un conjunto de genes significativos, S0.• Tenemos un universo de genes G.• Por ejemplo: los que proporciona la plataforma.• Consideramos un S1 un conjunto de genes predefinido (misma
función, misma localización).• ¿Hay una sobre representación de S0 en S1?• ¿O es un infra representación?
La tabla correspondiente
S1 Sc1 = G \ S1
S0 n11 n12 n1·Sc
0 n21 n22 n2·G n·1 n·2 N
• Y se aplica el test de Fisher unilateral.• Por cierto, le han cambiado el nombre: test hipergeométrico.
Lo aplicamos
library(GO.db)
library(Category)
library(GOstats)
Construimos el universo de genes y vemos si hay conjuntos desondas correspondientes a un mismo gen.
G.entrezid = unlist(mget(featureNames(eset), hgu133plus2ENTREZID))
anyDuplicated(G.entrezid)
## [1] 6
Seleccionamos entre los conjuntos asociados al mismo gen el quetiene mayor variación (en este caso, un mayor rango intercuartílico).
eset.iqr = apply(exprs(eset), 1, IQR)
uniqGenes = findLargest(featureNames(eset), eset.iqr,
"hgu133plus2")
eset.filt = eset[uniqGenes, ]
G.entrezid = unlist(mget(featureNames(eset.filt),
hgu133plus2ENTREZID))
anyDuplicated(G.entrezid)
## [1] 0
bionformática estadística 11
tt = rowttests(eset.filt, tissue) ## t-test
p.BH = mt.rawp2adjp(tt$p.value, "BH")
sig = which(p.BH$adjp[p.BH$index, 2] < 0.05)
selected = unlist(mget(featureNames(eset.filt[sig,
]), hgu133plus2ENTREZID))
Aplicamos test de Fisher.
params = new("GOHyperGParams", geneIds = selected,
universeGeneIds = G.entrezid, annotation = annotation(eset.filt),
ontology = "BP", pvalueCutoff = 0.001, conditional = FALSE,
testDirection = "over")
overRepresented = hyperGTest(params)
htmlReport(overRepresented, file = "figures/fisher.html")
• Y vemos los resultados.
Gene Set Enrichment Analysis
Análisis de conjuntos de genes
• El estudio anterior construye una lista de genes ordenados segúnp-valor (de menor a mayor).
• Utilizando un procedimiento decidimos un punto de corte en lalista.
• Por encima los declaramos significativos y por debajo no significa-tivos.
• Un análisis completamente marginal.• Los genes actúan de un modo conjunto: posiblemente un grupo de
genes relevantes como grupo no lo es individualmente.• ¿El test de Fisher lo resuelve? No.• El test de Fisher ayuda a interpretar el grupo de los declarados
significativos.
Expresión diferencial conjunta
• G = {1, . . . , N} el conjunto total de genes (el universo).• Tenemos grupos previamente definidos (por ejemplo, con Gene
Ontology): S1, . . . , SK.• ¿Hay asociación entre un conjunto de genes y el fenotipo?• La misma pregunta que nos formulábamos para cada gen pero
ahora en términos de un conjunto dado de genes.
bionformática estadística 12
¿Qué significa que un grupo de genes está asociado con el fenotipo?
• Hipótesis competitiva: Los genes de un conjunto muestran elmismo patrón de asociación con el fenotipo comparado con elresto de genes.
• Hipótesis autocontenida: El conjunto de genes no tiene ningúngen cuyo nivel de expresión está asociado con el fenotipo de in-terés.
Un método (hay decenas)
• Cuantificamos la asociación gen-fenotipo (por ejemplo, el t-estadístico con dos grupos): t = (t1, . . . , tN).
• Enriquecemos el conjunto S de genes de interés. Por ejemplo, lamedia muestral:
t0(S) = ∑i∈S
tinS
.
• Permutamos aleatoriamente y (fenotipo) y recalculamos el estadís-tico anterior: tπb(S) con b = 1, . . . , B.
• Si un estadístico grande indica asociación entonces el p-valor sería
p =|{b : tπb(S) > t0(S)}|
B.
Alguna reflexión
• Software libre (R/Bioconductor, pandoc)• R• Bioconductor• R/Markdown: http://www.uv.es/ayala/docencia/tami/presentaciones/
gse20986_2.Rmd
• http://www.uv.es/ayala/docencia/tami/presentaciones/
BioinformaticaEstadistica.html