biometria:verossim:01b-distr2
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
— | biometria:verossim:01b-distr2 [2022/11/24 14:21] (atual) – criada - edição externa 127.0.0.1 | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ^[[start|Modelos Estatísticos: | ||
+ | \\ | ||
+ | < | ||
+ | <font face=" | ||
+ | 2. Variáveis Aleatórias Contínuas | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
+ | ====== Conceitos ====== | ||
+ | |||
+ | * Função de densidade probabilística | ||
+ | * Função de probabilidade acumulada | ||
+ | * Esperança e variância de variáveis contínuas | ||
+ | * Teorema Central do Limite | ||
+ | * Variáveis aleatórias contínuas mais usadas em ecologia | ||
+ | |||
+ | ====== Tutoriais ====== | ||
+ | |||
+ | ===== Função de Densidade e Probabilidade ===== | ||
+ | |||
+ | É importante ter clara a diferença entre a **função de densidade de probabilidade** de uma variável aleatória contínua e a **probabilidade** desta variável assumir um valor dentro de um intervalo. | ||
+ | |||
+ | A primeira não é uma probabilidade, | ||
+ | |||
+ | A função [[http:// | ||
+ | |||
+ | < | ||
+ | > dnorm(2+c(-0.15, | ||
+ | [1] 1.295176 1.295176 | ||
+ | </ | ||
+ | |||
+ | Aplicando a função [[http:// | ||
+ | |||
+ | < | ||
+ | curve(dnorm(x, | ||
+ | xlab=" | ||
+ | </ | ||
+ | |||
+ | Vamos acrescentar neste gráfico os valores que calculamos acima: | ||
+ | < | ||
+ | points(2+c(-0.15, | ||
+ | | ||
+ | segments(x0=c(2+c(-0.15, | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Para uma variável aleatória a probabilidade só pode ser definida para **um intervalo**, | ||
+ | |||
+ | < | ||
+ | area.norm <- function(from, | ||
+ | len <- (to-from)*shade | ||
+ | x <- seq(from, | ||
+ | segments(x0=x, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | E agora aplicá-la para colorir de vermelho a área delimitada por $$\mu \+- 1,5\sigma$$ no gráfico que criamos: | ||
+ | |||
+ | | ||
+ | |||
+ | A área sob uma função é sua **integral**. Podemos calculá-la com a função de integração do R (([[http:// | ||
+ | |||
+ | integrate(dnorm, | ||
+ | |||
+ | A integral de qualquer função de densidade probabilística no intervalo que contém todos os valores da variável aleatória é um. Verifique isto para a normal, integrando-a de $$-\infty$$ a $$\infty$$: | ||
+ | |||
+ | < | ||
+ | integrate(dnorm, | ||
+ | integrate(dnorm, | ||
+ | </ | ||
+ | |||
+ | A integral do limite inferior da variável aleatória até um certo valor é a **função de densidade acumulada**. Para a normal, a função no R é '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | O que você obtém com o comando: | ||
+ | pnorm(2.15, | ||
+ | |||
+ | A função '' | ||
+ | 1-(pnorm(2.15, | ||
+ | |||
+ | Por fim, como o intervalo é simétrico em torno da média, e a curva normal também o é, uma terceira maneira de fazer o cálculo é: | ||
+ | 1-2*pnorm(1.85, | ||
+ | |||
+ | ==== Extras ==== | ||
+ | Se quiser reproduzir a figura deste tutorial, o código em R é | ||
+ | < | ||
+ | png(" | ||
+ | par(mfrow=c(1, | ||
+ | curve(dnorm(x, | ||
+ | xlab="", | ||
+ | area.norm(1.7, | ||
+ | curve(dnorm(x, | ||
+ | xlab="", | ||
+ | area.norm(1.7, | ||
+ | curve(dnorm(x, | ||
+ | xlab="", | ||
+ | area.norm(1.85, | ||
+ | mtext(c(" | ||
+ | dev.off() | ||
+ | </ | ||
+ | |||
+ | ===== Esperança de uma Variável Contínua ===== | ||
+ | |||
+ | A esperança de uma variável aleatória contínua é | ||
+ | |||
+ | $$E[X]\ = \ \int x cdot f(x) \ dx$$ | ||
+ | |||
+ | Onde $$f(x)$$ é a função de densidade probabilística. | ||
+ | |||
+ | Vamos verificar isto numericamente para a variável exponencial, | ||
+ | |||
+ | < | ||
+ | esper.exp <- function(x, | ||
+ | dexp(x, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Agora usamos a função '' | ||
+ | |||
+ | < | ||
+ | integrate(esper.exp, | ||
+ | </ | ||
+ | |||
+ | Compare o valor obtido com o valor teórico da esperança. | ||
+ | |||
+ | ===== Histograma de Densidade ===== | ||
+ | |||
+ | Para comparar a distribuição de dados com alguma variável aleatória, podemos usar um histograma re-escalonado para densidade. | ||
+ | |||
+ | Para exemplificar, | ||
+ | |||
+ | Primeiro criamos um objeto com os dados de interesse, que são os fustes da caixeta em Chauás: | ||
+ | |||
+ | < | ||
+ | caixeta <- read.csv(" | ||
+ | chauas <- caixeta[caixeta$local==" | ||
+ | & | ||
+ | </ | ||
+ | |||
+ | E então criamos um fator para as classes de CAP, com intervalos de 100 mm: | ||
+ | |||
+ | < | ||
+ | chauas$cap.class <- cut(chauas$cap, | ||
+ | </ | ||
+ | |||
+ | Um gráfico da tabulação deste fator é um histograma de frequências: | ||
+ | |||
+ | < | ||
+ | barplot(table(chauas$cap.class), | ||
+ | </ | ||
+ | |||
+ | Dividindo-se os valores pelo total de fustes temos um histograma de frequências relativas: | ||
+ | |||
+ | < | ||
+ | barplot(table(chauas$cap.class)/ | ||
+ | </ | ||
+ | |||
+ | Finalmente, dividindo novamente estes valores pelas amplitude do intervalo de classe usado (100 mm) temos um histograma de densidade: | ||
+ | |||
+ | < | ||
+ | barplot(table(chauas$cap.class)/ | ||
+ | space=0) | ||
+ | </ | ||
+ | |||
+ | Neste histograma, a soma das áreas das barras é um. A função [[http:// | ||
+ | < | ||
+ | hist(chauas$cap, | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Nesta escala podemo sobrepor a funções de densidade, como a normal: | ||
+ | |||
+ | < | ||
+ | curve(dnorm(x, | ||
+ | sd=sd(chauas$cap)), | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== A variável normal ===== | ||
+ | |||
+ | As companhias aéreas norte-americanas garantem que 98% de seus passageiros não terão problemas para se acomodar nos assentos da classe econômica. Para isso, usam um modelo que descreve a distribuição das larguras dos quadris dos homens norte-americanos como uma variável normal, com média de 14,4 polegadas, e desvio-padrão de 1,0 polegada. | ||
+ | |||
+ | Faça um gráfico desta distribuição de probabilidades: | ||
+ | < | ||
+ | curve(dnorm(x, | ||
+ | xlab=" | ||
+ | </ | ||
+ | |||
+ | Para definir a largura do assento, é preciso saber o limite superior do intervalo que contêm 98% da população. Esse é o quantil de 98% da distribuição, | ||
+ | |||
+ | Calcule o valor deste quantil com o comando: | ||
+ | < | ||
+ | larg <- qnorm(mean=14.4, | ||
+ | larg | ||
+ | </ | ||
+ | |||
+ | Este é o valor que delimita 98% da área sob a curva normal. Usando a função criada no tutorial anterior podemos visualizar no gráfico a área que vai até o quantil calculado acima: | ||
+ | |||
+ | < | ||
+ | area.norm(8, | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Variando os Parâmetros da Normal ===== | ||
+ | Imagine que o desvio-padrão para o exemplo dos quadris norte-americanos seja 50% maior. O que deve ocorrer com o quantil de 98%? Verifique sua expectativa com o comando: | ||
+ | < | ||
+ | qnorm(mean=14.4, | ||
+ | </ | ||
+ | |||
+ | Repita o gráfico do tutorial anterior, e adicione ao gráfico a distribuição de probabilidades com o novo valor do parâmetro desvio-padrão: | ||
+ | < | ||
+ | curve(dnorm(x, | ||
+ | xlab=" | ||
+ | curve(dnorm(x, | ||
+ | </ | ||
+ | |||
+ | Os parâmetros da distribuição normal correspondem à média e ao desvio-padrão. Explore o comportamento da curva com a mudança de seus parâmetros: | ||
+ | |||
+ | < | ||
+ | cores <- rainbow(n=4) | ||
+ | curve(dnorm(x), | ||
+ | curve(dnorm(x, | ||
+ | curve(dnorm(x, | ||
+ | curve(dnorm(x, | ||
+ | legend(-7.5, | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | ===== Teorema Central do Limite ===== | ||
+ | |||
+ | O Teorema Central do Limite (TCL) prova que as médias de amostras independentes tomadas de uma mesma distribuição convergem para uma distribuição normal. A média desta normal é a mesma da distribuição de onde vieram as amostras, e a variância é igual à variância da distribuição original, dividida pelo tamanho das amostras. | ||
+ | |||
+ | Verifique isto com o seguinte tutorial: | ||
+ | |||
+ | Sorteie dez mil números de uma distribuição muito diferente de uma normal, como uma Poisson com média baixa: | ||
+ | < | ||
+ | vals <- rpois(10000, | ||
+ | </ | ||
+ | |||
+ | Agora imagine que estes valores foram obtidos de mil amostras independentes, | ||
+ | < | ||
+ | cod.amostras <- factor(rep(1: | ||
+ | </ | ||
+ | |||
+ | Agora podemos calcular a média de cada uma dessas amostras: | ||
+ | |||
+ | < | ||
+ | medias.vals <- tapply(vals, | ||
+ | </ | ||
+ | |||
+ | E fazer um histograma dessas mil médias: | ||
+ | |||
+ | < | ||
+ | hist(medias.vals, | ||
+ | </ | ||
+ | |||
+ | E sobrepor a função de densidade da normal, com os parâmetros previstos pelo TCL: | ||
+ | |||
+ | < | ||
+ | curve(dnorm(x, | ||
+ | </ | ||
+ | |||
+ | Uma outra ótima maneira de avaliar a normalidade é com o gráfico de quantis normais: | ||
+ | |||
+ | < | ||
+ | qqnorm(medias.vals) | ||
+ | qqline(medias.vals) | ||
+ | </ | ||
+ | |||
+ | Repita os procedimentos, | ||
+ | |||
+ | |||
+ | ===== Variável Bernoulli Tendendo à Normal? ===== | ||
+ | |||
+ | Uma maneira simples de formular o Teorema Central do Limite é que a soma ou a média de muitas variáveis aleatórias tende a uma variável normal. Esta tendência é válida mesmo para variáveis com distribuições muito diferentes da normal e que não tenham os mesmos parâmetros. | ||
+ | |||
+ | Neste tutorial investigaremos se o TCL pode nos ajudar a propor um modelo para a riqueza de espécies em um conjunto de áreas. Vamos simular um cenário em que a ocorrência de cada espécie é uma variável Bernoulli ($$1$$ = presente, $$0$$ = ausente), cujo único parâmetro ($$p$$ a probabilidade de ocorrência) varia entre espécies. | ||
+ | |||
+ | Vamos assumir que as probabilidades de ocorrência também são variáveis aleatórias. Uma escolha natural é a variável Beta, que está restrita a valores entre zero e um. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Para simular uma metacomunidade com 300 espécies, sorteamos 300 valores da variável beta representada acima: | ||
+ | |||
+ | < | ||
+ | p.oc <- rbeta(300, shape1=1, | ||
+ | </ | ||
+ | |||
+ | Em seguida criamos uma função que faz $$N$$ experimentos de Bernoulli, tomando um valor $$1$$ com probabilidade $$p$$ e valor $$0$$ com probabilidade $$1-p$$ | ||
+ | |||
+ | < | ||
+ | ocorre <- function(p, | ||
+ | </ | ||
+ | |||
+ | Aplicando esta função às probabilidades de ocorrência sorteadas no passo anterior, obtemos uma matriz com $$100$$ linhas (locais) e $$300$$ colunas (espécies): | ||
+ | < | ||
+ | matriz <- sapply(p.oc, | ||
+ | </ | ||
+ | |||
+ | A soma das linhas são o número de espécies em cada um dos $$100$$ locais | ||
+ | < | ||
+ | riquezas <- apply(matriz, | ||
+ | </ | ||
+ | |||
+ | Cuja distribuição pode ser comparada com função de densidade de uma normal de mesma média e desvio-padrão: | ||
+ | |||
+ | < | ||
+ | hist(riquezas, | ||
+ | | ||
+ | curve(dnorm(x, | ||
+ | add=T, | ||
+ | </ | ||
+ | |||
+ | Avalie também o ajuste a uma normal com o gráfico de quantis teóricos: | ||
+ | |||
+ | < | ||
+ | qqnorm(riquezas) | ||
+ | qqline(riquezas) | ||
+ | </ | ||
+ | |||
+ | ==== Extras ==== | ||
+ | Se quiser repoduzir o gráfico da variável beta deste tutorial o comando é: | ||
+ | < | ||
+ | curve(dbeta(x, | ||
+ | xlab=" | ||
+ | </ | ||
+ | |||
+ | ===== Variável Exponencial ===== | ||
+ | A variável exponencial é a análoga contínua da variável geométrica. Ela foi criada para descrever o tempo de espera até a primeira ocorrência de um evento, dado que ele tem uma taxa de ocorrência $$\lambda$$ constante. | ||
+ | |||
+ | Vamos simular esta situação, imaginando que você acompanha um animal por até duas horas, sempre no mesmo horário. Sua variável de interesse é o tempo até que ele apresente um certo comportamento pela primeira vez. A taxa média com que este comportamento ocorre neste horário é de 0, | ||
+ | |||
+ | A distribuição desta variável aleatória pode ser simulada repetindo o estudo muitas vezes. A cada uma delas haverá um certo número de comportamentos, | ||
+ | < | ||
+ | n <- rpois(10000, | ||
+ | </ | ||
+ | |||
+ | O total de eventos será então a soma destes valores sorteados. Em seguida sorteamos este número de valores de uma distribuição uniforme, com o mínimo de $$0$$ e máximo de $$120$$. Estes serão os horários de ocorrência de cada evento, em cada repetição do estudo. | ||
+ | |||
+ | < | ||
+ | vals <- runif(sum(n), | ||
+ | </ | ||
+ | |||
+ | E criamos um fator para identificar cada repetição do estudo: | ||
+ | < | ||
+ | cod.amostras <- factor(rep(1: | ||
+ | </ | ||
+ | |||
+ | Com isto, podemos usar a função [[http:// | ||
+ | < | ||
+ | primeiro <- tapply(vals, | ||
+ | </ | ||
+ | |||
+ | E agora construímos um histograma de densidade desta variável, e sobrepomos a função de densidade da variável exponencial: | ||
+ | < | ||
+ | hist(primeiro, | ||
+ | | ||
+ | curve(dexp(x, | ||
+ | </ | ||
+ | |||
+ | Avalie visualmente a concordância com o modelo teórico. | ||
+ | |||
+ | ===== Variável Gama ===== | ||
+ | |||
+ | A variável Gama foi criada como uma extensão da exponencial, | ||
+ | |||
+ | Usando a simulação do tutorial anterior, podemos obter os tempos de espera até que o animal apresente o comportamento de interesse pela segunda vez. Para isto, criamos uma função que retorna o n-ésimo menor valor de um vetor de números | ||
+ | |||
+ | < | ||
+ | enesimo <- function(x, | ||
+ | </ | ||
+ | |||
+ | E aplicamos esta função a cada repetição do estudo: | ||
+ | |||
+ | < | ||
+ | segundo <- tapply(vals, | ||
+ | </ | ||
+ | |||
+ | Para então fazer um histograma de densidade com estes dados | ||
+ | < | ||
+ | hist(segundo, | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Podemos então sobrepor a este histograma a curva da função de densidade probabilística da variável Gama, com os parâmetros teóricos de taxa de ocorrência ('' | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ===== Variável Log-Normal ===== | ||
+ | |||
+ | Assim como a variável normal descreve a soma ou média de muitas variáveis aleatórias, | ||
+ | |||
+ | O exemplo mais conhecido de processo multiplicativo em ecologia é o modelo de crescimento populacional geométrico estocástico. | ||
+ | |||
+ | Neste modelo, o tamanho da população no tempo $$t+1$$ e o produto do tamanho da população no tempo anterior, $$t$$, multiplicado pela taxa de crescimento populacional $$R$$: | ||
+ | |||
+ | $$N_{t+1} \ = \ R cdot N_t$$ | ||
+ | |||
+ | Se $$R$$ varia ao longo do tempo, podemos descrevê-la como uma variável aleatória. Portanto, o tamanho da população será o resultado da multiplicação de muitos realizações de uma variável aleatória. Neste cenário, as abundâncias de um conjunto de espécies com dinâmicas populacionais independentes seguirão uma distribuição log-normal. | ||
+ | |||
+ | Para simular esta situação, criamos uma função que reitera a equação de crescimento de uma população '' | ||
+ | |||
+ | < | ||
+ | pops <- function(N, | ||
+ | results <- matrix(nrow=N, | ||
+ | results[,1] <- N0 | ||
+ | for(i in 1:N){ | ||
+ | for(z in 2:time){ | ||
+ | results[i, | ||
+ | } | ||
+ | } | ||
+ | results | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | O resultado desta função é uma matriz com '' | ||
+ | |||
+ | < | ||
+ | abunds <- pops(200, | ||
+ | </ | ||
+ | |||
+ | Com isto podemos fazer o histograma de densidade das abundâncias das 200 espécies no último intervalo de tempo: | ||
+ | |||
+ | < | ||
+ | hist(abunds[, | ||
+ | </ | ||
+ | |||
+ | E sobrepor a curva da função de densidade da log-normal, com os parâmetros estimados da amostra de 200 populações: | ||
+ | |||
+ | < | ||
+ | curve(dlnorm(x, | ||
+ | | ||
+ | add=T, col=" | ||
+ | </ | ||
+ | |||
+ | Se a log-normal é um bom modelo para descrever as abundâncias, | ||
+ | |||
+ | < | ||
+ | qqnorm(log(abunds[, | ||
+ | qqline(log(abunds[, | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ====== Recursos para Estudo ====== | ||
+ | |||
+ | ===== Resumo da Aula ===== | ||
+ | * {{: | ||
+ | |||
+ | ===== Na Internet ===== | ||
+ | |||
+ | * Portal sobre distribuições de probabilidades na Wikipedia: [[http:// | ||
+ | |||
+ | * Distribuições interativas //on-line// do Statistics Online Computational Resource da UCLA: [[http:// | ||
+ | |||
+ | * Capítulo sobre variáveis aleatórias do //e-book// de Probabilidade e Estatística da UCLA: [[http:// | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | * 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: | ||
+ | |||
+ | * Várias atividades em JAVA com a normal no livro on-line //Seeing Statistics// | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | ===== Variáveis Aleatórias Contínuas mais Usadas ===== | ||
+ | * [[http:// | ||
+ | * **Parâmetros: | ||
+ | * **Parâmetros no R:** '' | ||
+ | * **Função no R:** '' | ||
+ | * **Suporte: | ||
+ | * **Assimetria: | ||
+ | * **Esperança: | ||
+ | * **Variância: | ||
+ | |||
+ | |||
+ | * [[http:// | ||
+ | * **Parâmetros: | ||
+ | * **Parâmetros no R:** '' | ||
+ | * **Função no R:** '' | ||
+ | * **Suporte: | ||
+ | * **Assimetria: | ||
+ | * **Esperança: | ||
+ | * **Variância: | ||
+ | |||
+ | |||
+ | * [[http:// | ||
+ | * **Parâmetros: | ||
+ | * **Parâmetros no R:** '' | ||
+ | * **Função no R:** '' | ||
+ | * **Suporte: | ||
+ | * **Assimetria: | ||
+ | * **Esperança: | ||
+ | * **Variância: | ||
+ | |||
+ | |||
+ | * [[http:// | ||
+ | * **Parâmetros: | ||
+ | * **Parâmetros no R:** '' | ||
+ | * **Função no R:** '' | ||
+ | * **Suporte: | ||
+ | * **Assimetria: | ||
+ | * **Esperança: | ||
+ | * **Variância: | ||
+ | |||
+ | |||
+ | * [[http:// | ||
+ | * **Parâmetros: | ||
+ | * **Parâmetros no R:** '' | ||
+ | * **Função no R:** '' | ||
+ | * **Suporte: | ||
+ | * **Assimetria: | ||
+ | * **Esperança: | ||
+ | * **Variância: | ||
+ | |||
+ | |||
+ | * [[http:// | ||
+ | * **Parâmetros: | ||
+ | * **Parâmetros no R:** '' | ||
+ | * **Função no R:** '' | ||
+ | * **Suporte: | ||
+ | * **Assimetria: | ||
+ | * **Esperança: | ||
+ | * **Variância: | ||
+ | |||
+ | |||
+ | * [[http:// | ||
+ | * **Parâmetros: | ||
+ | * **Parâmetros no R:** '' | ||
+ | * **Função no R:** '' | ||
+ | * **Suporte: | ||
+ | * **Assimetria: | ||
+ | * **Esperança: | ||
+ | * **Variância: | ||
+ | |||
+ | ====== Pesquisa ====== | ||
+ | |||
+ | Indique os tutoriais e partes da leitura básica que merecem mais atenção na discussão [[http:// | ||
+ | |||
+ | |||