Гистограммы длинных массивов

В этом примере показано, как использовать histogram и histogram2 анализировать и визуализировать данные, содержавшиеся в длинном массиве.

Составление длинной таблицы

Создайте datastore с помощью airlinesmall.csv набор данных. Обработайте 'NA' значения как недостающие данные так, чтобы они были заменены NaN значения. Выберите подмножество переменных, чтобы работать с. Преобразуйте datastore в длинную таблицу.

varnames = {'ArrDelay', 'DepDelay', 'Year', 'Month'};
ds = tabularTextDatastore('airlinesmall.csv', 'TreatAsMissing', 'NA', ...
    'SelectedVariableNames', varnames);
T = tall(ds)
T =

  Mx4 tall table

    ArrDelay    DepDelay    Year    Month
    ________    ________    ____    _____

        8          12       1987     10  
        8           1       1987     10  
       21          20       1987     10  
       13          12       1987     10  
        4          -1       1987     10  
       59          63       1987     10  
        3          -2       1987     10  
       11          -1       1987     10  
       :           :         :        :
       :           :         :        :

Графическое изображение гистограммы задержек прибытия

Постройте гистограмму ArrDelay переменная, чтобы исследовать плотность распределения задержек прибытия.

h = histogram(T.ArrDelay);
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 0.72 sec
- Pass 2 of 2: Completed in 0.35 sec
Evaluation completed in 1.5 sec
title('Flight arrival delays, 1987 - 2008')
xlabel('Arrival Delay (minutes)')
ylabel('Frequency')

Figure contains an axes object. The axes object with title Flight arrival delays, 1987 - 2008 contains an object of type histogram.

Задержка прибытия является наиболее часто небольшим числом около 0, таким образом, эти значения доминируют над графиком и мешают видеть другие детали.

Корректировка пределов интервала гистограммы

Ограничьте пределы интервала гистограммы, чтобы построить только задержки прибытия между-50 и 150 минутами. После того, как вы создаете объект гистограммы из длинного массива, вы не можете изменить свойства, которые потребовали бы перевычисления интервалов, включая BinWidth и BinLimits. Кроме того, вы не можете использовать morebins или fewerbins настраивать количество интервалов. В этих случаях используйте histogram восстановить гистограмму от необработанных данных в длинном массиве.

figure
histogram(T.ArrDelay,'BinLimits',[-50,150])
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 0.47 sec
- Pass 2 of 2: Completed in 0.41 sec
Evaluation completed in 1.2 sec
title('Flight arrival delays between -50 and 150 minutes, 1987 - 2008')
xlabel('Arrival Delay (minutes)')
ylabel('Frequency')

Figure contains an axes object. The axes object with title Flight arrival delays between -50 and 150 minutes, 1987 - 2008 contains an object of type histogram.

Из этого графика кажется, что длительные задержки могут быть более распространены, чем первоначально ожидаемый. Чтобы заняться расследованиями далее, найдите вероятность задержки прибытия, которая является одним часом или больше.

Вероятность задержек один час или больше

Исходная гистограмма возвратила объект h это содержит значения интервала в Values свойство и границы интервала в BinEdges свойство. Можно использовать эти свойства выполнить вычисления в оперативной памяти.

Определите, какие интервалы содержат задержки прибытия одного часа (60 минут) или больше. Удалите последнюю границу интервала из логического вектора индекса так, чтобы это была та же длина как вектор из значений интервала.

idx = h.BinEdges >= 60;
idx(end) = [];

Используйте idx получать значение, сопоставленное с каждым выбранным интервалом. Добавьте значения интервала вместе, разделитесь на общее количество выборок и умножьтесь на 100, чтобы определить полную вероятность задержки, больше, чем или равный одному часу. Поскольку общее количество выборок вычисляется из исходного набора данных, используйте gather явным образом оценить вычисление и возвратить скаляр в оперативной памяти.

N = numel(T.ArrDelay);
P = gather(sum(h.Values(idx))*100/N)
P = 4.4809

В целом, разногласия прибытия задерживают один час или дольше составляют приблизительно 4,5%.

Графическое изображение двумерной гистограммы задержек к месяцу

Постройте двумерную гистограмму задержек прибытия, которые составляют 60 минут или дольше к месяцу. Этот график исследует, как сезонность влияет на задержку прибытия.

figure
h2 = histogram2(T.Month,T.ArrDelay,[12 50],'YBinLimits',[60 1100],...
    'Normalization','probability','FaceColor','flat');
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.56 sec
Evaluation completed in 0.67 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.49 sec
Evaluation completed in 0.55 sec
title('Probability of arrival delays 1 hour or greater (by month)')
xlabel('Month (1-12)')
ylabel('Arrival Delay (minutes)')
zlabel('Probability')
xticks(1:12)
view(-126,23)

Figure contains an axes object. The axes object with title Probability of arrival delays 1 hour or greater (by month) contains an object of type histogram2.

Задержка статистики к месяцу

Используйте объект двумерной гистограммы вычислить, вероятность наличия прибытия задерживают один час или больше в каждом месяце, и средняя задержка прибытия в течение каждого месяца. Поместите результаты в таблицу с переменной P содержа информацию о вероятности и переменную MeanByMonth содержа среднюю задержку прибытия.

monthNames = {'Jan','Feb','Mar','Apr','May','Jun',...
    'Jul','Aug','Sep','Oct','Nov','Dec'}';
G = findgroups(T.Month);
M = splitapply(@(x) mean(x,'omitnan'),T.ArrDelay,G);
delayByMonth = table(monthNames, sum(h2.Values,2)*100, gather(M), ...
    'VariableNames',{'Month','P','MeanByMonth'})
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 0.38 sec
- Pass 2 of 2: Completed in 0.79 sec
Evaluation completed in 1.6 sec
delayByMonth=12×3 table
     Month       P       MeanByMonth
    _______    ______    ___________

    {'Jan'}    9.6497      8.5954   
    {'Feb'}    7.7058      7.3275   
    {'Mar'}    9.0543      7.5536   
    {'Apr'}    7.2504      6.0081   
    {'May'}    7.4256      5.2949   
    {'Jun'}     10.35      10.264   
    {'Jul'}    10.228      8.7797   
    {'Aug'}    8.5989      7.4522   
    {'Sep'}    5.4116      3.6308   
    {'Oct'}     6.042      4.6059   
    {'Nov'}    6.9002      5.2835   
    {'Dec'}    11.384      10.571   

Результаты показывают, что рейсы в праздничном месяце декабря имеют шанс на 11,4% того, чтобы быть задержанным дольше, чем час, но задержаны на 10,5 минут в среднем. Это сопровождается летними месяцами июня и июля, где существует приблизительно 10%-й шанс того, чтобы быть задержанным, час или больше и средняя задержка составляет примерно 9 или 10 минут.

Смотрите также

| |

Похожие темы