Вероятно, вам придется указать значения самостоятельно. Ссылка на пример, использованный в файле справки adjbox()
:
library(robustbase)
if(require("boot")) {
### Hubert and Vandervieren (2006), p. 10, Fig. 4.
data(coal, package = "boot")
coaldiff <- diff(coal$date)
op <- par(mfrow = c(1,2))
boxplot(coaldiff, main = "Original Boxplot")
adjbox(coaldiff, main = "Adjusted Boxplot")
par(op)
}
В результате получаются следующие диаграммы:
![введите здесь описание изображения](https://i.stack.imgur.com/vqcWd.png)
Затем вы можете получить значения, которые использовала функция adjbox()
:
coald <- data.frame(coaldiff = diff(coal$date)) #$
adjboxStats(coald$coaldiff)$stats
# [1] 0.0000000 0.1013005 0.3107461 0.7529090 3.7180014
Это значения, используемые для построения скорректированной коробчатой диаграммы. Вы можете использовать эту информацию для ggplot()
, а затем рассчитать свои собственные диаграммы. Вероятно, есть лучшие способы сделать это, но первое, что я подумал сделать, это создать новый набор данных, включающий скорректированные значения блочной диаграммы:
library(ggplot2)
library(plyr)
d <- ddply(coald, .(coaldiff), transform,
ymin = adjboxStats(coald$coaldiff)$stats[1],
ymax = adjboxStats(coald$coaldiff)$stats[5],
middle = adjboxStats(coald$coaldiff)$stats[3],
lower = adjboxStats(coald$coaldiff)$stats[2],
upper = adjboxStats(coald$coaldiff)$stats[4])
# Boxplot with unadjusted values:
p <- ggplot(d, aes(factor(1), coaldiff))
p + geom_boxplot()
# Boxplot with adjusted values (note that you have to add the outliers back in):
p + geom_boxplot(aes(ymin=ymin, ymax=ymax, middle=middle, upper=upper, lower=lower),
stat="identity") +
geom_point(data=subset(d, coaldiff < ymin | coaldiff > ymax))
Это даст вам ggplot2
версий приведенных выше графиков:
![введите здесь описание изображения](https://i.stack.imgur.com/jlWF0.png)
Также обратите внимание, что Хэдли Уикхэм советует не делать этого «без долгих размышлений» в ответе на аналогичный вопрос.
person
smillig
schedule
23.05.2014