前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >品玩SAS:泰坦尼克号之灾(上)——逃生率分析

品玩SAS:泰坦尼克号之灾(上)——逃生率分析

作者头像
机器思维研究院
发布2019-09-11 15:22:30
1.3K1
发布2019-09-11 15:22:30
举报
文章被收录于专栏:AI机器思维

作者:刘璐

出品:AI机器思维

最近重温了一遍泰坦尼克号,又一次为杰克和露丝甜美的爱情感动,两人坦诚真挚的相爱让人神往,一阵幻想过后咬了口嘴边的柠檬,真酸...

从泰坦尼克号撞上冰山,到最终完全沉没的两个半小时里,随着事态的不断恶化,人们求生的态度从有序,到混乱,直到最后绝望蔓延,所有安宁时的伪装被狠狠撕碎,人性的善与恶在此刻被急剧放大,一览无余。而船长“让女士和孩子先上船”的号召则让绝境下的撤离生出一丝温暖,是爱与责任让你我相伴,也愿这份爱护你余生周全。

跳出整个事件的情感漩涡,单就撤离这件事来看,船长的命令起没起作用?或者起了多大作用?真正逃生的又是哪些人?今天我们就一起来探讨下泰坦尼克号的逃生率问题,该问题主要分为两部分,一是分析影响逃生率的因素有哪些,二是在这种因素影响下,预测另一群人逃生的概率。

本期“品玩SAS”主要分析影响逃生率的各项因素,探索发现哪些人更有可能逃生。

1 事件介绍

泰坦尼克号由白星航运公司于1909年开始建造,1912年全部建造完成,是当时世界上最大,最豪华的轮船,被世人称为“永不沉没”的轮船。泰坦尼克号最大载员3,547人,救生艇最大载员1500人。1912年4月10日,泰坦尼克号载着2224名船员及乘客从英国南安普敦出发,开始了她的第一次也是最后一次航行。1912年4月14日23:40分左右,泰坦尼克号撞上一座冰山,导致右舷船艏至船中部破裂,五间水密舱进水,轮船开始沉没,最终2224人中1517人丧生,仅有705人登上救生艇获救。

2 理解数据

2.1 数据来源

本文数据取自KAGGLE泰坦尼克号生存预测比赛:https://www.kaggle.com/c/titanic/overview,其中包括训练集和测试集,训练集中包括乘客获救状态和基本信息,测试集仅包括乘客基本信息,需根据训练集信息建立模型,对测试集乘客进行生存预测。

2.2 查看数据

2.2.1 导入数据

首先把数据导入SAS,看一看数据长什么样。

*导入数据;

proc import out=train

datafile='D:\sastest\liulu\titanic\train.csv'

dbms=csv replace;

getnames=yes;

run;

proc print data=train;

run;

proc contents data=train;

run;

训练集总计891条数据,12个变量,即891名乘客的12种基本信息,其中PassengerId、Survived、Pclass、Age、SibSp、Parch、Fare为数值型, Name、Sex、Ticket Cabin、Embarked为字符型。

2.2.2 字段解释

PassengerId:乘客ID

Survived : 生存状态,0为死亡,1为幸存

Pclass:乘客等级(1/2/3等舱位)

Name:乘客姓名

Sex:性别

Age:年龄

SibSp:兄弟姐妹个数

Parch:父母孩子个数

Ticket:船票号码

Fare:票价

Cabin:客舱

Embarked:登船港口

代码语言:javascript
复制

对数值型变量进行描述性统计。

代码语言:javascript
复制

*查看描述性统计;

proc means data=train mean median mode min max;

run;

从上图可以看出,891名乘客中仅有38.38384%的人最后获救了,2等舱3等舱的乘客比1等舱的要多,乘客的平均年龄大概为29.7岁,登上泰坦尼克号的平均票价为32.2英镑,而大多数乘客的票价则在8英镑左右,说明票价高低差距悬殊,使得平均值被显著拉大,无法真实显示票价情况。

3 数据分析

3.1 总体情况

代码语言:javascript
复制

*查看生存状态、性别、乘客等级、登场港口、年龄分布情况;

proc sql;

select survived,count(*) from train

group by survived;

quit;

proc sql;

select sex,count(*) fromtrain

group by sex;

quit;

proc sql;

select Pclass,count(*) from train

group by Pclass;

quit;

proc sql;

select Embarked,count(*) from train

group by Embarked;

quit;

代码语言:javascript
复制

proc sql;

create table agee as

select age,count(*)

from train

where age is not null

group by age;

quit;

我们从上图可以看出,获救的人数占比38%,不到半数;在全体乘客中男性居多,占到65%;乘客等级中,3等舱乘客占比超过一半,其次为1等舱乘客;登船港口人数按照S、C、Q递减,而且S远多于另外俩港口,其次另有两名乘客没有登船港口信息;年龄上集中在16至40岁之间的青壮年,儿童与老人较少。

代码语言:javascript
复制

3.2 性别与幸存率的关系

代码语言:javascript
复制
代码语言:javascript
复制
*性别与幸存率;

proc sql;

select sex,count(case when survived=0 then passengerid end) as死亡,

count(case when survived=1 then passengerid end) as生存,

