Considerações estatísticas em
estudos de microarranjos e afins
Parte III
Antonio Guilherme F Pacheco
Na conversa de hoje
 Discussão



Testes de permutação
FDR
Outras questões
 Exemplo


do paper sobre q-valor
prático
Usando o R
Programação (S)
Testes de permutação

Antes de entrarmos no paper propriamente dito,
vamos ver como funciona um teste de
permutação

Vamos demonstrar como podemos obter uma
curva de distribuições de médias amostrais
empírica para ser usada no lugar da nossa
curva teórica



Nesse caso, sob a H0
Isso é feito a partir dos nossos próprios dados
Para facilitar, vamos usar um exemplo com duas
amostras (mas pode ser estendido para mais
amostras)
Testes de permutação

A idéia é simples




Sob H0, qualquer valor que seja achado, muito
afastado do valor de H0 ou não serão meramente
uma questão de termos selecionado determinada
amostra
Mesma idéia que já vimos anteriormente
Mas se isso representa apenas um erro aleatório,
e na verdade ambas as amostras representam
uma mesma população (i.e. a diferença de suas
médias é zero)…
Posso construir uma curva de diferenças de
médias apenas “embaralhando” aleatoriamente
os valores das duas amostras muitas vezes
Testes de permutação

Sem entrar em detalhes por enquanto,
vamos ver como ficaria uma distribuição
teórica (que já vimos como se faz) com uma
empírica obtidas dessa forma

Em vez da diferença das médias
propriamente ditas, podemos fazer a mesma
coisa para uma transformação qualquer
dessas diferenças, como a estatística T

Esse procedimento incorpora de maneira
correta a variabilidade que seria estimada a
partir da amostra
0.0
0.0
0.2
0.1
0.4
P(t<=T)
0.2
Density
0.6
0.8
0.3
1.0
0.4
Testes de permutação
PDF
-4
-2
0
t
CDF
2
4
-4
-2
0
t
2
4
Testes de permutação

Uma vez tendo essa distribuição empírica,
podemos calcular um p-valor empírico,
baseado nessa distribuição

No nosso caso, existe uma vantagem nesse
procedimento que é incorporar os testes de
todas as comparações ao mesmo tempo, o
que nos permite incorporar a variabilidade
total do sistema nessa distribuição, dando
conta, pelo menos em parte, do problema da
correlação entre os testes

Veremos isso melhor depois
O artigo
É
mais um resumão de um trabalho
teórico anterior com uma aplicação
prática
 Explica
o conceito de FDR e as
dificuldades
 Propõe
o q-valor como uma medida
interessante para a FDR para muitas
comparações simultâneas
O artigo
 Quatro


exemplos de possíveis usos
Só para mostrar a aplicabilidade ampla do
método
Eles acabam trabalhando mesmo com o
Exemplo 1
 Esse
exemplo é bem parecido com o
que vamos ver adiante
 Vamos
ver agora os conceitos com
calma, começando pela FDR
FDR

Agora, vamos ver um pouco melhor a idéia
da FDR

Vamos ver a tabela do artigo



Parece com a que nós vimos para o Erro Tipo I
Só que aqui será para m testes diferentes
O principal é entender a diferença entre o  e
a FDR

Vamos usar a notação do artigo
FDR
PNAS 2003, 100(16) 9440-5


Não é difícil ver a diferença nesse caso
Só muda o denominador
E F 

m
F
FDR  E  
S
FDR

Mas o ‘pulo do gato’ da FDR não é esse
apenas

Se fosse só isso não faria diferença para o ajuste
clássico de Bonferroni

A FDR é na verdade um relaxamento da
idéia que nós vimos de que todos são
inocentes até que se prove o contrário

Não só vamos partir do princípio que alguns
são ‘culpados’ (são realmente diferentes),
como vamos fazer as contas baseadas nos
dados – data driven
Recordando...

Já tínhamos visto as características de uma Binomial e
que o conjunto de testes falsamente positivos poderia
ser descrito por ela

Recordando, em geral...
X ~ B(n, p)
n x
n x
P( X  x)    p (1  p)
 x
E ( X )  np
FDR
F ~ B(m,  )

Já tínhamos visto isso
para o Bonferroni
Fazendo com a notação
do artigo
m x
P( F  x)    (1   ) m  x
x
E ( F )  m

Então, de maneira geral,
com o rigor anterior,
com  de 0.05,
queremos achar
 m
   P( F  0)   0.050 (0.95) m
0

E o número esperado de
testes errados será…
E F 
E ( F )  m   
m

FDR
 Só
que agora, eu não vou mais assumir
que todos as H0 são verdadeiras
 Algumas
não são, mas não sei
exatamente quantas
 Então,
 Como
é preciso estimar E(F)
no artigo ele está interessado em
demonstrar o q-valor, um ponto de corte
(t) é introduzido na notação
FDR
 F (t )  EF (t )
 
FDR(t )  E
 S (t )  ES (t )

O denominador é observável, pois são os testes
que são de fato rejeitados

