主要内容

具有高阵列的逻辑回归

此示例显示如何使用Logistic回归和其他技术在高阵列上执行数据分析。高阵列表示无法适合计算机内存的数据。

定义执行环境

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

Mapreducer(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,......{'太阳'“我的”'tues''星期三''星期四'“星期五”“坐”},“顺序”,真的)
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)
使用本地MATLAB会话评估高表达: - 通过第1条:1/88秒内完成 - 通过2的第2条:在1.1秒评估中完成2.8秒
m = 0.1580

延迟航班由承运人

检查某些类型的航班往往是否已迟到。首先,检查某些载体是否更有可能有延迟航班。

tt。LateFlight =双(tt.LateFlight);late_by_carrier =收集(grpstats (tt,'unqueCarrier''意思'“DataVar”'潜水'))
using the Local MATLAB Session: - Pass 1 of 1: Completed in 2.6 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.EV.具有更高的后期航班比例。载体AQ.ml(1), 和有相对较少的航班,但较低的比例迟到了。

晚期航班一周的航班

接下来,检查一周的不同日子是否往往有稍后的航班。

late_by_day =收集(grpstats (tt,'Dayofweek''意思'“DataVar”'潜水'))
using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.3 sec
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))
using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.97 sec - Pass 2 of 2: Completed in 0.96 sec
抓住ksdenty(tt.distance(tt.lateflight == 0))
使用本地MATLAB会话评估高表达: - 第1条:第1条:在0.95秒内完成 -  PASS 2的2:在1.6秒评估中完成,在3秒内完成
抓住传奇('晚了''准时'

图中包含一个坐标轴。轴包含2个类型的型号。这些物体可按时代表迟到。

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

laze_by_distance =收集(grpstats(tt,'潜水',{'意思'“性病”},“DataVar”'距离'))
使用本地MATLAB会话评估高表达: - 通过1的1:1:在1.4秒评估中完成的1.8秒
late_by_distance =2×5表Grouplabel Lapeflight Groupcount Meancount __Distance STD_Distance __________ ________________________________________________________________________4 574.12

晚期航班平均约60英里,虽然该值仅占距离值的一小部分标准偏差。

逻辑回归模型

建立一个延迟飞行概率的模型,使用连续变量(例如距离)和分类变量(例如Dayofweek.)预测概率。此模型可以帮助确定每个预测器观察到的先前结果是否在将它们一起考虑时,每个预测器也可以保持真实。

glm = fitglm(tt,'潜水〜距离+ 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.3秒评估中完成0.49秒
X.Distance = Linspace(0,3000)';x.dayofweek(:) ='太阳';情节(x.Distance预测(glm x));天= {'太阳'“我的”'tues''星期三''星期四'“星期五”“坐”};抓住为了j=2:length(days) x.DayOfWeek(:) = days{j};情节(x.Distance预测(glm x));结尾传奇(天)

图中包含一个坐标轴。轴线包含7个线型对象。这些物体代表太阳,星期一,星期二,星期三,星期四,星期五,星期六。

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

由于这些概率远远小于50%,因此该模型不太可能预测任何给定的飞行将迟到使用这些信息。更多地通过专注于模型预测到迟到的概率为20%或更多的航班,并将其与实际结果进行比较。

C =聚集(Crosstab(Tt.LateFlight,预测(GLM,TT)>。20))
using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.2 sec
C =2×299613 4391 18394 1125

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