Como eu ignoraria os outliers no boxgot do ggplot2? Eu simplesmente não quero que eles desapareçam (ou seja, outlier.size = 0), mas quero que eles sejam ignorados de forma que o eixo y seja escalado para mostrar o percentil 1/3. Meus outliers estão fazendo com que a "caixa" encolha tão pequena que é praticamente uma linha. Existem algumas técnicas para lidar com isso?
Editar Aqui está um exemplo:
y = c(.01, .02, .03, .04, .05, .06, .07, .08, .09, .5, -.6)
qplot(1, y, geom="boxplot")
fivenum()
os dados para extrair o que, IIRC, é usado para as dobradiças superior e inferior dos boxplots e usar essa saída nascale_y_continuous()
chamada que o @Ritchie mostrou. Isso pode ser automatizado com muita facilidade usando as ferramentas que R e ggplot fornecem. Se você precisar incluir os bigodes, considere usarboxplot.stats()
para obter os limites superior e inferior para os bigodes e use-os entãoscale_y_continuous()
.Respostas:
Aqui está uma solução usando boxplot.stats
fonte
ylim <- c(-0.1, 1000) * 1.05
dá[1] 0.105 1050
. Para obter limites iguais em relação ao meio que você poderia usarylim + c(-0.05, 0.05) * diff(ylim) / 2
. Mais bonito na minha opinião.facet_grid()
. Então você tem boxplots multible em vez de um. Assim, você não obtém os limites certos.Use
geom_boxplot(outlier.shape = NA)
para não exibir os valores extremos escale_y_continuous(limits = c(lower, upper))
alterar os limites do eixo.Um exemplo.
Na verdade, como Ramnath mostrou em sua resposta (e Andrie também nos comentários), faz mais sentido cortar as escalas depois de calcular a estatística, via
coord_cartesian
.(Você provavelmente ainda precisará usar
scale_y_continuous
para corrigir as quebras do eixo.)fonte
coord_cartesian()
não joga bem comcoord_flip()
, na minha experiência, então eu prefiroscale_y_continuous()
.Eu tive o mesmo problema e pré-calculei os valores para Q1, Q2, mediana, ymin, ymax usando
boxplot.stats
:O resultado é um boxplot sem discrepâncias.
fonte
Uma idéia seria otimizar os dados em um procedimento de duas passagens:
faça uma primeira passagem, aprenda quais são os limites, por exemplo, corte em determinado percentil ou desvio padrão de N acima da média ou ...
em uma segunda passagem, defina os valores além do limite especificado para o valor desse limite
Devo enfatizar que este é um método antiquado que deve ser dominado por técnicas robustas mais modernas, mas você ainda o encontra muito.
fonte
A opção "coef" da função geom_boxplot permite alterar o ponto de corte externo em termos de intervalos interquartis. Esta opção está documentada para a função stat_boxplot. Para desativar os valores discrepantes (em outras palavras, eles são tratados como dados regulares), em vez de usar o valor padrão de 1,5, especifique um valor de corte muito alto:
fonte
Se você deseja forçar os bigodes a se estenderem aos valores máximo e mínimo, pode ajustar o
coef
argumento. O valor padrão paracoef
é 1,5 (ou seja, o comprimento padrão dos bigodes é 1,5 vezes o IQR).fonte
Ipaper :: geom_boxplot2 é exatamente o que você deseja.
fonte