У меня есть данные в Matlab, которые я хотел бы построить, используя коробчатую диаграмму. Поскольку стандартный блок-график не был достаточно настраиваемым, я решил использовать функцию boxPlot из набора инструментов статистики IoSR. Я хочу, чтобы на прямоугольной диаграмме были усы, которые отображали квантили 0,025 и 0,975, в то время как сама коробка показывала межквартильный диапазон и медиана (в любом случае это по умолчанию). Типичный набор данных, например,
p = [60.1 93 135.2 69 107.1 98.4 118.9 83.9 67 74.5 102.5 120.8 103.7 114.3 102.4 139.9 110.4 119.3 105.1 79.8 222.7 185.3 76.4 100.2 61.2 131.6 87.2 96 113.3 52.9 78.5 163.3 65.4 64.4];
Я вычислил квантили 0,025 и 0,975 с помощью стандартного метода Matlab prctile()
, а также функцию квантиля набора инструментов quantile()
, которую должен использовать метод коробчатой диаграммы. использовать и получить точно такие же результаты:
prctile(p,2.5,2) -> ans = 55.4200
prctile(p,97.5,2) -> ans = 209.6100
iosr.statistics.quantile(p,0.025,2,'R-5') -> ans = 55.4200
iosr.statistics.quantile(p,0.975,2,'R-5') -> ans = 209.6100
Однако, когда я создаю коробочную диаграмму с приведенным ниже кодом, я получаю слишком короткие усы. Верхний ус заканчивается на отметке 185,3, а не 209,61, а нижний ус простирается до 60,1 вместо 55,42. Теперь усы заканчиваются точно на втором по величине / наименьшем значении набора данных, в то время как вычисленные вручную квантили, похоже, используют какую-то схему интерполяции для получения своих значений.
Что это? Вот? Как мне заставить блочную диаграмму отображать те же квантили, что и рассчитанные вручную?
iosr.statistics.boxPlot(["data"],p'...
,'limit',[2.5, 97.5],'boxColor',[0.5 0.5 0.5],'lineColor','k'...
,'medianColor',[0.2 0.2 0.2],'method','R-5','showOutliers',false...
,'xspacing','equal')
введите описание изображения здесь