Estatística - Aula 5

Preview:

Citation preview

+

Bioestatística - Universidade Católica de BrasíliaDesenho experimental para predição

Prof. Dr. Gabriel da Rocha FernandesUniversidade Católica de Brasília

gabrielf@ucb.br - fernandes.gabriel@gmail.com

+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