《泰坦尼克号数据集的深度分析:基于R语言的视角》
一、引言
泰坦尼克号的沉没是历史上最著名的海难之一,关于泰坦尼克号乘客的数据集包含了众多信息,如乘客的年龄、性别、舱位等级、是否幸存等,通过对这个数据集使用R语言进行分析,我们可以揭示出许多隐藏在数据背后的故事,这些故事不仅有助于我们更好地理解这场灾难,还能展示数据分析在实际历史事件研究中的应用价值。
图片来源于网络,如有侵权联系删除
二、数据获取与初步探索
1、数据获取
- 我们可以从公开的数据仓库(如Kaggle)获取泰坦尼克号数据集,数据集以CSV格式提供,包含多个变量列和行记录,每一行代表一位乘客的相关信息。
2、数据导入
- 在R语言中,使用read.csv()
函数可以轻松地将CSV格式的泰坦尼克号数据集导入到R的工作环境中。
```R
titanic_data <- read.csv("titanic.csv")
```
3、初步查看数据
- 使用head()
函数查看数据集的前几行,了解数据的结构和变量名称。
```R
head(titanic_data)
```
- 使用str()
函数查看每个变量的数据类型,这有助于我们发现数据中的潜在问题,如字符型变量应该是数值型变量等情况。
```R
str(titanic_data)
```
三、数据清洗
1、处理缺失值
- 在泰坦尼克号数据集中,可能存在很多缺失值。“Age”(年龄)列可能有部分乘客的年龄信息缺失,我们可以使用多种方法处理缺失值。
- 对于数值型变量“Age”,一种简单的方法是使用均值填充,首先计算年龄的均值:
```R
mean_age <- mean(titanic_data$Age, na.rm = TRUE)
```
然后将缺失值替换为均值:
```R
titanic_data$Age[is.na(titanic_data$Age)] <- mean_age
```
- 对于分类变量,如“Embarked”(登船港口),如果有缺失值,可以考虑使用出现频率最高的类别进行填充。
```R
most_common_embarked <- names(which.max(table(titanic_data$Embarked)))
titanic_data$Embarked[is.na(titanic_data$Embarked)] <- most_common_embarked
```
2、数据转换
图片来源于网络,如有侵权联系删除
- 某些变量可能需要进行转换以便于分析。“Sex”(性别)变量是字符型,我们可以将其转换为因子型变量:
```R
titanic_data$Sex <- as.factor(titanic_data$Sex)
```
- 对于“Pclass”(舱位等级)变量,也可以转换为因子型并设置合适的标签,以便更好地理解和分析不同舱位等级乘客的情况。
```R
titanic_data$Pclass <- factor(titanic_data$Pclass, labels = c("First", "Second", "Third"))
```
四、数据分析
1、生存情况与性别关系
- 我们可以使用table()
函数来统计不同性别乘客的生存情况:
```R
sex_survival_table <- table(titanic_data$Sex, titanic_data$Survived)
sex_survival_table
```
- 为了更直观地展示这种关系,可以绘制柱状图,使用barplot()
函数:
```R
barplot(sex_survival_table, beside = TRUE, legend.text = TRUE)
```
- 从结果和图中可以明显看出,女性乘客的幸存比例远高于男性乘客,这反映了当时在灾难发生时“妇女儿童优先”的救援原则。
2、生存情况与舱位等级关系
- 同样,构建舱位等级与生存情况的表格:
```R
pclass_survival_table <- table(titanic_data$Pclass, titanic_data$Survived)
pclass_survival_table
```
- 绘制堆积柱状图来展示这种关系:
```R
barplot(pclass_survival_table, beside = FALSE, legend.text = TRUE)
```
- 结果显示,头等舱乘客的幸存比例相对较高,三等舱乘客的幸存比例最低,这可能与头等舱乘客更容易接近救生设备和救援资源有关。
3、年龄与生存情况关系
- 为了分析年龄与生存情况的关系,我们可以先将年龄进行分组,分为儿童(0 - 12岁)、青少年(13 - 19岁)、成年人(20 - 60岁)和老年人(60岁以上)。
```R
图片来源于网络,如有侵权联系删除
titanic_data$AgeGroup <- cut(titanic_data$Age, breaks = c(0, 12, 19, 60, Inf), labels = c("Child", "Teenager", "Adult", "Elderly"))
agegroup_survival_table <- table(titanic_data$AgeGroup, titanic_data$Survived)
agegroup_survival_table
```
- 绘制马赛克图来展示这种关系:
```R
library(vcd)
mosaic(agegroup_survival_table)
```
- 从图中可以看出,儿童的幸存比例相对较高,这也符合当时的救援情况。
五、模型构建与预测
1、逻辑回归模型
- 我们可以构建一个逻辑回归模型来预测乘客的生存情况,选择性别、舱位等级和年龄等变量作为预测变量。
```R
model <- glm(Survived ~ Sex + Pclass+ Age, data = titanic_data, family = binomial)
summary(model)
```
- 从模型的摘要中,我们可以看到每个变量的系数、标准误、z值和p值等信息,性别变量的系数表明女性乘客比男性乘客更有可能幸存。
2、模型评估
- 使用混淆矩阵来评估模型的准确性,使用模型对数据集进行预测:
```R
predicted <- ifelse(predict(model, type = "response")>0.5, 1, 0)
confusion_matrix <- table(predicted, titanic_data$Survived)
confusion_matrix
```
- 计算准确率:
```R
accuracy <- sum(diag(confusion_matrix))/sum(confusion_matrix)
accuracy
```
六、结论
通过对泰坦尼克号数据集使用R语言进行全面的分析,我们深入了解了这场灾难中乘客的生存情况与各种因素(如性别、舱位等级、年龄等)之间的关系,数据清洗是数据分析的重要步骤,确保了数据的质量,通过构建逻辑回归模型并进行评估,我们可以看到这些因素对生存情况有着显著的影响,这种分析不仅有助于我们回顾历史事件,还为在类似的灾难场景下的救援策略和资源分配提供了参考,也展示了R语言在数据分析中的强大功能,从数据处理、可视化到模型构建等方面都能提供有效的解决方案。
评论列表