Na boxplot()
função em R, existe o log =
argumento para especificar se um eixo deve ou não estar na escala de log.
Para mim, se eu escolher esta opção (especificar log = "y"
como argumento), a forma do gráfico de caixa deve ser a mesma que se eu transformas manualmente os dados primeiro com o log e, em seguida, plote esses dados transformados em log (reconheço os rótulos no eixo será diferente, mas estou me referindo à forma do gráfico). No entanto, este não é o caso.
Aqui está um exemplo de trabalho simples:
set.seed(923489)
data <- rlnorm(300, meanlog = 0, sdlog = 1)
boxplot(data) # Highly skewed right raw data
boxplot(data, log="y") # Data on log scale; less right-skewed
boxplot(log10(data)) # Log base 10-transform data; shape not the same as when specify log="y"
boxplot(log(data)) # Natural log and base 10 give same shape plot (just different axis labels)
Porque isto é assim?
Respostas:
Obviamente, a caixa com o "cinto" mediano parece a mesma. A diferença são os bigodes. Nas configurações padrão,
?boxplot
diz-nos querange
é positivo, ou seja, 1,5 no padrão. Então, os bigodes se estendem 1,5 vezes a caixa, mas em qual escala? Se você ligarboxplot(data, log="y")
, é 1,5 nos dados não dimensionados; assim, o bigode mais baixo fica mais longo. Se você ligar,boxplot(log(data))
os bigodes são necessariamente simétricos.fonte
De
?boxplot
, você pode ler:O padrão ao plotar um boxplot,
range=1.5
significa que os bigodes se estenderão 1,5 vezes a faixa interquartil acima do terceiro quartil e abaixo do primeiro quartil; todos os outros pontos serão rotulados como outliers.As diferenças que você está vendo são baseadas no fato de que a transformação de log dos dados não mantém a distância normalizada de um ponto do terceiro ou primeiro quartil; conforme o esperado com seus dados, após a transformação do log, você terá menos discrepantes com valores muito altos e mais discrepantes com valores baixos.
fonte