Ferramentas do usuário

Ferramentas do site


biometria:verossim:01-distr


1. Variáveis Aleatórias Discretas


Conceitos

  • Variável aleatória
  • Distribuição de probabilidade
  • Distribuições discretas e contínuas
  • Parâmetros da distribuição
  • Esperança e variância
  • Variáveis aleatórias discretas mais usadas em ecologia

Tutoriais

Uma Variável Binomial

Qual a probabilidade de que nasça apenas um macho em uma ninhada de cinco filhotes de cachorro-do-mato, se a definição do sexo é independente para cada um, e as chances de nascerem machos e fêmeas são iguais?

Essa probabilidade é obtida pela distribuição binomial, com o seguinte comando no R:

> dbinom(x=1,size=5,prob=0.5)

Esta função retorna a probabilidade do número de sucessos de um total de tentativas independentes, dada a probabilidade de sucesso em cada tentativa. O número de tentativas (size) e a probabilidade (prob) são os parâmetros da função.

Qual sua expectativa se alterarmos os parâmetros? Por exemplo, experimente reduzir as chances de nascimento de machos para um terço:

> dbinom(x=1,size=5,prob=1/3)

E se aumentarmos o tamanho da ninhada?

> dbinom(x=1,size=10,prob=0.5)

Antes de prosseguir, certifique-se que você compreendeu os motivos das diferenças dos três resultados.


Esperança Estatística da Binomial

Voltando ao primeiro caso de variável binomial, os resultados possíveis para uma ninhada são 0, 1, 2, 3, 4 ou 5 machos. Suas probabilidades são:

> p1<- dbinom(x=0:5, size=5, prob=0.5)
> names(p1) <- 0:5
> p1

O que podemos colocar em um gráfico:

> plot(0:5,p1,type="h",lwd=5,col="blue",xlab="N de machos",ylab="Probabilidade")

Todos os valores entre zero e cinco machos podem ocorrer, mas alguns são mais prováveis. Se tivéssemos uma amostra de muitas ninhadas, qual seria o número médio de machos? Podemos simular essa situação, sorteando mil valores de uma distribuição binomial, com os mesmos parâmetros:

> sim1 <- rbinom(n=1000,size=5,prob=0.5)

Os primeiros valores são:

> head(sim1)

E a média dos mil valores é obtida com:

> mean(sim1)

Este número faz sentido para você? Ele é uma aproximação da esperança da variável aleatória.

O valor teórico da esperança estatística de uma variável aleatória discreta é obtido multiplicando-se cada valor por sua probabilidade, e então somando-se estes resultados1):

$$E[X] = \sum_{i=1}^n x_i P(X=x_i)$$

No R podemos calcular isto com os comandos:

> esper <- sum(0:5*p1)
> esper

Marque este valor no eixo x do gráfico:

> mtext(at=esper,text="^",side=1,line=0.5,cex=2,col="red")

Uma interpertação da esperança é que ela é o centro de massa de uma distribuição de probabilidades. Se o eixo do gráfico fosse uma balança, a média seria o ponto de apoio para que os dois lados se equilibrassem. A esperança é a média da distribuição, o valor médio esperado para a variável aleatória.

Alterando Parâmetros da Distribuição Binomial

Calcule as probabilidades para ninhadas de 5 e 10 filhotes, com probabilidades de 1/3 e 0,5 de nascimento de machos:

> p2 <- dbinom(0:5,size=5,prob=1/3)
> p3 <- dbinom(0:10,size=10,prob=0.5)
> p4 <- dbinom(0:10,size=10,prob=1/3)

Faça gráficos das distribuições de probabilidade para avaliar o efeito das mudanças dos parâmetros:

> maxp <- max(c(p1,p2,p3,p4))
> par(mfrow=c(2,2))
> plot(0:5,p1,main="n=5, p=0.5",  xlim=c(0,10), ylim=c(0,maxp),type="h",lwd=5,xlab="N de machos",ylab="Probabilidade")
> plot(0:5,p2,main="n=5, p=1/3",  xlim=c(0,10),ylim=c(0,maxp),type="h",lwd=5,xlab="N de machos",ylab="Probabilidade")
> plot(0:10,p3,main="n=10, p=0.5",xlim=c(0,10),ylim=c(0,maxp),type="h",lwd=5,xlab="N de machos",ylab="Probabilidade")
> plot(0:10,p4,main="n=10, p=1/3",xlim=c(0,10),ylim=c(0,maxp),type="h",lwd=5,xlab="N de machos",ylab="Probabilidade")
> par(mfrow=c(1,1))