O problema é o numerador, já que agora eu não
assumo mais que todos os testes são nulos

Então, é preciso estimar E(F)

E isso pode ser feito estimando-se
0 
m0
m
FDR

Agora, notem que se 0 = 1, m0 = m


Recaímos então no nosso caso clássico!!!
É por isso que é dito no artigo que essa situação
é mais conservadora

A questão então é estimar essa quantia,
balanceando viés e variabilidade

Não vamos entrar em detalhes, mas eles
propõem usar um alisamento com splines
para essa estimativa


Na verdade existem outras maneiras de estimar
Vamos olhar rapidamente como funciona
essa escolha do 
FDR
PNAS 2003, 100(16) 9440-5
FDR
PNAS 2003, 100(16) 9440-5
FDR

Um ponto importante é que não importa o
teste a ser usado – desde que seja o mesmo

O q-valor então será um valor associado a
um determinado p-valor de um teste feito,
sendo que dentre todos os testes que
tiveram esse p-valor ou menor, (q x 100)%
serão falso-positivos

Esse procedimento está implementado no R,
em um pacote chamado “q-value”

Ele apenas exige um vetor com os p-valores
encontrados
R

Antes de entrar na parte de análise
propriamente dita, vamos ver alguns
conceitos básicos sobre o R

Como ele é um pouco diferente dos pacotes
estatísticos tradicionais, é melhor ver
rapidamente como ele funciona, só para não
ficar boiando nos exemplos

Vamos ver um resumo rápido do material que
vocês leram...
Introdução





O que é o R?
O R utiliza menus para fazer análises
estatísticas? Isso é uma vantagem ou uma
desvantagem?
Mesmo sendo um software gratuito, o R é
confiável?
O que são os módulos adicionais do R?
Quais as vantagens de usar o R para análise
de dados genéticos?
Entendendo a ajuda do R

Como acessar a ajuda?
 Tipos de ajuda no R
 Como realizar uma consulta?
 Entendendo o resultado da consulta: Uma janela
será aberta com os seguintes itens:
1. Description (Descrição)
2. Usage (Sintaxe)
3. Arguments (Argumentos)
4. Details (Detalhes)
5. Value (Valores)
6. See Also (Ver também)
7. Examples (Exemplos)
Cálculos e Funções
O
R pode ser usado como uma simples
calculadora onde os operadores
matemáticos são + , - , * , / e ^ ;
 Função:
É uma expressão (programa)
que retorna um valor ou uma lista de
valores,usualmente depois de realizar
algumas operações.
Cálculos e Funções
 Características
básicas das funções
disponíveis no R:
> função (argumento(s) obrigatório(s),
argumento(s) opcional(is))
Exemplos:
> log (2187, base=3)
> log ( , base=3)
> log (2187, )
Para entender os
argumentos da função,
busque na ajuda:
>?log
Objetos
 Objeto:
toda e qualquer informação
armazenada no R, tal como: funções,
vetores, matrizes, listas, data frames;
 Para criar um objeto, deve-se usar sempre
o operador assignment (<-);
Exemplo:
> x <- 3
> x
[1] 3
Além disso, para visualizar todos
os objetos existentes, basta fazer:
>ls( )
Objetos
O
R salva todos os objetos num mesmo
arquivo com extensão “.Rdata”;
 Assim, o R salva apenas os OBJETOS, não
recuperando dessa maneira os resultados
de funções e saídas gráficas (mais tarde
veremos como salvar essas saídas);
 Podemos também, salvar um histórico com
os comandos que usados anteriormente;
Vetores

Vetor: É uma seqüência, em uma ordem
específica de valores de um mesmo tipo de
dados;
 Esses valores podem ser: numéricos, lógicos,
caracteres ou complexos;
Exemplos:
> z<-alho
Error: Object "alho" not found
> z<-"alho"
> z
[1] "alho"
> Y<-25
> Y
[1] 25
> y
Error: Object "y" not found
Vetores
ATENÇÃO!
> x <- “aluno”
> x
[1] aluno
> x <- 25
> x
[1] 25
Repare que o R faz todas as
substituições que pedimos,
sem nos notificar de que
estamos substituindo o
conteúdo de um objeto. Por
isso, devemos ficar sempre
atentos aos ‘nomes’ dos
objetos que estamos
trabalhando...
Vetores
 Para
entrar com seqüências que tenham mais
de um valor, basta usar a função c():
> vec1 <- c(1, 2, 3, 4, 5)
> vec1
[1] 1 2 3 4 5
> vec2 <- c("Ana", "Pedro", "Léo", "Joana", NA)
> vec2
[1] "Ana"
"Pedro" "Léo"
"Joana" NA
Vetores
 Outras
maneiras de se gerar uma
seqüência:


Função seq()
Função rep()
 Seleção


de partes de um vetor
Operações básicas apenas
Mais detalhes no decorrer do curso
Operações com Vetores
 Podemos
fazer operações vetoriais no R
 Evitando erros

