此示例显示如何使用Logistic回归和其他技术在高阵列上执行数据分析。高阵列表示无法适合计算机内存的数据。
当您在高数组上执行计算时,MATLAB®使用一个并行池(如果您有parallel Computing Toolbox™,则默认)或本地MATLAB会话。要在使用并行计算工具箱时使用本地MATLAB会话运行示例,请使用Mapreducer.
功能。
Mapreducer(0)
创建一个数据存储区,将文件夹位置与数据引用。数据可以包含在单个文件中,文件集合或整个文件夹中。对待“NA”
值作为缺失数据,以便数据存储
取代他们南
值。选择要处理的变量的子集,并包括航空公司的名称(uniqueCarrier
)作为分类变量。在数据存储上创建一个高表。
ds =数据存储(“airlinesmall.csv”);ds。TreatAsMissing =“NA”;ds.selectedvariablenames = {'Dayofweek'那“UniqueCarrier”那......“ArrDelay”那'depdelay'那“距离”};ds。SelectedFormats {2} =“% C”;tt =高(ds);tt。DayOfWeek =分类(tt。DayOfWeek 1:7,......{'太阳'那“我的”那'tues'那'星期三'那'星期四'那“星期五”那“坐”},“顺序”,真的)
tt = Mx5高表DayOfWeek UniqueCarrier ArrDelay DepDelay距离 _________ _____________ ________ ________ ________ ?????????? ? ? ? ? ? : : : : : : : : : :
通过定义延迟飞行的逻辑变量来确定20分钟或更长时间的航班。将此变量添加到高表数据表,注意到尚未评估。此变量的预览包括前几行。
tt。LateFlight = tt。ArrDelay > = 20
tt = Mx6高表DayOfWeek UniqueCarrier ArrDelay LateFlight DepDelay距离 _________ _____________ ________ ________ ________ __________ ?????????? ? ? ? ? ? ? ? ? : : : : : : : : : : : :
计算的平均值LateFlight
以确定航班晚点的总体比例。使用收集
触发对高数组的求值,并将结果存入内存。
m =意味着(tt.LateFlight)
M =高双?
m =收集(m)
使用当地MATLAB会话评估高表达: - 通过第1条:第2条:在0.84秒内完成 - 通过2:0.81秒评估完成2.3秒
m = 0.1580
检查某些类型的航班往往是否已迟到。首先,检查某些载体是否更有可能有延迟航班。
tt。LateFlight =双(tt.LateFlight);late_by_carrier =收集(grpstats (tt,“UniqueCarrier”那“的意思是”那“DataVar”那'潜水'))
使用本地MATLAB会话评估高表达: - 通过1的1:在2.3秒评估中完成3秒
late_by_carrier =29×4表GroupLabel UniqueCarrier GroupCount mean_LateFlight __________ _____________ __________ _______________ {' 9 e”}9 e 521 0.13436{“AA”}AA 14930 0.051948 0.16236 {AQ的}AQ 154{”“}2910 0.16014 {B6的}B6 806 0.16319 0.23821{‘公司’}公司8138{“DH”}DH 696 0.17672{“DL”}DL 16578 0.15261 {' EA} EA 920 0.15217{“电动汽车”}电动车1699 0.21248 {' F9 '}F9 335 0.18209 {' fl '} fl 1263 0.19952 {' ha '} ha 273 0.047619 {' hp '} hp 3660 0.13907 {' ml (1)'} ml (1) 69 0.043478 {' mq '} mq 3962 0.18778⋮
载体B6.
和EV.
具有更高的后期航班比例。载体AQ.
那ml(1)
,哈
有相对较少的航班,但较低的比例迟到了。
接下来,检查一周的不同日子是否往往有稍后的航班。
late_by_day =收集(grpstats (tt,'Dayofweek'那“的意思是”那“DataVar”那'潜水'))
使用本地MATLAB会话评估高表达: - 通过1的第1条:在1.5秒评估中完成,在1.7秒内完成
laze_by_day =7×4表grouplabel dayofweek groupcount mean_lateflight ___________________________________________TUES'DUES 18163 0.15526 {'WED'}星期三18240 0.18399
星期三和星期四的延迟航班比例最高,周五比例最低。
检查更长或更短的航班往往是否已迟到。首先,看看迟到的航班的飞行距离的密度,并与准时的航班进行比较。
ksdensity (tt.Distance (tt.LateFlight = = 1))
使用本地MATLAB会话评估高表达: - 通过第1条:第2条:在1.2秒内完成 - 通过2:0.87秒评估完成2.5秒
抓住在ksdenty(tt.distance(tt.lateflight == 0))
using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.89 sec - Pass 2 of 2: Completed in 1.6 sec
抓住从传奇('晚了'那“准时”)
飞行距离对航班的早或晚并没有太大的影响。然而,距离约400英里的准时航班的密度似乎略高一些。距离约2000英里的航班晚点时,密度也更高。计算一些迟到和准时航班的简单描述性统计。
late_by_distance =收集(grpstats (tt,'潜水', {“的意思是”“性病”},“DataVar”那“距离”))
using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.5 sec
late_by_distance =2×5表GroupLabel LateFlight GroupCount mean_Distance std_Distance __________ __________ __________ _____________ ____________ {' 0 '} 0 1.04 e + 05年693.14 - 544.75 {' 1 '}1 19519 750.24 - 574.12
晚飞航班平均要长60英里,尽管这个值只占距离值的标准偏差的一小部分。
建立一个延迟飞行概率的模型,使用连续变量(例如距离
)和分类变量(例如DayOfWeek
)来预测概率。这个模型可以帮助确定,当你把它们放在一起考虑时,每个预测者先前单独观察到的结果是否也成立。
glm = fitglm(tt,“LateFlight ~距离+ DayOfWeek '那'分配'那“二”)
迭代[1]:0%完成迭代[1]:100%完成迭代[2]:0%完成迭代[2]:100%完成迭代[3]:0%完成迭代[3]:100%完成迭代[4]:0%完成迭代[4]:100%完成迭代[5]:0%完成迭代[5]:100%完成
glm =紧凑广义线性回归模型:logit(LateFlight) ~ 1 + DayOfWeek +距离分布=二项估计系数:估算SE tStat pValue __________ __________ _______ __________(截距)-1.855 0.023052 -80.469 0 DayOfWeek_Mon -0.072603 0.029798 -2.4365 0.01483 DayOfWeek_Tues 0.026909 0.029239 0.92029 0.35742 DayOfWeek_Wed 0.2359 0.028276 8.343 7.2452 -17 DayOfWeek_Thu 0.23569 0.028282 8.3338 7.8286 -17 dayofweek_friday -0.19285 0.031583 -6.106 1.0213e-09距离0.00018373 1.3507e-05 13.602 3.8741e-42 123319观测值,123311误差自由度
该模型证实了先前观察到的结论在这里保持了真实:
周三和周四的系数是正的,表明这几天航班晚点的可能性更高。周五系数为负,表示概率较低。
距离系数为正,表明较长的航班有较高的迟到概率。
所有这些系数的p值都很小。这在有许多观察的数据集中很常见,因为人们可以可靠地用大量的数据估计小的影响。事实上,模型中的不确定性大于模型中参数估计的不确定性。
预测一周中每天的延迟飞行的概率,以及0到3000英里的距离。通过索引原始表中的前100行来创建一个表来保存预测值值TT.
.
x =收集(tt (1:10 0, {“距离”'Dayofweek'}));
using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.26 sec
x.Distance = linspace (3000 0) ';x.DayOfWeek: ='太阳';情节(x.Distance预测(glm x));天= {'太阳'“我的”'tues''星期三''星期四'“星期五”“坐”};抓住在为了j=2:length(days) x.DayOfWeek(:) = days{j};情节(x.Distance预测(glm x));结束传奇(天)
根据这个模型,周三或周四飞行500英里的晚点概率约为18%,与周五飞行3000英里的晚点概率相同。
由于这些概率远远小于50%,因此该模型不太可能预测任何给定的飞行将迟到使用这些信息。更多地通过专注于模型预测到迟到的概率为20%或更多的航班,并将其与实际结果进行比较。
C =聚集(Crosstab(Tt.LateFlight,预测(GLM,TT)>。20))
使用本地MATLAB会话评估高表达: - 通过1:1:在1.4秒评估中完成的1.5秒完成
C =2×299613 4391 18394 1125
在预测有20%或更高概率的航班中,大约20%的概率已经很晚了1125 /(1125 + 4391)
.在其余人中,不到16%的人迟到了18394 /(18394 + 99613)
.