Variável Poisson

Uma variável Poisson é um modelo do número de eventos em uma unidade de tempo ou espaço, dado que a taxa de eventos por unidade é constante, e os eventos são independentes. O único parâmetro da Poisson é $$\lambda$$, a taxa de eventos por unidade.

Portanto, se um certo número de objetos está distribuído ao acaso por uma área, e esta área é dividida em quadrículas de mesmo tamanho, o número de objetos por quadrículas pode ser descrito como uma variável Poisson. Neste caso, o parâmetro $$\lambda$$ será o total de objetos dividido pelo total de quadrículas.

Para simular uma situação como esta, vamos distribuir ao acaso 1.000 plantas em uma área de 20 x 20 metros, divida em quadrículas de 1 x 1 m, como na figura abaixo

Plantas distribuídas ao acaso em uma área de 20 x 20

Primeiro geramos mil coordenadas $$x$$ e $$y$$ entre 0 e 20, de uma distribuição uniforme2):

set.seed(42) ## fixa a semente de números aleatórios
x <- runif(n=1000,min=0, max=20)
y <- runif(n=1000,min=0, max=20)

Para simular as quadrículas, dividimos as coordenadas em fatores com intervalo de um, que representam segmentos de um metro. As linhas recebem rótulos de 1 a 20, e as colunas rótulos de A a T:

x.parc <- cut(x,breaks=0:20, labels=1:20)
y.parc <- cut(y,breaks=0:20, labels=LETTERS[1:20])

E então usamos a função table para contar quantos valores há em cada combinação destes fatores. Esta tabela cruzada é então transformada em um data frame e o resultado atribuído a um objeto:

cont <- data.frame(table(x.parc,y.parc))

O objeto resultante terá a contagem de pontos em cada combinação dos rótulos de linhas e colunas, ou seja, quantos plantas há em cada quadrícula.:

> head(cont)
  x.parc y.parc Freq
1      1      A    1
2      2      A    1
3      3      A    3
4      4      A    3
5      5      A    1
6      6      A    3
> tail(cont)
    x.parc y.parc Freq
395     15      T    1
396     16      T    2
397     17      T    3
398     18      T    1
399     19      T    2
400     20      T    2

Contamos o número de parcelas com cada abundância com a função table

   freq.ab <- table(cont$Freq)

Dividimos estas contagens pelo total de parcelas para obter proporções, e as representamos em um gráfico aplicando a função plot:

plot(freq.ab/400, xlab="N de indivíduos na parcela", 
     ylab="Proporção das parcelas")

Em seguida adicionamos as probabilidades previstas para uma variável Poisson com a mesma taxa de ocorrência, que é de 1.000 plantas em 400 parcelas ($$\lambda = 0,25$$):

points(x=0:max(cont$Freq), y=dpois(0:max(cont$Freq), 
       lambda=1000/400), type="b", 
       col="blue", lty=2)

Avalie visualmente a concordância entre os valores previstos e simulados.

Extras

Caso queira reproduzir a primeira figura deste tutorial, os comandos são:

plot(x=x,y=y,axes=F, xlab="", ylab="", 
     xlim=c(-1,20),ylim=c(0,21))
segments(x0=rep(0,20),y0=0:20,
         x1=rep(20,20),y1=0:20, col="gray", lty=2)
segments(x0=0:20,y0=rep(0,20),
         x1=0:20,y1=rep(20,20),col="gray", lty=2)
text(y=seq(0.5,19.5,by=1),x=-1, labels=20:1)
text(x=seq(0.5,19.5,by=1),y=21, labels=LETTERS[1:20])

Variável Geométrica

Uma variável geométrica é um modelo para o número de tentativas negativas até que se obtenha o primeiro resultado positivo, com uma probabilidade constante de ter um resultado positivo em cada tentativa.

Formalmente, é o número de fracassos até o primeiro sucesso em uma sequência de experimentos de Bernoulli.

Um exemplo biológico seria a sobrevivência de indivíduos em intervalos discretos de tempo, com uma taxa de mortalidade constante. A cada intervalo discreto de tempo, cada indivíduo da população tem a probabilidade $$p$$ de morrer, portanto a probabilidade de que a morte ocorra após $$x$$ intervalos será:

$$P(x) = p(1-p)^x$$

Que é a distribuição de probabilidades da variável aleatória geométrica.

