5/5/23
Cuantificamos una medida de asociación fenotipo-expresión.
Cuantificamos la medida de asociación.
Vemos la densidad.
Para un gen tenemos su perfil de expresión \(u = (u_1,\ldots,u_n)\) y tenemos el vector \(y\) asociado a las muestras.
Sea \(\pi\) denota una permutación aleatoria de \((1,\ldots,n)\) de forma que los \(\pi(i)\) será el índice que ocupa la posición \(i\)-ésima en la permutación \(\pi\).
Denotaremos por \(\pi_0\) la permutación que nos devuelve el orden original: \(\pi_0(j) = j\).
Si el vector asociado a las muestras es \(y\) entonces tendremos el vector (permutado de \(y\)) \(y_{\pi} = (y_{\pi(1)},\ldots,y_{\pi(n)})\).
Obviamente, \(y = y_{\pi_0}\).
El valor observado de la asociación gen-fenotipo para \(u\) e \(y\) será \(t_{\pi_0}\).
Si consideramos \(B\) permutaciones aleatorias entonces tendremos los valores \(t_{\pi_1},\ldots,t_{\pi_B}\) para las \(B\) permutaciones aleatorias.
Si no hay asociación gen-fenotipo entonces el valor de \(t_{\pi_0}\) debe de ser como los valores \(t_{\pi_1},\ldots,t_{\pi_B}\).
De hecho, cualquier ordenación de \(t_{\pi_0},t_{\pi_1},\ldots,t_{\pi_B}\)
tiene la misma probabilidad.
El p-valor sería la proporción de \(t_{\pi_b}\)s mayores que \(t_{\pi_0}\), es decir, \[ p_r = \frac{|\{b: t_{\pi_b} > t_{\pi_0}\}|}{B+1}. \]
En el caso en que una mayor asociación se exprese como un valor muy grande (positivo) o muy pequeño (negativo) de \(t\) entonces el p valor vendría dado por \[ p_r = \frac{|\{b: |t_{\pi_b}| > |t_{\pi_0}|\}|}{B+1}, \] ya que tendríamos un test bilateral.
sample.Determinamos los valores absolutos de los estadísticos.
El p-valor será
¿Y si contrastamos la alternativa de valores mayores en el segundo grupo?
Vamos a realizar el contraste para cada uno de los 50 grupos considerados.
[1] 0.00153168
[1] 0.9984722
[1] 2.837697e-08
EnrichmentBrowser tiene algunas funciones útiles para bajar colecciones de Gene Ontology (GO) y KEGGBP (biological process) utilizando el paquete GO.db.¿Qué tipo de datos tenemos?
¿Cuántos grupos tenemos?
Podemos acceder a cada elemento de la lista con la posición
$`GO:0000002`
[1] "291" "1890" "4205" "4358" "4976" "9361" "10000" "55186" "80119"
[10] "84275" "92667"
o el nombre
$`GO:0000002`
[1] "291" "1890" "4205" "4358" "4976" "9361" "10000" "55186" "80119"
[10] "84275" "92667"
Los elementos que la componen los tenemos con
[1] "291" "1890" "4205" "4358" "4976" "9361" "10000" "55186" "80119"
[10] "84275" "92667"
o con
[1] "291" "1890" "4205" "4358" "4976" "9361" "10000" "55186" "80119"
[10] "84275" "92667"
Los primeros elementos de la lista son
$`GO:0000002`
[1] "291" "1890" "4205" "4358" "4976" "9361" "10000" "55186" "80119"
[10] "84275" "92667"
$`GO:0000003`
[1] "2796" "2797" "8510" "286826"
$`GO:0000012`
[1] "1161" "2074" "3981" "7141" "7515" "23411"
[7] "54840" "54840" "55775" "55775" "55775" "200558"
[13] "100133315"
$`GO:0000017`
[1] "6523" "6523" "6523" "6524"
$`GO:0000018`
[1] "3575" "3836" "3838" "9984" "10189" "56916"
$`GO:0000019`
[1] "4361" "10111"
lapply and sapplySi queremos conocer el número de elementos de cada grupo de genes tenemos
¿Qué es ngs?
Otra opción para conocer el número de elementos de cada grupo sería
Ahora ngs es
Podemos seleccionar los grupos de genes con más de 10 elementos con
test = rowtassociation="statisticGeneNullDistr = "randomization",GeneSetNullDistr = "self-contained"alternative="two-sided" (otras opciones son "less" o "greater")nmax = 100id = "ENTREZID"gsc=hsa_godata(gse21942,package="tamidata")
gse21942_self = tami::GeneSetTest(x = gse21942,y="FactorValue..DISEASE.STATE.",
test = rowtmod,gsc=hsa_go,
association="statistic",correction="BH",
GeneNullDistr = "randomization",
GeneSetNullDistr = "self-contained",
alternative="two-sided",nmax = 100,
id = "ENTREZID",descriptive=mean,
foutput = "gse21942_self")gse21942_comp = tami::GeneSetTest(x = gse21942,y="FactorValue..DISEASE.STATE.",
test = rowtmod,association="statistic",correction="BH",
GeneNullDistr = "randomization",
GeneSetNullDistr = "competitive",
alternative="two-sided",nmax = 100,
id = "ENTREZID",gsc=hsa_go,descriptive=mean,
foutput = "gse21942_comp")data.framedata.frame las tenemos con GO statistic rawp adjp
GO:0000002 GO:0000002 -0.8156418 0.64646465 0.8237807
GO:0000012 GO:0000012 -1.7272039 0.08080808 0.1848677
GO:0000018 GO:0000018 -4.4991525 0.00000000 0.0000000
GO:0000027 GO:0000027 -1.8897751 0.00000000 0.0000000
GO:0000028 GO:0000028 -3.2247175 0.00000000 0.0000000
GO:0000038 GO:0000038 1.1246832 0.24242424 0.4172263
PRJNA297664PRJNA297664_self = GeneSetTest(x = PRJNA297664,y="treatment",gsc=sce_go,
test = edgercommon,association="statistic",correction="BH",
GeneNullDistr = "randomization",
GeneSetNullDistr = "self-contained",
alternative="two-sided",nmax = 100,
id = "ENTREZID",descriptive=mean,
foutput = "PRJNA297664_self")[1] "./reports/PRJNA297664_self.html"
[1] "./reports/PRJNA297664_comp.html"