1. +
Bioestatística - Universidade Católica de Brasília
Desenho experimental para predição
Prof. Dr. Gabriel da Rocha Fernandes
Universidade Católica de Brasília
gabrielf@ucb.br - fernandes.gabriel@gmail.com
2. +
Construindo uma predição
2
nUsar os dados corretos
nDefinir a taxa de erros
nSeparar os dados:Treino,Teste, e Validação.
nSelecionar as características no seu conjunto treino.
nSe não tiver validação, aplique seu modelo ao conjunto teste
apenas uma vez.
nSe tiver validação, aplique, e refine seu resultado.
3. +
Escolha os dados corretamente
nTenha dados pra responder a pergunta que tem.
nEm alguns casos é fácil.
nOu mais difícil: expressão de um gene => doença.
nMais dados levam a melhores modelos.
nSaiba como avaliar a performance (bench mark)
3
5. +
Definindo erros
nTipo I: quando diz que é algo que não é (Falso Positivo)
nTipo II: quando diz que não é, algo que é (Falso Negativo)
5
6. +
Exemplo
n Sensibilidade: Identificamos 67% dos casos em que a pessoa tem
cancer.
n Especificidade: Em 91% das vezes em que for saudável, o teste diz que
é saudável.
n PPV: Se você tem um resultado positivo, existe 10% de chance que
aquele resultado esteja correto
n PNV: Se o teste diz que você é saudável, existe 99.5% de ele estar certo.
6
7. +
Medidas de erros
nMean squared error
n Dados contínuos, sensível a outliers
nMedian absolute deviation
n Dados contínuos, mais robusto
nSensibilidade
n Se você quer perder poucos positivos
nEspecificidade
n Se você quer poucos negativos sendo classificados como positivos
nAcurácia
n Leva em conta falsos positivos e falsos negativos igualmente
7
12. +
Abordagem
nUse um conjunto treino
nDivida em conjuntos treino e teste
nConstrua um modelo com o conjunto de treino
nAvalie com o conjunto de teste
nUsado para
n Escolher variáveis para incluir a um modelo
n Escolher o tipo de função de predição a usar
n Escolher os parâmetros
n Comparar diferentes preditores.
12
18. +
Predizer um novo valor
ncoef(lm1)[1] + coef(lm1)[2]*80
nnewdata = data.frame(waiting=80)
npredict(lm1, newdata)
nplot(trainFaith$waiting,trainFaith
$eruptions,pch=19,col="blue",xlab="Waiting",ylab="Duration"
);lines(trainFaith$waiting,predict(lm1),lwd=3)
nplot(testFaith$waiting,testFaith
$eruptions,pch=19,col="blue",xlab="Waiting",ylab="Duration"
); lines(testFaith
$waiting,predict(lm1,newdata=testFaith),lwd=3)
18
19. +
Calculando os erros
nCalculando o Root Mean Squared Error do treino
n sqrt(sum((lm1$fitted-trainFaith$eruptions)^2))
nCalculando para o teste
n sqrt(sum((predict(lm1,newdata=testFaith)-testFaith$eruptions)^2))
nIntervalos de predição
n pred1 <- predict(lm1,newdata=testFaith,interval="prediction")
n ord <- order(testFaith$waiting)
n plot(testFaith$waiting,testFaith$eruptions,pch=19,col="blue")
n matlines(testFaith$waiting[ord],pred1[ord,],type="l",,col=c(1,2,2),lty =
c(1,1,1), lwd=3)
19