Com o R podemos simular, para um indivíduo, uma sequência de intervalos, sendo que em cada intervalo sorteamos se o indivíduo morrerá ou não, com uma probabilidade fixa. Usamos a função sample para sortear entre ““vivo”” e “morto” com probabilidades $$1-p$$ e $$p$$, a cada intervalo. Usamos a função while para manter o sorteio correndo até a morte do indivíduo (primeiro sorteio do valor “morto”), e contamos quantos sorteios ocorreram até que isto aconteça:

> p.morte <- 0.2
> result <- 0 
> while(sample(c("vivo","morto"),prob=c(1-p.morte,p.morte),size=1)=="vivo"){
      result <- result+1
    }
> result
[1] 8

Agora vamos criar uma função que repete esta simulação para vários indivíduos. Seus argumentos são o número de indivíduos (N) e a probabilidade de morrer a cada intervalo (p.morte):

sobrevive <- function(N=1000, p.morte=0.2){
  result <- rep(0,N)
  for(i in 1:N){
    while(
          sample( c("vivo","morto"), 
                 prob= c(1-p.morte,p.morte),size=1)=="vivo"){
      result[i] <- result[i]+1
    }
  }
  result
}

E podemos fazer uma simulação para 2.000 indivíduos, com probabilidade de morte de 0,2:

sim2 <- sobrevive(N=2000)

E agora vamos fazer um gráfico do número de indivíduos que viveram até cada valor de intervalo. Para isto, primeiro criamos uma variável de fator com valores observados de intervalo, mas com níveis de zero ao valor máximo, para garantir que mesmo valores sem observações na amostra sejam representados:

 sim2.f <- factor(sim2,levels=0:max(sim2))

E então aplicamos a função plot sobre a tabulação desta variável, divida pelo total de indivíduos para ser uma proporção:

plot(table(sim2.f)/length(sim2), xlab="Tempo de vida",
      ylab="Proporção dos Indivíduos")      

Por fim acrescentamos os valores de probabilidade da variável geométrica:

 points(0:max(sim2),dgeom(0:max(sim2),prob=0.2),type="b",col="blue")

Avalie a correspondência entre os valores simulados das proporções de indivíduos e as probabilidades teóricas.

Variável Binomial Negativa

A variável binomial negativa é uma extensão da variável geométrica, que descreve a probabilidade de fracassos em uma sequência de experimentos de Bernoulli até que se obtenha $$n$$ sucessos, dado que a probabilidade $$p$$ de sucesso a cada tentativa é constante.

Esta variável pode ser reparametrizada , substituindo-se o $$p$$ por um parâmetro $$\mu$$, que corresponde à esperança da distribuição, ou seja, sua média.

$$\mu=\frac{n(1-p)}{p}$$

Nesta formulação, $$n$$ pode ter qualquer valor e pode ser interpretado como um índice de dispersão, e recebe a nome de $$k$$, para distinguí-lo da outra parametrização. Quanto menor o $$k$$, maior a concentração da massa da distribuição nos valores baixos, o que dá à distribuição uma forte assimetria à direita.

Por esta propriedade, a binomial negativa é um modelo simples para descrever contagens de eventos agregados por unidade amostral. Neste tutorial seguiremos a mesma lógica do tutorial sobre o processo Poisson, mas agora simulando uma planta distribuída em agregados em uma área de 20 x 20 m, como na figura abaixo.

Simulação de plantas distribuídas em agregados em uma área de 20 x 20 m. Pontos azuis são os focos de agregação, veja explicação no texto.

Para simular este padrão, primeiro sorteamos 20 coordenadas entre 0 e 20 m de uma distribuição uniforme. Estes 20 pontos distribuídos ao acaso serão os centros dos agregados, representados em azul na figura.

set.seed(42)
cx <- runif(20,0,20)
cy <- runif(20,0,20)

Em seguida sorteamos 2.000 coordenadas de uma distribuição normal padronizada 3), e somamos a cada uma destas coordenadas as coordenadas dos centros. Com isto teremos 100 pontos agregados em torno de cada centro 4).

px <- rnorm(2000)
py <- rnorm(2000)
x1 <- cx+px
y1 <- cy+py

Em seguida usamos a indexação para ficar apenas com os pontos que estão dentro da área (com coordenadas entre 0 e 20):

x2 <- x1[x1>0&x1<20&y1>0&y1<20]
y2 <- y1[x1>0&x1<20&y1>0&y1<20]

Para simular as quadrículas, dividimos as coordenadas em fatores com intervalo de um, que representam segmentos de um metro. As linhas recebem rótulos de 1 a 20, e as colunas rótulos de A a T:

