主要内容

具有高大阵列的逻辑回归

这个例子展示了如何使用逻辑回归和其他技术在高阵列上执行数据分析。高数组表示数据太大,无法放入计算机内存。

执行环境定义

当您在高数组上执行计算时,MATLAB®使用一个并行池(如果您有parallel Computing Toolbox™,则默认)或本地MATLAB会话。要在使用并行计算工具箱时使用本地MATLAB会话运行示例,请使用mapreduce函数。

mapreduce (0)

将数据放入Matlab中

创建一个使用数据引用文件夹位置的数据存储。数据可以包含在单个文件、文件集合或整个文件夹中。治疗“NA”值作为缺失数据,以便数据存储用它们取代它们值。选择要处理的变量的子集,并包括航空公司的名称(UniqueCarrier)作为一个分类变量。在数据存储的顶部创建一个高表。

ds =数据存储(“airlinesmall.csv”);ds。TreatAsMissing =“NA”;ds。SelectedVariableNames = {“DayOfWeek”'unqueCarrier'...“ArrDelay”“DepDelay”'距离'};ds.selectedFormats {2} ='%C';tt =高(ds);tt。DayOfWeek =分类(tt。DayOfWeek 1:7,...“太阳”“我的”“面前”“结婚”“星期四”“星期五”“坐”},“顺序”,真正的)
tt = Mx5高表DayOfWeek UniqueCarrier ArrDelay DepDelay距离  _________ _____________ ________ ________ ________ ?????????? ? ? ? ? ? : : : : : : : : : :

晚的航班

通过定义一个对迟到航班适用的逻辑变量来确定迟到20分钟或更长时间的航班。将这个变量添加到高数据表中,注意它还没有被计算。这个变量的预览包括前几行。

tt。LateFlight = tt。ArrDelay > = 20
tt = mx6高表Dayofweek UniqueCarrier Arrdelay Depdelay距离_________ _____________________ ________________________?????????? ? ? ? ? ? ? ? ? : : : : : : : : : : : :

计算的平均值LateFlight以确定航班晚点的总体比例。使用收集触发对高数组的求值,并将结果存入内存。

m =意味着(tt.LateFlight)
M =高双?
m =收集(m)
using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.84 sec - Pass 2 of 2: Completed in 0.81 sec
m = 0.1580

承运人延误航班

检查某些类型的航班是否会晚点。首先,查看是否某些航空公司的航班更有可能晚点。

tt。LateFlight =双(tt.LateFlight);late_by_carrier =收集(grpstats (tt,'unqueCarrier'“的意思是”“DataVar”“LateFlight”))
using the Local MATLAB Session: - Pass 1 of 1: Completed in 2.3 sec
laze_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电动汽车迟到航班的比例更高。航空公司AQ毫升(1), 和航班相对较少,但晚点的比例较低。

每周的晚点航班

接下来,检查一下一周中不同的日子是否有晚一点的航班。

late_by_day =收集(grpstats (tt,“DayOfWeek”“的意思是”“DataVar”“LateFlight”))
using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.5 sec
late_by_day =7×4表GroupLabel DayOfWeek GroupCount mean_LateFlight __________ _________ __________ _______________{'周五'}周五15839 0.12899 {'Mon'} Mon 18077 0.14234 {'Sat'} Sat 16958 0.15603 {'Sun'} Sun 18019 0.15117 {'Thu'} Thu 18227 0.18418 {'Tues'} Tues 18163 0.15526 {'Wed'} Wed 18240 0.18399

周三和周四晚点航班的比例最高,周五晚点航班的比例最低。

按距离计算的延误航班

检查一下是长时间的航班还是短时间的航班容易晚点。首先,查看航班晚点的飞行距离密度,并与准时的航班进行比较。

ksdensity (tt.Distance (tt.LateFlight = = 1))
using the Local MATLAB Session: - Pass 1 of 2: Completed in 1.2 sec - Pass 2 of 2: Completed in 0.87 sec
持有ksdensity (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
持有传奇(“晚了”'准时'

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象表示Late, On time。

飞行距离对航班的早或晚并没有太大的影响。然而,距离约400英里的准时航班的密度似乎略高一些。距离约2000英里的航班晚点时,密度也更高。计算一些迟到和准时航班的简单描述性统计。

laze_by_distance =收集(grpstats(tt,“LateFlight”,{“的意思是”“性病”},“DataVar”'距离'))
使用当地Matlab会话评估高表达: - 通过1的1:在1.5秒评估中完成的2.2秒完成
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”}));
使用本地MATLAB会话评估高表达: - 通过1的第1条:0.26秒的评估完成为0.48秒
X.Distance = Linspace(0,3000)';x.dayofweek(:) =“太阳”;情节(x.Distance预测(glm x));天= {“太阳”“我的”“面前”“结婚”“星期四”“星期五”“坐”};持有j=2:length(days) x.DayOfWeek(:) = days{j};情节(x.Distance预测(glm x));结束传奇(天)

图中包含一个轴对象。axis对象包含7个类型为line的对象。这些物体代表太阳,星期一,星期二,星期三,星期四,星期五,星期六。

根据这个模型,周三或周四飞行500英里的晚点概率约为18%,与周五飞行3000英里的晚点概率相同。

由于这些概率都远远低于50%,模型不太可能使用这些信息来预测任何给定的航班将会晚点。通过对模型预测的迟到概率为20%或更多的航班进行更多的调查,并将其与实际结果进行比较。

C =收集(交叉表(tt.LateFlight,预测(glm, tt) > .20))
using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.4 sec
C =2×299613 4391 18394 1125

在预计迟到概率为20%或更高的航班中,大约有20%的航班迟到了1125 / (1125 + 4391).在其余人中,不到16%的人迟到了18394 / (18394 + 99613)