Download - Estatística - Aula 5
+
Bioestatística - Universidade Católica de BrasíliaDesenho experimental para predição
Prof. Dr. Gabriel da Rocha FernandesUniversidade Católica de Brasília
+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.
+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
+Definindo termos
nPositivo = identificado / Negativo = rejeitado
nTrue Positive = corretamente identificado
nFalse Positive = incorretamente identificado
nTrue Negative = corretamente rejeitado
nFalse Negative = incorretamente rejeitado
nExemplo médicon True Positive = pessoa doente identificada como doenten False Positive = pessoa saudável identificada como doenten True Negative = pessoa saudável identificada como tal.n False Negative = pessoa doente identificada como saudável
4
+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
+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
+Medidas de erros
nMean squared errorn Dados contínuos, sensível a outliers
nMedian absolute deviationn Dados contínuos, mais robusto
nSensibilidaden Se você quer perder poucos positivos
nEspecificidaden Se você quer poucos negativos sendo classificados como positivos
nAcurácian Leva em conta falsos positivos e falsos negativos igualmente
7
+Cross validation
nSub amostrar os dados para treino
nEvitar sobreajuste
nFazer previsões generalizáveis.
8
+Sobreajuste
9
+Classificador
n-0.2<y<0.6
10
+Novos dados
11
+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 paran Escolher variáveis para incluir a um modelon Escolher o tipo de função de predição a usarn Escolher os parâmetrosn Comparar diferentes preditores.
12
+Subamostragem aleatória
13
+K-fold
14
+Exemplo
15
+Predizendo com modelos de regressão
nCarregando os dadosn data(faithful)
nCriando conjunto teste/treinon set.seed(333)n trainSamples <- sample(1:272,size=(272/2),replace=F)n trainFaith <- faithful[trainSamples,]n testFaith <- faithful[-trainSamples,]
nVisão geraln plot(trainFaith$waiting,trainFaith
$eruptions,pch=19,col="blue",xlab="Waiting",ylab="Duration")
16
+Modelo linear
17
+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
+Calculando os erros
nCalculando o Root Mean Squared Error do treinon sqrt(sum((lm1$fitted-trainFaith$eruptions)^2))
nCalculando para o testen sqrt(sum((predict(lm1,newdata=testFaith)-testFaith$eruptions)^2))
nIntervalos de prediçãon 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
+Exemplos binários
nRavens datan load("/var/www/fileserver/ravensData.rda")
nRegressão logístican glm1 <- glm(ravenWinNum ~
ravenScore,family="binomial",data=ravensData)n boxplot(predict(glm1) ~ ravensData$ravenWinNum,col="blue")n boxplot(predict(glm1,type="response") ~ ravensData
$ravenWinNum,col="blue")
20