主要内容

高数组逻辑回归

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

定义执行环境

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

mapreduce (0)

获取数据到MATLAB

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

数据存储(“airlinesmall.csv”);ds。TreatAsMissing =“NA”;ds。SelectedVariableNames = {“DayOfWeek”“UniqueCarrier”...“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 LateFlight DepDelay距离  _________ _____________ ________ ________ ________ __________ ?????????? ? ? ? ? ? ? ? ? : : : : : : : : : : : :

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

m = mean(tt.LateFlight)
M =高双份?
M =集合(M)
使用本地MATLAB会话评估tall表达式:-通过2中的第1步:在0.49秒内完成-通过2中的第2步:在0.56秒内完成评估在1.4秒内完成
M = 0.1580

航空公司延误航班

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

tt。LateFlight = double(tt.LateFlight);Late_by_carrier = gather(grpstats(tt,“UniqueCarrier”“的意思是”“DataVar”“LateFlight”))
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在1.3秒内完成评估,在1.6秒内完成
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.23821 0.16014 {B6的}B6 806{‘公司’}公司8138 0.16319{“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{‘哈’}公顷273 0.047619{“惠普”}惠普3660 0.13907{毫升(1)的}69毫升(1)0.043478 {MQ的}MQ⋮3962 0.18778

航空公司B6而且电动汽车有更高比例的晚点航班。航空公司AQ毫升(1),航班相对较少,但晚点的比例较低。

按星期划分的晚点航班

接下来,看看一周中不同的日子是否会有更晚的航班。

Late_by_day = gather(grpstats(tt,“DayOfWeek”“的意思是”“DataVar”“LateFlight”))
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在0.65秒内完成评估,在0.76秒内完成
late_by_day =7×4表GroupLabel DayOfWeek GroupCount mean_LateFlight __________ _________ __________ _______________ {'Fri'} Fri 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))
使用本地MATLAB会话评估tall表达式:-通过2中的第1步:在0.46秒内完成-通过2中的第2步:在0.46秒内完成评估在1.1秒内完成
持有ksdensity (tt.Distance (tt.LateFlight = = 0))
使用本地MATLAB会话评估tall表达式:-通过2中的第1步:在0.36秒内完成-通过2中的第2步:在0.47秒内完成评估在1秒内完成
持有传奇(“晚了”“准时”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些物体代表迟到、准时。

飞行距离对航班是早还是晚没有太大影响。然而,在大约400英里的距离上,准点飞行的密度似乎略高。在大约2000英里的距离上,晚航航班的密度也更高。计算一些关于晚点和准时航班的简单描述性统计数据。

Late_by_distance = gather(grpstats(tt,“LateFlight”, {“的意思是”“性病”},“DataVar”“距离”))
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在0.59秒内完成评估,在0.76秒内完成
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英里,尽管这个值只占距离值标准差的一小部分。

Logistic回归模型

使用两个连续变量(如距离)和分类变量(例如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 __________ __________ _______ __________ (Intercept) -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.2452e-17 DayOfWeek_Thu 0.23569 0.028282 8.3338 7.8286e-17 dayofweek_friday -0.19285 0.031583 -6.106 1.0213e-09 DayOfWeek_Sat 0.033542 0.029702 1.1293 0.25879 Distance 0.00018373 1.3507e-05 13.602 3.8741e-42 123319 observations,离散度:1 Chi^2统计量vs.常数模型:504,p值= 8.74e-105

该模型证实了之前观察到的结论在这里也成立:

  • 周三和周四的系数为正,表明这两天航班晚点的可能性较大。周五系数为负,表明概率较低。

  • 距离系数为正,说明飞行时间越长,迟到的概率越高。

所有这些系数的p值都很小。这在有许多观测数据集的数据集中很常见,因为人们可以可靠地估计大量数据的小影响。事实上,模型中的不确定性大于模型中参数估计的不确定性。

模型预测

预测一周中每一天航班晚点的概率,距离范围从0到3000英里。创建一个表,通过索引原始表中的前100行来保存预测器值tt

X = gather(tt(1:100,{“距离”“DayOfWeek”}));
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在0.14秒内完成评估,在0.24秒内完成
x.Distance = linspace(0,3000)';x.DayOfWeek: =“太阳”;情节(x.Distance预测(glm x));天数= {“太阳”“我的”“面前”“结婚”“星期四”“星期五”“坐”};持有x.DayOfWeek(:) = days{j};情节(x.Distance预测(glm x));结束传奇(天)

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

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

由于这些概率都远小于50%,因此模型不太可能使用这些信息预测任何给定航班的误点。通过关注模型预测航班晚点概率为20%或更高的航班,进一步研究模型,并将其与实际结果进行比较。

C = gather(cross stab(tt. lateflight,predict(glm,tt)>.20))
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在0.49秒内完成评估,在0.55秒内完成
C =2×299613 4391 18394 1125

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