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 sapply
Si 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 = rowt
association="statistic
GeneNullDistr = "randomization",GeneSetNullDistr = "self-contained"
alternative="two-sided"
(otras opciones son "less"
o "greater"
)nmax = 100
id = "ENTREZID"
gsc=hsa_go
data(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.frame
data.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
PRJNA297664
PRJNA297664_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"