Eu freqüentemente uso gráficos de densidade de kernel para ilustrar distribuições. São fáceis e rápidos de criar em R, como:
set.seed(1)
draws <- rnorm(100)^2
dens <- density(draws)
plot(dens)
#or in one line like this: plot(density(rnorm(100)^2))
O que me dá este pequeno PDF legal:
Eu gostaria de sombrear a área sob o PDF do 75º ao 95º percentis. É fácil calcular os pontos usando a quantile
função:
q75 <- quantile(draws, .75)
q95 <- quantile(draws, .95)
Mas como faço para sombrear a área entre q75
e q95
?
Respostas:
Com a
polygon()
função, veja sua página de ajuda e acredito que também aqui tivemos dúvidas semelhantes.Você precisa encontrar o índice dos valores de quantis para obter os
(x,y)
pares reais .Editar: Aqui está:
Saída (adicionado por JDL)
fonte
demo(graphics)
desde antes do amanhecer, então alguém se depara de vez em quando. Mesma ideia para sombreamento de regressão NBER etc.Outra solução:
Resultado:
fonte
Uma solução expandida:
Se você quiser sombrear as duas caudas (copiar e colar do código de Dirk) e usar valores x conhecidos:
Resultado:
fonte
Esta pergunta precisa de uma
lattice
resposta. Aqui está um muito básico, simplesmente adaptando o método empregado por Dirk e outros:fonte
Aqui está outra
ggplot2
variante baseada em uma função que se aproxima da densidade do kernel nos valores de dados originais:Usar os dados originais (em vez de produzir um novo quadro de dados com os valores xey da estimativa de densidade) tem a vantagem de também trabalhar em gráficos facetados, onde os valores de quantis dependem da variável pela qual os dados estão sendo agrupados:
Código usado
Criado em 13/07/2018 pelo pacote reprex (v0.2.0).
fonte