对泰坦尼克号沉没事件幸存者数据分析和预测
一、分析目的
探究决定泰坦尼克号沉没事件中什么因素决定着船上人的生死,并对实例进行判别和预测。
二、数据介绍
Titanic.csv数据中包含了891个样本,记录了泰坦尼克号遇难时的891个乘客的基本信息,其中包括以下信息:
PassengerId: 乘客编号
Survived: 生还情况,生还为1,死亡为0
Pclass: 舱位,分为1,2,3等,1为最高的,3为最低等
Name: 姓名
Sex: 性别
Age: 年龄
SibSp: 同船的兄弟姐妹或配偶
Parch: 同船的父母或子女
Ticket: 船票信息
Fare: 乘客票价
Cabin: 客舱编号
Embarked: 登船地点,C,S,Q分别代表三个不同的地点
数据集:
链接: https://pan.baidu.com/s/1YpT8Pjg35fe_0lrpl7wClw 提取码: 9uq2
http://通过网盘分享的文件:泰坦尼克号 链接: https://pan.baidu.com/s/1YpT8Pjg35fe_0lrpl7wClw 提取码: 9uq2
三、实现与结果解读
1.数据处理
先导入数据,对其进行缺失值情况的查看:
d1<-read.csv('D:/R Course/data/Titanic.csv')d1str(d1)install.packages(c('VIM','mice'))library('VIM')library('mice')map<-matrixplot(d1)map
运行结果:

颜色代表变量值大小,浅色值小,深色值大,而红色代表缺失值,由此发现年龄缺失值较多,在进行数据分析前需要先进行数据缺失值处理,这里我们直接将缺失数据的行剔除,得到新的数据集进行接下来的分析。
d2<-na.omit(d1) #数据处理d2
接下来采用两种方法实现对上述处理过的数据集的分析和预测。
2. 多元逻辑回归分析
先对数据进行全变量逻辑回归分析:
多元逻辑回归logit.glm<-glm(factor(Survived)~factor(Pclass)+factor(Sex)+Age,family=binomial,data=d2)summary(logit.glm)

可以看出,船舱等级(Pclass)、性别(Sex)、年龄(Age)、同船的兄弟姐妹或配偶(SibSp)四个因素对生还情况的影响较为显著。选取这四个特征进行分析绘图,观察生还情况和这四个因素的具体关系。
(1)舱位等级因素:
#船舱等级——存活图Pclass_S<-table(d2$Survived,d2$Pclass)Pclass_SPclass_S_prop<-prop.table(Pclass_S,2)Pclass_S_propggplot(data=d2,aes(x=Pclass,fill=factor(Survived)))+geom_bar(stat = 'count',position = 'dodge')+scale_x_continuous(breaks=(1:3))+labs(x='Pclass')
运行结果:


在三个不同等级的船舱中,3等船舱的人数最多,并且可以明显看出随着船舱等级升高,乘客的生还率上升,推断船舱等级越高,救生措施可能完善,且乘客地位高,分配到的救生资源多,乘客生还的可能性越大。
(2)性别因素:
#性别——存活图Sex_S <- table(d2$Survived, d2$Sex)Sex_SSex_S_prop <- prop.table(Sex_S, 2)Sex_S_propggplot(data = d2, aes(x = Sex, fill = factor(Survived)))+geom_bar(stat='count', position='dodge')
运行结果:



进入现代社会后,女士优先已经不再是男士们表现绅士的行为,而是已经成为了一种类似于道德标准的社会行为准则,在百年前的泰坦尼克号上是否也一样呢?从以上数据可看出,女性生还率要大于男性,推断可能是男士们把更多的生存机会给了女性,也可能是与救援时女性优先的原则有关,且查阅资料可知,女性在寒冷环境中体温下降较慢,当时多数人从船上跳入海中逃生,在海水低温条件下,女性在保存体温生存下去等待救援方面有天然优势,以上生还结果与此也应有关联。
(3)年龄因素:
#年龄——存活图Agedata <- as.numeric(unlist(d2$Age))Age_S <- table(d2$Survived, cut(Agedata, breaks = c(0, 15, 30, 45, 60, 75, 90),labels = c('kids', 'teenagers', 'prime', 'middle', 'agedness', 'senium' )))Age_SAge_S_prop <- prop.table(Age_S, 2)Age_S_propggplot(data = data.frame(d2$Survived, Agedata), aes(x = cut(Agedata, breaks = c(0, 15, 30, 45, 60, 75, 90)),fill = factor(d2.Survived)))+geom_bar(stat='count', position='dodge') +labs(x = 'Age') + scale_x_discrete(labels = c('kids', 'teenagers', 'prime', 'middle', 'agedness', 'senium'))
运行结果:


可见儿童生还率较高,与救援时妇幼优先原则应该有关,且在危难关头,父母为了保全孩子,可能会让出紧缺的救援名额,因此儿童生还率较其他年龄段高出不少。
(4)同船的兄弟姐妹或配偶数因素
#家庭人数——存活图Fsize<-data$SibSp +data$Parch#家庭人数=兄弟姐妹或配偶+父母儿女ggplot(data, aes(x = Fsize, fill = factor(Survived))) +geom_bar(stat='count', position='dodge')+ #stat='count'表示统计出现次数,position='dodge'表示柱状图分开摆放scale_x_continuous(breaks=c(1:11)) +#坐标轴刻度labs(x = '家庭人数',y='数量')
运行结果:

可见大致情况为配偶数量越少,生还率越高,但不绝对影响,推测遇难时同行人数多并不会增大生还的可能。
3. 判别分析:
(1)Fisher判别法
#Fisher判别法library(MASS)ld=lda(Survived~Sex+Pclass+SibSp+Parch);ldlp=predict(ld)Survived1=lp$classtab1=table(Survived,Survived1);tab1sum(diag(prop.table(tab1)))

对于Fisher判别法的结果图,乘客遇难的先验概率为0.616,生还的先验概率为0.384,这证明在此次事故中遇难人数是生还人数的两倍;观察判别矩阵可以看出,遇难的有472人被判对,生还的有233人被判对,判对率为0.787,概率较高。
(2)距离判别法
#距离判别法qd=qda(Survived~Sex+Pclass+SibSp+Parch);ldqp=predict(qd)Survived2=qp$classtab2=table(Survived,Survived2);tab2sum(diag(prop.table(tab2)))

对于距离判别法的结果图,乘客遇难的先验概率为0.616,生还的先验概率为0.384,观察判别矩阵可以看出,遇难的有473人被判对,生还的有231人被判对,判对率为0.79,概率较高。
因为距离判别法的判对率略大于Fisher判别法,因此对新样本预测时采用距离判别法。
(3)对新样本进行预测
#预测predict(qd,data.frame(Pclass=1,sex='female',Sibsp=0,Parch=0))