catt(round(count(case when survived=1 then passengerid end)/(count(case when survived=0 then passengerid end)+count(case when survived=1then passengerid end))*100,0.1),'%') as 存活率

from train

group by sex;

quit;

在泰坦尼克号电影里,船长曾呼吁“让女士与小孩先走”,到底遵循情况如何呢?上图给了我们一半答案,女性的存活人数显著高于死亡人数,且74.2%的存活率远高于男性的18.9%,看来歪果朋友们绅士的执行了这一规则。

代码语言:javascript
复制

3.3 船舱等级与幸存率的关系

代码语言:javascript
复制

*船舱等级与幸存率;

proc sql;

select Pclass,count(case when survived=0 then passengerid end) as死亡,

count(case when survived=1 then passengerid end) as生存,

catt(round(count(case when survived=1then passengerid end)/(count(case when survived=0then passengerid end)+count(case when survived=1then passengerid end))*100,0.1),'%') as存活率

from train

group by Pclass;

quit;

从船舱等级上来看,1等舱生存人数大幅高于死亡人数,乘客幸存率为63%,3等舱与1等舱恰好相反,死亡人数是生存人数的3倍,幸存率仅为24.2%,推测高社会地位获得优先选择权。

3.4 年龄与幸存率的关系

代码语言:javascript
复制

*年龄与幸存率;

proc sql;

select age,survived,count(*) from

(select case whenAge <= 1 then '婴儿'

when Age <= 18 then '青少年'

when Age <= 30 then '青年'

when Age <= 60 then '中年'

else'老年'endas Age,survived

from train

where Age >0) As a

group by age,survived;

quit;

代码语言:javascript
复制
代码语言:javascript
复制

我们将小于1岁的定义为婴儿,1-18岁的为青少年,19-30岁的为青年,31-60岁的为中年,60+的为老年,从上图来看,青少年和婴儿的幸存率最高,其次为中年和青年,幸存率最低的为老年。

3.5 票价与幸存率的关系

代码语言:javascript
复制

*票价与幸存率;

proc sql;

select fare,

count(case when survived=0 then passengerid end) as死亡,

count(case when survived=1 then passengerid end) as生存,

catt(round(count(case whensurvived=1 then passengerid end)/(count(case when survived=0 then passengerid end)+count(case when survived=1 then passengerid end))*100,0.1),'%') as 存活率

from

(select case when fare<100 then floor(fare/10)*10

else 100 end as fare,survived,passengerid

from train) a

group by fare;

quit;

票价与幸存率之间基本符合票价越高幸存率越高的趋势,票价和乘客等级吻合。

3.6 登船港口与幸存率的关系

代码语言:javascript
复制

*登船港口与幸存率;

proc sql;

select Embarked,count(case when survived=0 then passengerid end) as死亡,

count(case when survived=1 then passengerid end) as生存,

catt(round(count(case when survived=1 then passengerid end)/(count(case when survived=0 then passengerid end)+count(case when survived=1 then passengerid end))*100,0.1),'%') as 存活率

from train

group by Embarked;

quit;

从登船港口来看,登船人数最多的S港幸存率最低,Q港登船人数最少,幸存率也仅有369%,而C港的乘客有超过一半获救,幸存率最高。

3.7 兄弟姐妹数与幸存率的关系

代码语言:javascript
复制

*兄弟姐妹数与幸存率;

proc sql;

select SibSp,count(case when survived=0 then passengerid end) as 死亡,

count(case when survived=1 then passengerid end) as 生存,

catt(round(count(case whensurvived=1 then passengerid end)/(count(case when survived=0 then passengerid end)+count(case when survived=1then passengerid end))*100,0.1),'%') as 存活率

from train

group by SibSp;

quit;

代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制

兄弟姐妹数为0、1、2的乘客,幸存率较高;其中为1或2的乘客,幸存率在50%左右;数值大于等于3的乘客,幸存率很低。

代码语言:javascript
复制

3.7 父母孩子数与幸存率的关系

代码语言:javascript
复制

*父母孩子数与幸存率;

proc sql;

select Parch,count(case when survived=0 then passengerid end) as 死亡,

count(case when survived=1 then passengerid end) as 生存,

catt(round(count(case when survived=1 then passengerid end)/(count(case when survived=0 then passengerid end)+count(case when survived=1 then passengerid end))*100,0.1),'%') as 存活率

from train

group by Parch;

quit;

父母孩子数为1到3的乘客,幸存率高于50%;父母孩子数为0的乘客幸存率次之,大于等于4的乘客,幸存率非常低。

代码语言:javascript
复制

4 总结

代码语言:javascript
复制

通过对乘客各个基本信息的分析,以往对于幸存率感觉上的认知得到了验证,总结以上的分析,结论如下:

代码语言:javascript
复制
1)女性幸存率远高于男性
代码语言:javascript
复制
2)乘客(船舱)等级越高,幸存率越高
代码语言:javascript
复制
3)婴儿和青少年幸存率高于成年人
代码语言:javascript
复制
4)票价越高幸存率越高

5)S港登船乘客最多,但乘客幸存率最低,C港过半乘客获救

6)综合来看,家人亲友数为3及以下的乘客幸存率较高

代码语言:javascript
复制
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器思维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档