x2.parc <- cut(x2,breaks=0:20, labels=1:20)
y2.parc <- cut(y2,breaks=0:20, labels=LETTERS[1:20])

E então usamos a função table para contar quantos valores há em cada combinação destes fatores. Esta tabela cruzada é então transformada em um data frame e o resultado atribuído a um objeto:

 cont2 <- data.frame(table(x2.parc,y2.parc))

O número de indivíduos de cada parcela, que é a coluna Freq deste objeto, é transformado em um fator, que tem níveis de zero ao máximo de indivíduos observado em uma parcela:

  cont2.f <- factor(cont2$Freq, levels=0:max(cont2$Freq))

Dividimos estas contagens pelo total de parcelas para obter proporções, e as representamos em um gráfico aplicando a função plot:

plot(table(cont2.f)/400, xlab="N de indivíduos na parcela",
     ylab="Proporção das parcelas")

Em seguida adicionamos as probabilidades previstas para uma variável Poisson com a mesma taxa de ocorrência, que é o total de plantas dividido por 400 parcelas:

points(x=0:max(cont2$Freq),y=dpois(0:max(cont2$Freq),
       lambda=sum(cont2$Freq)/400), 
       type="b", col="blue", lty=2)

A variável Poisson não é um bom modelo, o que era esperado, já que ela descreve eventos independentes, isto é, distribuídos aleatoriamente.

Vamos então comparar o desempenho da Poisson com o da Binomial Negativa. Sabemos que um dos parâmetros desta distribuição, $$\mu$$, corresponde à taxa de ocorrência, mas precisamos estimar o outro, que é o índice de dispersão $$k$$. Para isto usaremos a função fitdistr do pacote MASS. Aplicada a um vetor numérico, esta função retorna a estimativa dos parâmetros5), que podem ser extraídos com a função coef:

require(MASS) # basta uma vez por seção
cont2.nb <- coef(fitdistr(cont2$Freq,"negative binomial"))
cont2.nb

Com os valores estimados dos parâmetros podemos acrescentar ao gráfico as probabilidades previstas pela Binomial Negativa para cada abundância:

points(x=0:max(cont2$Freq),y=dnbinom(0:max(cont2$Freq),
       mu=cont2.nb[2],size=cont2.nb[1]), 
       type="b", col="red", lty=2)

Note como a probabilidade de valores pequenos é maior na Binomial Negativa, em comparação com a Poisson, embora ambas tenham a mesma taxa de ocorrência. É isto que você esperaria no caso de agregação espacial?

O próximo tutorial mostra como a Binomial Negativa se aproxima de uma Poisson se aumentamos o valor do parâmetro $$k$$.

Extras

Caso queira reproduzir a figura do padrão espacial, os comandos são:

plot(x=x2,y=y2,axes=F, xlab="", ylab="", xlim=c(-1,20),ylim=c(0,21))
points(cx,cy, col="blue", pch=19)
segments(x0=rep(0,20),y0=0:20,x1=rep(20,20),y1=0:20, col="gray", lty=2)
segments(x0=0:20,y0=rep(0,20),x1=0:20,y1=rep(20,20),col="gray", lty=2)
text(y=seq(0.5,19.5,by=1),x=-1, labels=20:1)
text(x=seq(0.5,19.5,by=1),y=21, labels=LETTERS[1:20])
x2.parc <- cut(x2,breaks=0:20, labels=1:20)
y2.parc <- cut(y2,breaks=0:20, labels=LETTERS[1:20])

Binomial Negativa e Poisson

Use os comandos abaixo para plotar gráficos das distribuições de probabilidade de uma Variável Poisson com média 4 e variáveis Binomiais de mesma média e parâmetro de dispersão crescentes. Quais suas conclusões?

par(mfrow=c(2,2))
plot(0:30, dpois(0:30,lambda=4),type="b", xlab="x", ylab="p",
     ylim=c(0,0.35),
     main=expression(paste("Poisson, ", lambda,"=4")))
plot(0:30, dnbinom(0:30,mu=4,size=0.5),type="b",
     ylim=c(0,0.35), xlab="x", ylab="p",
     main=expression(paste("Bin. Neg., ", mu,"=4", ", k=0.5")))
plot(0:30, dnbinom(0:30,mu=4,size=1.5),type="b",
     ylim=c(0,0.35), xlab="x", ylab="p",
     main=expression(paste("Bin. Neg., ", mu,"=4", ", k=1.5")))
