O documento discute modelagem estatística linear e p-values. Ele apresenta um modelo de regressão linear entre a altura dos pais e filhos, simula amostras deste modelo, e discute como p-values podem ser usados para testar hipóteses sobre os coeficientes do modelo à medida que o tamanho da amostra aumenta.
1. +
Bioestatística - Universidade Católica de Brasília
Inferências e P-values
Prof. Dr. Gabriel da Rocha Fernandes
Universidade Católica de Brasília
gabrielf@ucb.br - fernandes.gabriel@gmail.com
2. +
Modelagem estatística
2
nDescrever a distribuição das variáveis.
nDescrever a relação entre as variáveis.
nFazer inferências sobre distribuições ou relações.
4. +
Modelo linear
nCarregando os dados:
n install.packages('UsingR')
n library('UsingR')
n data(galton)
nObservando os dados:
n hist(galton$child,col="blue",breaks=100)
n hist(galton$parent,col="blue",breaks=100)
nE se eu só sei a média?
n hist(galton$child,col="blue",breaks=100)
n meanChild <- mean(galton$child)
n lines(rep(meanChild,100),seq(0,150,length=100),col="red",lwd=5)
4
5. +
Modelando
nObserve os pontos:
n plot(galton$parent,galton$child,pch=19,col="blue")
n smoothScatter(galton$parent,galton$child)
nEncontrando os modelo:
n lm1 <- lm(galton$child ~ galton$parent)
n lines(galton$parent,lm1$fitted,col="red",lwd=3)
nEquação de uma linha:
n y = a + bx
nNem todos os pontos estão na linha, isso pode ser explicado
por outras variávies residuais (alimentação, esportes...)
n y = a + bx + e
5
6. +
O que fica de fora da linha?
nResíduo.
n smoothScatter(galton$parent,lm1$residuals)
n abline(c(0,0),col="red",lwd=3)
nQuais os coeficientes:
n lm1
nEquação final:
n Altura da criança = 23.942 + 0.646 * Altura do Pai
6
8. +
Muitas subamostras
nGerando:
n sampleLm <- vector(100,mode="list")
n for(i in 1:100){
sampleGalton <- newGalton[sample(1:1e6,size=50,replace=F),]
sampleLm[[i]] <- lm(sampleGalton$child ~ sampleGalton$parent)
}
nO que posso inferir sobre meu modelo (linha vermelha), se o
que eu tenho quando faço subamostras é isso:
n smoothScatter(newGalton$parent,newGalton$child)
n for(i in 1:100){abline(sampleLm[[i]],lwd=3,lty=2)}
n abline(lm1,col="red",lwd=3)
8
9. +
Histogramas das estimativas (a e b)
nHistograma de a:
n hist(sapply(sampleLm,function(x){coef(x)
[1]}),col="blue",xlab="Intercept",main="")
nHistograma de b:
n hist(sapply(sampleLm,function(x){coef(x)
[2]}),col="blue",xlab="Slope",main="")
nb0 ∼ N(b0,Var(b0))
9
10. +
Estimando os valores em R
nEntendendo um modelo linear:
n sampleGalton4 <- newGalton[sample(1:1e6,size=50,replace=F),]
n sampleLm4 <- lm(sampleGalton4$child ~ sampleGalton4$parent)
n summary(sampleLm4)
nObservando as diferenças entra a população e a amostra:
n hist(sapply(sampleLm,function(x){coef(x)
[2]}),col="blue",xlab="Slope",main="",freq=F)
n lines(seq(0,5,length=100),dnorm(seq(0,5,length=100),mean=coef(sam
pleLm4)[2], sd=summary(sampleLm4)$coeff[2,2]),lwd=3,col="red")
10
11. +
Intervalos de confiança
n Se temos uma estimativa b, e queremos saber quão bom esta
estimativa é.
n Um jeito é criar um nivel de confiança.
n Fazendo:
n summary(sampleLm4)$coeff
n confint(sampleLm4,level=0.95)
n Vendo:
n par(mar=c(4,4,0,2));plot(1:10,type="n",xlim=c(0,1.5),ylim=c(0,100),
xlab="Coefficient Values",ylab="Replication")
n for(i in 1:100){
n ci <- confint(sampleLm[[i]]); color="red";
n if((ci[2,1] < lm1$coeff[2]) & (lm1$coeff[2] < ci[2,2])){color = "grey"}
n segments(ci[2,1],i,ci[2,2],i,col=color,lwd=3)}
n lines(rep(lm1$coeff[2],100),seq(0,100,length=100),lwd=3)
11
12. +
P-value
nPrincipal medida de significância estatística.
nComumente citado em artigos.
nUsado para tomada de decisões.
nControverso entre os estatísticos.
nSuponha que nada tenha acontecido. Quão incomum é ver as
estimativas que obtivemos?
nAbordagens:
n Definir uma distribuição hipotética de um dado quando nada está
acontecendo (hipótese nula)
n Calcular a estatística com os dados que obtivemos.
n Comparar os valores calculados.
12
13. nSeus dados obedecem a uma distribuição:
nH0: Não há relação entre a altura do pai e do filho (b1=0).
nSob essa hipótese, temos:
nSimulando uma distribuição nula:
n x <- seq(-20,20,length=100)
n plot(x,dt(x,df=(928-2)),col="blue",lwd=3,type="l")
nEstatística observada:
n arrows(summary(lm1)$coeff[2,3],0.25,summary(lm1)$coeff[2,3],
0,col="red",lwd=4)
+
Hipoteses
13