What are empirical cumulative distribution functions and what can we do with them? Para responder à primeira pergunta, vamos primeiro dar um passo atrás e ter certeza de que entendemos “distribuições”, ou mais especificamente, “distribuições de probabilidade”.
uma distribuição de probabilidade básica
Imagine um evento simples, digamos arremessando uma moeda 3 vezes., Aqui estão todos os resultados possíveis, onde H = cabeça e T = caudas:
- HHH
- HHT
- HTH
- THH
- HTT
- TTH
- QUE
- TTT
Agora imagine H = “sucesso”., Nossos resultados podem ser modificadas da seguinte forma:
- HHH (3 sucessos)
- HHT (2 sucessos)
- HTH (2 sucessos)
- THH (2 sucessos)
- HTT (1 sucesso)
- TTH (1 sucesso)
- THT (1 sucesso)
- TTT (0 sucessos)
Desde há 8 resultados possíveis, as probabilidades para 0, 1, 2, e 3 sucessos são
- 0 sucessos: 1/8
- 1 sucessos: 3/8
- 2 sucessos: 3/8
- 3 sucessos: 1/8
Se a gente soma dessas probabilidades, temos 1. E isso representa a “distribuição de probabilidade” para o nosso evento., Formalmente este evento segue uma distribuição Binomial porque os eventos são independentes, há um número fixo de tentativas (3), a probabilidade é a mesma para cada flip (0.5), e nosso resultado é o número de “sucessos” em que o número de ensaios. De fato, o que acabamos de demonstrar é uma distribuição binomial com 3 ensaios e probabilidade igual a 0,5. Isto é algumas vezes abreviado como b (3,0.5)., Podemos gerar rapidamente as probabilidades em R, usando o dbinom
função:
dbinom(0:3, size = 3, prob = 0.5)## 0.125 0.375 0.375 0.125
Nós pode rapidamente visualizar essa distribuição de probabilidade com o barplot
função:
barplot(dbinom(x = 0:3, size = 3, prob = 0.5), names.arg = 0:3)
A função utilizada para gerar estas probabilidades é muitas vezes referida como a “densidade” de função, daí o “d” na frente de binom., Distribuições que geram probabilidades para valores discretos, como o binômio neste exemplo, são às vezes chamadas de “funções de massa de probabilidade” ou PMFs. Distribuições que geram probabilidades para valores contínuos, como o Normal, são às vezes chamadas de “funções de densidade de probabilidade”, ou PDFs. No entanto, em R, independentemente de PMF ou PDF, a função que gera as probabilidades é conhecida como a função “densidade”.
função de distribuição cumulativa
agora vamos falar sobre probabilidades “cumulativas”., Estas são probabilidades que se acumulam à medida que nos movemos da esquerda para a direita ao longo do eixo x na nossa distribuição de probabilidade., Olhando para a distribuição da parcela acima do que seria
- \(P(X\le0)\)
- \(P(X\le1)\)
- \(P(X\le2)\)
- \(P(X\le3)\)
podemos calcular rapidamente estes:
- \(P(X\le0) = \frac{1}{8}\)
- \(P(X\le1) = \frac{1}{8} + \frac{3}{8} = \frac{1}{2}\)
- \(P(X\le2) = \frac{1}{8} + \frac{3}{8} + \frac{3}{8} = \frac{7}{8}\)
- \(P(X\le3) = \frac{1}{8} + \frac{3}{8} + \frac{3}{8} + \frac{1}{8} = 1\)
A distribuição dessas probabilidades é conhecida como a distribuição cumulativa., Mais uma vez há uma função em R que gera essas probabilidades para nós. Em vez de um” d “em frente ao” binom”, pusemos um”p”.
pbinom(0:3, size = 3, prob = 0.5)## 0.125 0.500 0.875 1.000
Esta função é muitas vezes referido apenas como a “função de distribuição”, o que pode ser confuso quando você está tentando obter a sua cabeça em torno de distribuições de probabilidade em geral. Planear esta função requer um pouco mais de trabalho. Vamos demonstrar uma maneira mais fácil de fazer esta trama em breve, por isso apresentamos o seguinte código Sem comentários.,
Esta parcela é por vezes chamada de parcela em degrau. Assim que você atingir um ponto no eixo x, você “subir” para a próxima probabilidade. A probabilidade de 0 ou menos é 0.125. Daí a linha reta de 0 a 1. A 1 nós subimos para 0,5, porque a probabilidade de 1 ou menos se 0,5. E assim por diante. Às 3, temos um ponto à 1. A probabilidade de 3 ou menos é certeza. Temos a garantia de ter 3 ou menos sucessos na nossa distribuição binomial.agora vamos demonstrar o que fizemos acima com uma distribuição contínua., Para mantê-lo relativamente simples vamos usar a distribuição normal padrão, que tem uma média de 0 e um desvio padrão de 1. Ao contrário de nosso exemplo de atirar moedas acima, que poderia ser entendido precisamente com uma distribuição binomial, não há nenhum exemplo “fora da prateleira” da vida real que mapeia perfeitamente para uma distribuição normal padrão. Por isso, teremos de usar a nossa imaginação.
vamos primeiro desenhar a distribuição usando a funçãocurve
. O primeiro argumento, dnorm(x)
, é, basicamente, a fórmula matemática que desenha a linha., Observe o ” d “na frente de” norma”; esta é a função de” densidade”. The defaults of the dnorm
function is mean = 0 and standard deviation = 1. Thefrom
andto
arguments say draw this curve using values of x ranging from -3 to 3.
curve(dnorm(x), from = -3, to = 3)
A curva é uma linha suave, o que significa que é uma distribuição de probabilidade para todos os números reais. A área sob a curva é 1 porque é uma distribuição de probabilidade.,Imagine chegar a esta distribuição e desenhar um número. Qual é a probabilidade de obter 1.134523768923? É essencialmente 0. Por quê? Porque há a possibilidade de \(\frac{1}{\infty}\) de a seleccionar. Porque é que o \(\infty\) está no denominador? Porque há um número infinito de possibilidades. Se isso parecer confuso, basta imaginar zoom no eixo x com resolução mais fina e mais fina, com decimais se estendendo ao horizonte. Isto significa que os valores do eixo y não representam probabilidade, mas sim “densidade”., A densidade é essencialmente a probabilidade de uma pequena gama de valores divididos por essa gama. Se isso também parecer confuso, tudo bem. Basta lembrar que não usamos distribuições normais (ou qualquer distribuição contínua) para obter probabilidades exatas. Usamo-los para obter probabilidades de uma gama de valores.
Por exemplo, Qual é a probabilidade de que x é menor ou igual a -1? Para isso, podemos usar a função pnorm
, que é a função de distribuição cumulativa para a distribuição normal.,
pnorm(-1)## 0.1586553
O mosaico pacote fornece o útil plotDist
função para rapidamente visualizar esta probabilidade. Colocando mosaic::
antes da função podemos chamar a função sem carregar o pacote mosaico. O argumento groups
diz criar duas regiões: uma por menos de -1, e outra por maior que -1. O argumento de
diz para desenhar um gráfico “semelhante ao histograma”. As duas cores são para as respectivas regiões. Obviamente “norma” significa desenhar uma distribuição normal., Mais uma vez o padrão é média 0 e desvio padrão 1.
# install.packages('mosaic')mosaic::plotDist('norm', groups = x < -1, type='h', col = c('grey', 'lightblue'))
Desta trama, na verdade, mostra cumulativa de probabilidade. A região azul é igual a 0.1586553, a probabilidade que tiramos um valor de -1 ou menos a partir desta distribuição. Lembre-se que usamos a função de distribuição cumulativa para obter este valor. Para visualizar todas as probabilidades cumulativas para a distribuição normal padrão, podemos novamente usar a função curve
mas desta vez compnorm
.,
curve(pnorm(x), from = -3, to = 3)
Se a gente olhar -1 no eixo x e ir direto para a linha e, em seguida, ir diretamente para a esquerda para o eixo x, deve pousar em 0.1586553. Podemos acrescentar que este o enredo usando segments
:
curve(pnorm(x), from = -3, to = 3)segments(x0 = -1, y0 = 0, x1 = -1, y1 = pnorm(-1), col = 'red')segments(x0 = -1, y0 = pnorm(-1), x1 = -3, y1 = pnorm(-1), col = 'blue')
Novamente, esta é uma linha suave porque estamos a lidar com um número infinito de valores reais.,
funções de distribuição empírica cumulativa
Agora que somos claros em distribuições cumulativas, vamos explorar distribuições empíricas cumulativas. “Empírica” significa que estamos mais preocupados com as observações do que com a teoria. As distribuições cumulativas que exploramos acima foram baseadas na teoria. Usamos as distribuições cumulativas binomiais e normais, respectivamente, para calcular probabilidades e visualizar a distribuição. Na vida real, no entanto, os dados que coletamos ou observamos não vêm de uma distribuição teórica. Temos de usar os próprios dados para criar uma distribuição cumulativa.,
Podemos fazer isso em R com a função ecdf
. ECDF significa “função de distribuição cumulativa empírica”. Note a última palavra: “função”. A função ecdf
devolve uma função. Apenas como pbinom
e pnorm
as funções de distribuição cumulativa para o nosso dados teóricos, ecdf
cria uma função de distribuição cumulativa para o nosso dados observados. Vamos tentar isto com o conjunto de dados rock que vem com R.,o conjunto de dados das rochas contém medições em 48 amostras de rochas de um reservatório de petróleo. Contém 4 variáveis: área, peri, forma e permanente. Trabalharemos com a variável área, que é a área total de poros em cada amostra.
Theecdf
functions works on numeric vectors, which are often columns of numbers in a data frame. Abaixo damos-lhe a coluna de área da moldura de dados rochosos.
ecdf(rock$area)## Empirical CDF ## Call: ecdf(rock$area)## x = 1016, 1468, 1651, ..., 11878, 12212
Observe que a saída não é útil. Isso porque a função ecdf
devolve uma função., Precisamos atribuir o resultado a um nome para que possamos criar a nossa função ECDF. Vamos usar Fn
Fn <- ecdf(rock$area)
Agora você tem um costume função de distribuição cumulativa você pode usar com seus dados. Por exemplo, podemos criar um gráfico para visualizar a distribuição cumulativa.
plot(Fn)
, Mas não temos de confiar no gráfico. Temos uma função! Podemos usá-lo para obter uma estimativa mais precisa. Basta dar-lhe um número dentro do intervalo do eixo x e ele irá retornar a probabilidade cumulativa.
# Prob area less than or equal to 8000Fn(8000)## 0.625
podemos usar a função com mais de um valor. Por exemplo, podemos obter probabilidades estimadas de que a área é inferior ou igual a 4000, 6000 e 8000.
Fn(c(4000, 6000, 8000))## 0.1250000 0.3333333 0.6250000
Há também uma summary
método para ECDF funções., Retorna um resumo dos valores únicos dos dados observados. Observe que é semelhante ao método de resumo tradicional para vetores numéricos, mas o resultado é ligeiramente diferente, uma vez que está resumindo os valores únicos em vez de todos os valores.finalmente, se quisermos, podemos sobrepor uma distribuição cumulativa teórica sobre o ECDF. Isso pode nos ajudar a avaliar se podemos ou não assumir que nossos dados podem ser modelados com uma distribuição teórica particular. Por exemplo, os nossos dados poderiam ser considerados como tendo sido amostrados a partir de uma distribuição Normal?, Abaixo nós traçamos a função step e então sobrepomos uma distribuição normal cumulativa usando a média e o desvio padrão de nossos dados observados.
plot(ecdf(rock$area))curve(pnorm(x, mean(rock$area), sd(rock$area)), from = 0, to = 12000, add = TRUE, col='blue', lwd = 2)
As linhas parecem se sobrepor um pouco, sugerindo que os dados poderiam ser aproximada com uma distribuição Normal. Podemos também comparar estimativas do nosso ECDF com uma CDF teórica. Vimos que a probabilidade de essa área ser inferior ou igual a 8000 é de cerca de 0,625., Como é que isso se compara a uma distribuição cumulativa normal com um desvio médio e padrão de rock$area
?
pnorm(8000, mean = mean(rock$area), sd = sd(rock$area))## 0.6189223
está muito próximo!outra avaliação gráfica é o gráfico Q-Q, Que também pode ser facilmente feito em R usando as funções qqnorm
e qqline
. A ideia é que, se os pontos caem ao longo da linha diagonal, então temos boas provas de que os dados são plausivelmente normais., Mais uma vez este enredo revela que os dados parecem poder ser bem aproximados com uma distribuição Normal. (Para mais informações sobre as parcelas Q-Q, consulte o nosso artigo, Entendendo as parcelas Q-Q).
qqnorm(rock$area)qqline(rock$area)
em caso De dúvidas ou esclarecimentos a respeito deste artigo, contacte a UVA Biblioteca StatLab: [email protected]
Ver toda a coleção de UVA Biblioteca StatLab artigos.
Clay Ford
consultor de investigação estatística
University of Virginia Library
July 9, 2020
Deixe uma resposta