CDFs e Quantiles

Bem, então distribuições estatísticas são funções matemáticas que definem a probabilidade de certos eventos ocorrerem, um modelo para o comportamento de variáveis aleatórias. No post anterior vimos como são as PDF e PMF, ou funções de densidade, que nos mostram como essas probabilidades são, e para a distribuição exponencial vimos como com uma integral pode ser usada para definir a probabilidade de um determinado evento.

Essa funções para calcular essas areas de interesses são tão importantes que tem nomes especiais, que são as cumulative distribution function (CDF) e survival function.

Uma CDF de uma variável aleatória X é definida como a função

F(x)=P(X \leq x)

Essa definição se aplica independente de X ser discreto ou contínuo.
Já a survival function de uma variável X é definida como
S(x)=P(X>x)
Veja que como já definimos F(x), a survival function será S(x)=1-F(x), porque S(x)+F(x)=1, você se lembra como toda a área da probabilidade tem que ser 100% ou 1, então é isso.
Além disso, para variáveis aleatórias contínuas, o PDF é a derivada do CDF.

Vamos tentar ver isso baseado no exemplo do post passado aqui onde x=6.

Nosso PDF era
  f(x) = \left\{  \begin{array}{ll}  \frac{e^{-x/5}}{5} & \quad x\ \textgreater \ 0 \\  0 & \quad x \leq 0  \end{array}  \right.

Então a CDF, e a survival function são

Assim a surival function vai ser

\int_{x}^{\infty} \frac{e^{(-t/5)}}{5} dt = -e^{(-t/5)} \Big|_x^\infty=-e^{(-x/5)}

Assim sabemos que

F(x)=1-S(x)=1-e^{(-x/5)}

Porém podemos notar que podemos voltar na PDF com a derivada

f(x)=F'(x)=\frac{d}{dx}(1-e^{(-x/5)})=\frac{e^{(-x/5)}}{5}

Mas calcular isso no R, basta usar o pexp

> pexp(6,1/5,lower.tail = F) [1] 0.3011942 > 1-pexp(6,1/5,lower.tail = F) [1] 0.6988058

E podemos colocar esses valores na figura

Então a área vermelha é 30% da probabilidade e a área branca é 70% da probabilidade.

Assim, eu falo um ponto, em anos, e eu te digo quanto é a probabilidade da pessoa estar viva ou morrer, segundo nosso modelo. Agora suponha que a minha pergunta fosse, com quantos anos, após o exame, a pessoa acumula 50% de chance de morrer? Para essa pergunta a gente precisa do quantile.

O \alpha^{th} quantile de uma distribuição com função de distribuição F é o ponto x_\alpha tal que

F(x_\alpha)=\alpha

Um percentile é simplismente um quatile \alpha representado por porcentagem.

A mediana é o 50^{th} percentile

Para achar esse quantile, o que queremos é

0.5=F(x)

0.5=1-e^{(-x/5)}

x=-log(0.5) \cdot 5 \approx  3.47

Essa função esta implementada com o q antes do nome das distribuições, então nesse caso é qexp para achar o 50%

> qexp(0.5,1/5) [1] 3.465736

E para entender esse número, podemos olhar ele na nossa figura

Então quando a gente olha ?Distributions no R, vemos que cada distribuição tem 4 funções básicas,

  • A PDF, que começa com d
  • A CDF, que começa com p
  • O quantile que começa com q
  • E um gerador de números aleatórios para cada distribuição, que começa com r

E agora a gente sabe o que cada uma dessas funçõezinhas fazem 🙂

Bem é isso ai, o script vai estar la no repositório recologia, e se eu escrevi alguma bobeira, algo errado, deixe um comentário corrigindo ou mande um e-mail.

Referência:

Coursera, curso Mathematical Biostatistics Boot Camp 1 do Brian Caffo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
##jpeg("01.jpg")
curve(dexp(x,1/5),0,20,frame=F,xlab="Tempo em anos",ylab="Probabilidade")
polygon(c(seq(6,20,0.1),seq(20,6,-0.1)),c(dexp(seq(6,20,0.1),1/5),rep(0,141)),col="red")
text(8,0.02,"S(x)")
text(4,0.02,"F(x)")
##dev.off()
 
pexp(6,1/5,lower.tail = F)
 
1-pexp(6,1/5,lower.tail = F)
 
##jpeg("02.jpg")
curve(dexp(x,1/5),0,20,frame=F,xlab="Tempo em anos",ylab="Probabilidade")
polygon(c(seq(6,20,0.1),seq(20,6,-0.1)),c(dexp(seq(6,20,0.1),1/5),rep(0,141)),col="red")
text(8,0.02,paste("S(x)=",round(pexp(6,1/5,lower.tail = F),3),sep=""))
text(4,0.02,paste("F(x)=",1-round(pexp(6,1/5,lower.tail = F),3),sep=""))
##dev.off()
 
qexp(0.5,1/5)
 
##jpeg("03.jpg")
q50<-qexp(0.5,1/5)
curve(dexp(x,1/5),0,20,frame=F,xlab="Tempo em anos",ylab="Probabilidade")
polygon(c(seq(q50,20,0.1),seq(20,q50,-0.1)),c(dexp(seq(q50,20,0.1),1/5),rep(0,166)),col="red")
text(q50-2,0.02,paste("S(x)=",round(pexp(q50,1/5,lower.tail = F),3),sep=""))
text(q50+2,0.02,paste("F(x)=",1-round(pexp(q50,1/5,lower.tail = F),3),sep=""))
mtext(round(q50,2),side=1,at=q50)
abline(v=q50,col="blue",lty=3,lwd=2)
##dev.off()

Leave a Reply

Your email address will not be published. Required fields are marked *