exponenta event banner

Гистограммы массивов Tall

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

Создание таблицы Талл

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

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.66 sec
- Pass 2 of 2: Completed in 0.33 sec
Evaluation completed in 1.4 sec
title('Flight arrival delays, 1987 - 2008')
xlabel('Arrival Delay (minutes)')
ylabel('Frequency')

Figure contains an axes. The axes 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.33 sec
Evaluation completed in 1.1 sec
title('Flight arrival delays between -50 and 150 minutes, 1987 - 2008')
xlabel('Arrival Delay (minutes)')
ylabel('Frequency')

Figure contains an axes. The axes 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.63 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.48 sec
Evaluation completed in 0.52 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. The axes 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.34 sec
- Pass 2 of 2: Completed in 0.59 sec
Evaluation completed in 1.2 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 минут.

См. также

| |

Связанные темы