devem ter o mesmo tamanho (mas pode não ter
– lei da reciclagem)
> x <- 1:10
> y <- c(1,2)
> x+y
[1] 2 4 4 6
6
8
8 10 10 12
x : 1 2 3 4 5 6 7 8 9 10
y : 1 2 1 2 1 2 1 2 1 2
----------------------------------x+y : 2 4 4 6 6 8 8 10 10 12
(note como foi repetido)
Operações com Vetores
 Evitando

erros
respeite a precedência aprendida no
ensino fundamental
> peso <- c(62, 70, 52, 98, 90, 70)
> altura <- c(1.70, 1.82, 1.75, 1.94, 1.84, 1.61)
> (peso/altura)^2 # Errado
[1] 1330.1038 1479.2899 882.9388 2551.8121 2392.4858
1890.3592
> peso/(altura^2) # Certo
[1] 21.45329 21.13271 16.97959 26.03890 26.58318 27.00513
Operações com Vetores
Operações
lógicas
> x <- 1:10
> x[x > 5]
[1] 6 7 8 9 10
> x <- c(3, 5, 3, 2, 5, 7, 5)
> y <- c(23, 21, 20, 12, 20, 30, 29)
> x == 5
[1] FALSE TRUE FALSE FALSE TRUE FALSE
> y[x == 5]
[1] 21 20 29
TRUE
Fatores
 Armazenamento de dados
 Possuem níveis (levels)
> c5 <> c5
[1] "M"
> f5 <> f5
[1] M F
Levels:
categóricos
c('M','F','F','F','M','M')
"F" "F" "F" "M" "M"
as.factor(c5)
F F M M
F M
 Podem
ser modificados
> levels(f5) <- c("Female","Male")
> f5
[1] Male
Levels:
Female Female Female Male
Female Male
Male
Gerando Distribuições e Gráficos
 No
R, podemos gerar valores aleatórios
vindos de uma distribuição de
probabilidade específica, por exemplo
random normal:
> x <- rnorm (100, mean=10, sd=sqrt(4))
Tamanho do vetor Média Desvio Padrão
 Mas
será que há um default para essa
função?
> y <- rnorm (100)
> mean (y)
> sd(y)
Sim, a Normal Padrão com
média 0 e variância 1
Gerando Distribuições e Gráficos
 A função
 Outras




funções gráficas
hist()
boxplot()
stem()
par()
 Outras

genérica plot()
distribuições
rbinom()
Gerando Distribuições e Gráficos
 Outras




características de gráficos
Tipos de gráficos
Símbolos
Tipos de linha
Textos
Matrizes
 Somente
numéricas
 Seleção de linhas e colunas
> x[1:2,]
[,1] [,2] [,3]
[1,]
1
5
9
[2,]
2
6
10
 Outras
operações com matrizes
Lendo dados no R
 Entrada

de dados
A função read.table()
• Função genérica

A função read.csv()
• Problema com a versão do Excel
 Importanto


com a biblioteca foreign
A função read.spss()
Outras funções
Data frames e listas
 Data



Frames
Bancos de dados
Selecionando variáveis
Anexando um banco de dados
 Listas

Objeto mais complexo
Gerenciamento de dados no R
 Não
é adequado, mas muitas vezes
necessário


Troca de tipo de variável
Recodificação
 Funções


ajudam
summary()
table()
Loops

Loops são uma parte importante de qualquer
linguagem de programação
 Permite realizar tarefas de maneira repetida
 Existem várias formas de Loop
 Vamos ver apenas uma: for
 Funciona com índice (mais comum)
 > for (i in 1:10)
{
do something
}

Vai fazer alguma coisa 10 vezes nesse caso
Condicionais


Permite realizar tarefas de maneira condicional
Funciona com valores lógicos
 > if (x == y)
{
do something
}
else
{
do something else
}

Vai fazer alguma coisa se x=y e outra caso
contrário
O teste de permutação
 Vamos
ver agora então como foi feito
aquele teste de permutação simples que
vimos no início da aula
 Primeiro, vamos escrever uma função
para calcular um teste T
t.test.antonio<-function(x,y){
m1<-mean(x)
m2<-mean(y)
sn1<-var(x)/length(x)
sn2<-var(y)/length(y)
tstat<-(m1-m2)/sqrt(sn1+sn2)
tstat
}
O teste de permutação
 Agora
vamos fazer uma função com um
loop para que possamos fazer uma
simulação muitas vezes
t.test.permuta<-function (x,y, B=1000){
tstat<-NULL
z<-c(x,y)
for (i in 1:B){
mn<-sample(1:length(z),length(x),replace=F)
x1<-z[mn]
y1<-z[-mn]
tstat[i]<-t.test.antonio(x1,y1)
}
tstat
}
A análise
 Agora,
vamos ver como foi feita a análise
com os dados do Richard
 As funções são um pouco mais complexas
porque os dados exigem algumas
adaptações
 Vamos usar praticamente tudo o que
vimos nessas noções de R
 Vamos ver na prática…
Download

Introdução ao “R”