这个例子展示了如何使用柱状图
和histogram2
分析和可视化包含在一个大数组中的数据。
创建数据存储airlinesmall.csv
数据集。治疗“NA”
值作为丢失的数据,以便用南
值。选择要处理的变量的子集。将数据存储转换为一个高表。
varnames = {“ArrDelay”,“DepDelay”,“年”,“月”};ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”,...“SelectedVariableNames”, varnames);T =高(ds)
T = Mx4高表ArrDelay DepDelay月 ________ ________ ____ _____ 8 12 1987 10 8 1987 21 1987 10 1987年12 13日10 4 3 2 1 1987 59 63 1987 1987 10 11 1987 10 : : : : : : : :
绘制的直方图ArrDelay
变量来检查到达延误的频率分布。
h =直方图(T.ArrDelay);
using the Local MATLAB Session: - Pass 1 of 2: Completed in 1.1 sec - Pass 2 of 2: Completed in 0.48 sec
标题(“航班延误,1987 - 2008”)包含(的到来推迟(分钟)) ylabel (“频率”)
到达延迟通常是一个接近0的小数字,所以这些值占据了整个情节,使得我们很难看到其他细节。
限制柱状图箱限制,只plot之间的到达延迟-50到150分钟。从高数组创建直方图对象后,不能更改任何需要重新计算容器的属性,包括BinWidth
和BinLimits
.同样,你也不能使用morebins
或fewerbins
调整容器的数量。在这些情况下,使用柱状图
从高阵的原始数据重建直方图。
图直方图(T。ArrDelay,“BinLimits”[-50150])
using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.67 sec - Pass 2 of 2: Completed in 0.6 sec
标题(“1987 - 2008年航班延误-50至150分钟”)包含(的到来推迟(分钟)) ylabel (“频率”)
从这个情节来看,长时间的拖延似乎比最初预期的更常见。为了进一步调查,请找出航班延误一小时或更长时间的概率。
原始的直方图返回一个对象h
中包含bin值的值
属性中的容器边缘BinEdges
财产。可以使用这些属性执行内存计算。
确定哪些箱子包含一个小时(60分钟)或更长时间的到达延误。从逻辑索引向量中删除最后一条bin边,使其与bin值向量的长度相同。
idx = h.BinEdges >;idx(结束)= [];
使用idx
检索与每个选定的容器关联的值。将箱值加在一起,除以样本总数,再乘以100,就可以确定延迟大于或等于1小时的总概率。由于样本的总数是从原始数据集计算出来的,所以使用收集
显式计算并返回内存中的标量。
N =元素个数(T.ArrDelay);P =收集(总和(h.Values (idx)) * 100 / N)
P = 4.4809
总的来说,航班延误一小时或更长时间的几率约为4.5%。
绘制一个二元直方图,显示按月计算的延迟时间为60分钟或更长。这个情节探讨了季节性如何影响到达延迟。
图h2 = histogram2(T. month,T. month,T. month)ArrDelay, 50 [12],“YBinLimits”(1100),...“归一化”,“概率”,“FaceColor”,“平”);
using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.94 sec Evaluation Completed in 1.2 sec使用本地MATLAB Session: - Pass 1 of 1: Completed in 0.93 sec评估在1.1 sec完成
标题(“延误1小时或以上的概率(按月计算)”)包含(“月(1 - 12)”) ylabel (的到来推迟(分钟)) zlabel (“概率”) xticks(1:12)视图(-126年,23)
使用二元直方图对象计算每个月有一个小时或更大的到达延迟的概率,以及每个月的平均到达延迟。将结果放入带有变量的表中P
包含概率信息和变量MeanByMonth
包含平均到达延迟。
monthNames = {“1月”,2月的,“3”,4月的,“可能”,“君”,...“7”,“8月”,“9”,“10月”,11月的,12月的} ';G = findgroups (T.Month);M = splitapply(@(x)) mean(x,“omitnan”)、T.ArrDelay G);delayByMonth = table(monthNames, sum(h2.Values,2)*100, gather(M),...“VariableNames”, {“月”,“P”,“MeanByMonth”})
using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.46 sec - Pass 2 of 2: Completed in 1.3 sec
delayByMonth =12×3表月P MeanByMonth _______ ______ ___________ {' } 1月9.6497 - 8.5954 7.7058 - 7.3275{' 2月'}{“Mar”}9.0543 - 7.5536{4月的}7.2504 - 6.0081 7.4256 - 5.2949{‘可能’}{“君”}10.35 - 10.264{‘7’}10.228 - 8.7797 8.5989 - 7.4522{“8月”}{‘9’}5.4116 - 3.6308{10月的}6.042 - 4.6059{11月的}6.9002 5.2835{12月的}11.384 - 10.571
结果显示,12月份的航班延误超过1小时的概率为11.4%,但平均延误10.5分钟。紧随其后的是夏季的6月和7月,在这两个月里,大约有10%的几率会延迟一个小时或更长时间,平均延迟时间大约是9或10分钟。