主要内容

高数组Logistic回归

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

定义执行环境

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

Mapreducer(0)

将数据导入MATLAB

创建一个数据存储区,将文件夹位置与数据引用。数据可以包含在单个文件中,文件集合或整个文件夹中。对待“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
抓住传奇('晚了'“准时”

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

飞行距离对航班的早或晚并没有太大的影响。然而,距离约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));结束传奇(天)

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

根据这个模型,周三或周四飞行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)