输入新样本对其是否可以生还进行判断,通过结果可以看出生还的概率为0.996,因此判别结果为“生还”。
相关文章:
对泰坦尼克号沉没事件幸存者数据分析和预测
一、分析目的 探究决定泰坦尼克号沉没事件中什么因素决定着船上人的生死,并对实例进行判别和预测。 二、数据介绍 Titanic.csv数据中包含了891个样本,记录了泰坦尼克号遇难时的891个乘客的基本信息,其中包括以下信息: Passenger…...
算法之排序算法
排序算法 ♥常见排序算法知识体系详解♥ | Java 全栈知识体系 算法 - 排序 | CS-Notes 面试笔记 十大经典排序算法总结 | JavaGuide...
DMA发送全部历史记录数据到串口
背景 博主参与的项目中,有个读取全部历史记录的功能,如果下位机在主程序中将全部历史记录单纯地通过串口传输会比较占用cpu资源,影响主程序中别的功能。最后商量得出以下实现方案: 定义两个发送缓冲区DMATxbuf1和DMATxbuf2&…...
蓝桥杯好题推荐-----高精度减法
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 题目链接 记录详情 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/record/205122671 思路讲解 这个题目的解题思路,其实是和高精度加法是非常像的。怎么说…...
SpringMVC (3)
目录 1. 传递对象 2. 后端参数重命名(后端参数映射) 3. 传递数组 4. 传递集合 5. 传递JSON数据 5.1 JSON概念 5.2 JSON语法 5.3 JSON字符串和Java对象互转 5.4 JSON优点 5.5 传递JSON对象 6. 获取URL中参数PathVariable 7. 上传文件RequestP…...
vscode使用豆包MARSCode----集成doubao1.5 DeepSeekR1 DeepseekV3模型的ai编程插件
引入扩展 打开VSCode扩展窗口,在搜索窗口搜索MarsCode,找到MarsCode 插件单击「install」,完成安装,登录即可使用MarsCode 编程助手。 主要功能 主要快捷键 / explain 解释项目代码,AI 返回的内容有结构分类&#…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_buf_t
ngx_buf_t 定义在 src/core/ngx_buf.h typedef struct ngx_buf_s ngx_buf_t;struct ngx_buf_s {u_char *pos;u_char *last;off_t file_pos;off_t file_last;u_char *start; /* start of buffer */u_char …...
分布式开源协调服务之zookeeper
Zookeeper简介 Zookeeper是什么? Zookeeper官网中对Zookeeper的定义还是比较明确的: ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services…...
ubuntu系统安装playhouse三方库
ubuntu系统python3.10安装playhouse三方库 问题描述 问题描述 虚拟环境中使用pip install playhouse,返回安装成功 用pip list查看,能看到playhouse及版本号 导包时提示没有找到playhouse我那件目录,能发现 检查site-package发现问题&#x…...
【星云 Orbit-F4 开发板】04.一触即发:GPIO 外部中断
【星云 Orbit-F4 开发板】04. 一触即发:外部中断控制 摘要 本文详细介绍了如何使用STM32F407微控制器的HAL库实现外部中断功能。通过配置GPIO引脚作为外部中断源,并在中断回调函数中处理按键事件,实现了按键控制LED状态翻转的功能。本文旨在…...
笔记二:整数和浮点数在内存中存储
目录 一、数据类型介绍 二、类型的基本归类 1.整形家族: 2.浮点数家族: 3.构造类型: 4.指针类型 5.空类型: 三、整形在内存中的存储 3.1 原码,反码、补码 3.2 大小端介绍 四、浮点数在内存中的存储 编辑 4.…...
PyQT(PySide)的上下文菜单策略设置setContextMenuPolicy()
在 Qt 中,QWidget 类提供了几种不同的上下文菜单策略,这些策略通过 Qt::ContextMenuPolicy 枚举类型来定义,用于控制控件(如按钮、文本框等)在用户右键点击时如何显示上下文菜单。 以下是 Qt::ContextMenuPolicy 枚举中…...
BladeX框架接口请求跨域
前端使用代理请求接口,接口可以正常访问。如果换全路径请求就跨域。 除了后端要配置跨域 还需要修改配置文件对OPTIONS请求的限制...
如何在Apple不再支持的MacOS上安装Homebrew
手头有一台2012年产的Macbook Pro,系统版本停留在了10.15.7(2020年9月24日发布的)。MacOS 11及后续的版本都无法安装到这台老旧的电脑上。想通过pkg安装Homebrew,发现Homebrew releases里最新的pkg安装包不支持MacOS 10.15.7&…...
本地大模型编程实战(26)用langgraph实现基于SQL数据构建的问答系统(5)
本文将将扩展上一篇文章完成的 langgraph 链,继续使用基于 langgraph 链 ,对结构化数据库 SQlite 进行查询的方法。该系统建立以后,我们不需要掌握专业的 SQL 技能,可以用自然语言询问有关数据库中数据的问题并返回答案。主要完善…...
数据结构与算法:滑动窗口
前言 滑动窗口一般主要用于解决子数组或子串问题,这类的题目更看重对题目的分析和转化。 一、原理 在整个数组上,用l和r分别控制窗口的左右边界,r就扩大,l就减小。 当窗口的范围和题目中某个指标间存在单调关系时,…...
江协科技/江科大-51单片机入门教程——P[2-1] 点亮一个LED
本节将向大家介绍如何用 51 单片机去控制开发板上的 LED。开发板上的 LED 位置标注有 “LED 模块”。 第二章要写 3 个程序代码:第一个代码实现点亮开发板上的第一个 LED;第二个代码让第一个 LED 以 1 秒为周期闪烁;第三个代码使 8 个 LED 以…...
leetcode hot 100 41. 缺失的第一个正数
代码 测试用例 测试用例 测试结果 41. 缺失的第一个正数 已解答 困难 相关标签 相关企业 提示 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1…...
UniApp 使用 u-loadmore 完整步骤
文章目录 一、前期准备1. 安装 uView - UI 二、使用 u-loadmore组件1. 创建页面2. 编写页面代码模板部分(loadmore-demo.vue)样式部分脚本部分 三、要点补充1. u-loadmore 状态说明2. 数据请求优化3. 性能优化4. 兼容性问题 在 UniApp 开发中,…...
设置电脑一接通电源就主动开机
文章目录 1、进入BIOS2、设置4、功能弊端5、电脑自动开机的设置 1、进入BIOS 在电脑重启时,这时屏幕上会显示按XXX键到BIOS界面 没有进入BIOS提示的,按下面方法操作: 方法一 在开机显示logo的时候,立即按下面这几个按键…...
HY-MT1.5-1.8B快速上手:3步搭建你的专属翻译服务
HY-MT1.5-1.8B快速上手:3步搭建你的专属翻译服务 1. 准备工作:了解你的翻译助手 1.1 模型简介 HY-MT1.5-1.8B是一款轻量级但功能强大的翻译模型,专门为需要快速部署和高效运行的场景设计。这个模型虽然只有18亿参数,但在翻译质…...
以考促学、以练固基:一体化在线考试学习平台设计与实践
在数字化培训与考核普及的背景下,考试、学习、练习一体化已成为企事业单位、教育、政府、金融、电力等行业提升培训效率、规范考核流程的核心需求。传统模式下学习、练习、考试相互割裂,存在组织成本高、监管难度大、数据不互通、效果难追踪等问题&#…...
Qwen3-14B系统优化指南:解决C盘空间清理与系统性能问题
Qwen3-14B系统优化指南:解决C盘空间清理与系统性能问题 1. 引言:Windows用户的共同烦恼 "您的C盘空间不足"——这个弹窗可能是Windows用户最不愿看到的提示之一。随着使用时间增长,系统盘空间被各种临时文件、日志和冗余程序蚕食…...
django基于深度学习的音乐推荐系统_7182nd2n_zl035
前言随着数字音乐时代的到来,人们可以轻松访问数百万首歌曲。然而,如何在海量音乐中找到自己喜欢的音乐成为了一个挑战。基于Django框架和深度学习的音乐推荐系统正是为了解决这一问题而诞生。该系统通过深度学习技术分析用户的历史行为和偏好࿰…...
OpenClaw配置备份:Qwen3-14b_int4_awq环境迁移与恢复指南
OpenClaw配置备份:Qwen3-14b_int4_awq环境迁移与恢复指南 1. 为什么需要备份OpenClaw配置 上周我经历了一次痛苦的教训——因为系统重装,丢失了精心调校的OpenClaw配置。那些花了几周时间调试的模型参数、飞书机器人集成设置、自定义技能模块全部归零。…...
Braft Editor图片处理优化:拖拽调整大小与等比例缩放的终极指南
Braft Editor图片处理优化:拖拽调整大小与等比例缩放的终极指南 【免费下载链接】braft-editor 美观易用的React富文本编辑器,基于draft-js开发 项目地址: https://gitcode.com/gh_mirrors/br/braft-editor Braft Editor是一款基于React和Draft.j…...
告别环境冲突!VSCode里用IDF插件轻松管理多个ESP-IDF版本(5.3/4.4自由切换)
多版本ESP-IDF项目管理实战:VSCode高效工作流全解析 当你的工作台同时躺着基于ESP-IDF 5.3的智能家居网关和基于4.4版本的工业传感器项目时,每次切换都需要重新配置环境参数吗?作为经历过这种折磨的开发者,我想分享一套经过实战检…...
AI时代新型的项目管理应该是什么样的?商
AI训练存储选型的演进路线 第一阶段:单机直连时代 早期的深度学习数据集较小,模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低,吞吐量极高,也就是“数据离…...
VS Code开发STM32:高效嵌入式开发环境搭建指南
1. 为什么选择VS Code开发STM32? 作为一名嵌入式开发工程师,我最初接触STM32开发时使用的也是Keil MDK。但随着项目复杂度提升,Keil的局限性逐渐显现:收费高昂(虽然可以找到特殊版本)、代码补全功能弱、界…...
Aurix Tricore开发避坑指南:从零理解Trap机制,手把手教你写异常处理程序
Aurix Tricore开发实战:Trap机制深度解析与异常处理程序编写指南 引言 在嵌入式系统开发中,异常处理往往是区分新手与资深工程师的关键能力。Aurix Tricore系列微控制器凭借其强大的实时性能和安全性,广泛应用于汽车电子、工业控制等领域。然…...