plot(0:30, dnbinom(0:30,mu=4,size=20),type="b",
     ylim=c(0,0.35), xlab="x", ylab="p",
     main=expression(paste("Bin. Neg., ", mu,"=4", ", k=20")))
par(mfrow=c(1,1))

Binomial Negativa e Geométrica

Compare a distribuição de probabilidades da variável aleatória Geométrica com parâmetro $$p$$ (probabilidade de sucesso em cada tentativa) igual a 0,2 e a de uma variável Binomial Negativa com o mesmo valor de $$p$$, e parâmetro $$n$$ (número de sucessos desejados) igual a um.

par(mfrow=c(1,2))
plot(0:30,dgeom(0:30,prob=0.2),xlab="N de fracassos", ylab="P",
     main="Geométrica, p=0,2")
plot(0:30, dnbinom(0:30,size=1,prob=0.2),xlab="N de fracassos", ylab="P",
     main="Bin. Neg., n=1, p=0,2")
par(mfrow=c(1,1))

Como você explica este resultado?

Binomial e Poisson

Compare a distribuição de probabilidades de uma variável Binomial com parâmetro $$n$$ alto e parâmetro $$p$$ baixo com uma Poisson de mesma média 6):

par(mfrow=c(1,2))
plot(0:10, dbinom(0:10, prob=0.01, size=200), xlab="x", ylab="P",
     main="Binomial, n=200, p=0,01")
plot(0:10, dpois(0:10,lambda=0.01*200), xlab="x", ylab="P",
     main=expression(paste("Poisson, ", lambda,"=2")))
par(mfrow=c(1,1))
  1. Quais suas conclusões?
  2. Há uma interpretação biológica para isto?

Recursos para Estudo

Resumo da Aula

Na Internet

  • Um excelente resumo das propriedades e relações entre distribuições de probabilidade:
    • Leemis, L. M., and J. T. McQueston. 2008. Univariate Distribution Relationships. The American Statistician 62:45-53.pdf na página do autor

Resumo das Variáveis Aleatórias mais Usadas

    • Parâmetros: $$p$$ , $$n$$
    • Parâmetros no R: prob, size
    • Função no R: [dpqr]binom
    • Suporte: $$0, n$$
    • Assimetria: direita, esquerda, nenhuma
    • Esperança: $$np$$
    • Variância: $$np(1-p)$$
    • Parâmetros: $$p,n$$ OU $$\mu,k$$
    • Parâmetros no R: prob, size OU mu, size
    • Função no R: [dpqr]nbinom
    • Suporte: $$0, \infty$$
    • Assimetria: direita
    • Esperança: $$\mu=\frac{n(1-p)}{p}$$
    • Variância: $$\mu+ \frac{\mu^2}{k}=\frac{n(1-p)}{p^2}$$
    • Parâmetro: $$p$$
    • Parâmetro no R: prob
    • Função no R: [dpqr]geom
    • Suporte: $$0, \infty$$
    • Assimetria: direita
    • Esperança: $$\frac{1-p}{p}$$
    • Variância: $$\frac{1-p}{p^2}$$
    • Parâmetro: $$\lambda$$
    • Parâmetro no R: lambda
    • Função no R: [dpqr]pois
    • Suporte: $$0, \infty$$
    • Assimetria: direita a não
    • Esperança: $$\lambda$$
    • Variância: $$\lambda$$

Pesquisa

Indique os tutoriais e partes da leitura básica que merecem mais atenção na discussão aqui.

1)
A formulação de esperança para variáveis aletórias contínuas é análoga, mas não é a mesma, veja na seção sobre variáveis aleatórias contínuas
2)
veremos esta distribuição na aula sobre variáveis contínuas. Por ora basta saber que com ela obtemos qualquer número entre um máximo e um mínimo com a mesma probabilidade
3)
isto é, com média zero e desvio-padrão um, detalhes na unidade sobre variáveis aleatórias contínuas
4)
a distribuição destes pontos em torno do centro segue uma normal bivariada, que você pode imaginar como sinos centrados em cada ponto azul
5)
Mais tarde neste curso você verá que esta é a estimativa de máxima verossimilhança. Por ora basta saber que é a estimativa mais plausível dos parâmetros que pode ser obtida com este conjunto de dados
6)
a média da Binomial é $$np$$, portanto 0,2 neste exemplo
biometria/verossim/01-distr.txt · Última modificação: 2022/11/24 14:21 por 127.0.0.1