Matlab boxplot смежных значений - PullRequest
0 голосов
/ 20 ноября 2018

Я обнаружил, что вычисление индекса для определения выбросов набора данных в соответствии с тем, как работает блокпост, не дает таких же результатов.Ниже приведен пример, в котором я создаю некоторые данные, извлекаю значения из поля диаграммы (как видно из всплывающих подсказок в окне рисунка) и сравниваю их со значениями, которые я вычислил.

В то время как медиана и квартили совпадают сверхних и нижних соседних значений нет.Согласно справке Matlab в разделе «Whisker», смежные значения рассчитываются как q3 + w*(q3-q1), где q3 и q1 - квантили, а w - указанная длина вискера.

Я неправильно это высчитал или есть другая ошибка?Я хотел бы иметь возможность объяснить ошибку.

Снимок экрана с таблицей результатов (обратите внимание, что результаты могут отличаться из-за случайных данных)

%Boxplot test

% create random, normally distributed dataset
data = round(randn(1000,1)*10,2);

figure(10)
clf
boxplot(data,'Whisker',1.5)

clear stats tmp

% read data from boxplot, same values as can be seen in datatips in the figure window
h = findobj(gcf,'tag','Median');
tmp = get(h,'YData');
stats(1,1) = tmp(1);
h = findobj(gcf,'tag','Box');
tmp = get(h,'YData');
stats(1,2) = tmp(1);
stats(1,3) = tmp(2);
h = findobj(gcf,'tag','Upper Adjacent Value');
tmp = get(h,'YData');
stats(1,4) = tmp(1);
h = findobj(gcf,'tag','Lower Adjacent Value');
tmp = get(h,'YData');
stats(1,5) = tmp(1);

% calculated data
stats(2,1) = median(data);
stats(2,2) = quantile(data,0.25);
stats(2,3) = quantile(data,0.75);
range = stats(2,3) - stats(2,2);
stats(2,4) = stats(2,3) + 1.5*range;
stats(2,5) = stats(2,2) - 1.5*range;

% error calculation
for k=1:size(stats,2)
    stats(3,k) = stats(2,k)-stats(1,k);
end %for k

% convert results to table with labels
T = array2table(stats,'VariableNames',{'Median','P25','P75','Upper','Lower'}, ...
    'RowNames',{'Boxplot','Calculation','Error'});

1 Ответ

0 голосов
/ 21 ноября 2018

Хотя расчет границ, например, q3 = q3 + w*(q3-q1), является правильным, он не отображается на блок-графике.То, что фактически отображается и помечается как верхнее / нижнее смежное значение, является минимумом и максимумом значений в вышеупомянутых границах.

Относительно первоначальной задачи, приводящей к вопросу: Для применения той же фильтрации выбросов, что и вБокплот рассчитанные границы могут быть использованы.

...