Questão:
Como fazer um histograma não equidistante em R?
dfrankow
2012-05-24 21:28:41 UTC
view on stackexchange narkive permalink

Dos documentos R para hist:

O padrão de R com quebras equi-espaçadas (também o padrão) é plotar as contagens nas células definidas por quebras . Assim, a altura de um retângulo é proporcional ao número de pontos que caem na célula, assim como a área, desde que as quebras sejam igualmente espaçadas.

O padrão com quebras não equidistantes é fornecer um plot da área um, em que a área dos retângulos é a fração dos pontos de dados que caem nas células.

Então ... como faço para obter hist para plotar não equidistante rompe? Parece que vai calcular as quebras para terminar com a área um, mas não vejo as opções.

Editar: Além disso, quais são as formas recomendadas (em R ) para fazer histogramas não equidistantes? Um caso típico seria dados que são pontiagudos, causando toda a ação em uma ou algumas células, não importa quantas são dadas como "quebras". Outra seria duas áreas de atividade separadas por uma grande área zero, o que significa que não importa quantas interrupções, tudo o que você vê é plano, com duas enormes pontas estreitas. Ou talvez pior, uma área de atividade, depois outra área de muito menos atividade distante que faz com que o gráfico seja muito amplo e plano.

Esta é uma boa pergunta, mas parece se preocupar apenas como fazer com que `R` faça algo, em oposição aos aspectos estatísticos dos histogramas. Como tal, acho que se encaixa melhor no Stack Overflow do que aqui.
Eu também não me importaria de conhecer as melhores práticas para caixas não equidistantes, mas parece estranho mudar a questão agora.
Nem um pouco, mude. Você deve garantir que a pergunta reflita o que você deseja saber, para que possa obter as informações de que precisa. As perguntas são freqüentemente atualizadas após a postagem inicial para esclarecer o que o OP realmente quer e para facilitar respostas mais adequadas. Além disso, faria de CV o local apropriado para a pergunta IMO, caso você queira mantê-la aqui.
Trzy respostas:
David LeBauer
2012-05-24 21:47:38 UTC
view on stackexchange narkive permalink

Denby and Mallows 2009 link ungated fornecem uma boa abordagem chamada de 'histograma cortado diagonalmente' e fornecem uma função 'dhist' em seu material suplementar (disponível em link acima).

Aqui está o resumo:

Ao construir um histograma, é comum que todas as barras tenham a mesma largura. Pode-se também optar por fazer com que todos tenham a mesma área. Essas duas opções têm pontos fortes e fracos complementares; o histograma de largura igual é excessivamente suave em regiões de alta densidade e é pobre em identificar picos agudos; o histograma de área igual suaviza excessivamente em regiões de baixa densidade e, portanto, não identifica valores discrepantes. Descrevemos uma abordagem de compromisso que evita esses dois defeitos. Consideramos o histograma como um dispositivo exploratório, e não como uma estimativa de uma densidade. Argumentamos que confiar na assintótica do erro quadrático médio integrado leva a recomendações inadequadas para a escolha de larguras de bin

E uma figura comparando a) cdf, b) histograma de área igual, c) igual histograma bin-width ed) dhist:

enter image description here

Lorraine Denby, Colin Mallows. Journal of Computational and Graphical Statistics. 1 de março de 2009, 18 (1): 21-31. doi: 10.1198 / jcgs.2009.0002.

gung - Reinstate Monica
2012-05-24 21:38:51 UTC
view on stackexchange narkive permalink

Você notará que há um argumento quebras como parte da função hist () , com o padrão definido como "Sturges". Você também pode definir seus próprios pontos de interrupção e usá-los em vez do algoritmo de sturges padrão da seguinte maneira:

  pontos de interrupção <- c (0, 1, 10, 11, 12) hist (dados, quebras = breakpoints)  

Se você ler todo o caminho até o final, há alguns exemplos com quebras não equidistantes também.

Atualização: esta pode não ser uma resposta direta à sua pergunta, mas você pode usar uma abordagem diferente (ou seja, gráfico) do que um histograma. Pessoalmente, não acho os histogramas muito úteis. Em vez disso, você pode tentar um gráfico de densidade do kernel, que acho que resolveria os dois primeiros casos que você listar (não vejo como você pode sair do terceiro). Em R, o código seria: plot (densidade (dados)) .

Parece que não há maneira padrão de obter pontos de interrupção não equitativos razoáveis ​​(por exemplo, área igual). Obrigado.
.. sem computá-los por alguma outra função.
F. Privé
2019-01-28 21:19:57 UTC
view on stackexchange narkive permalink

Uma solução fácil seria usar quantis como intervalos:

  x <- rnorm (100)
hist (x)
hist (x, quebras = quantil (x, 0:10 / 10))
 


Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...