R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况

简介: R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况

逻辑回归是一种拟合回归曲线的方法,y=f(x),当y是一个分类变量时。这个模型的典型用途是在给定一组预测因素x的情况下预测y,预测因素可以是连续的、分类的或混合的。

一般来说,分类变量y可以是不同的值。在最简单的情况下,y是二进制的,意味着它可以是1或0的值。机器学习中使用的一个经典例子是电子邮件分类:给定每封电子邮件的一组属性,如字数、链接和图片,算法应该决定该电子邮件是垃圾邮件(1)或不是(0)。

在这篇文章中,我们把这个模型称为 "二项逻辑回归",因为要预测的变量是二进制的,然而,逻辑回归也可以用来预测一个可以两个以上数值的因变量。在这第二种情况下,我们称该模型为 "多项式逻辑回归"。例如,一个典型的例子是将电影分为 "搞笑片"、"纪录片 "或 "剧情片"等。

R中的逻辑Logistic回归实现

R使拟合一个逻辑回归模型变得非常容易。要调用的函数是glm(),其拟合过程与线性回归中使用的函数没有太大区别。在这篇文章中,我将拟合一个二元逻辑回归模型并解释每个步骤。

数据集

我们将在泰坦尼克号数据集上工作。这个数据集在网上有不同的版本,但是我建议使用Kaggle提供的版本,因为它几乎已经可以使用了(为了下载它,你需要在Kaggle注册)。

数据集(训练)是一些乘客(准确的说是889人)的数据集合,比赛的目标是根据一些特征,如服务等级、性别、年龄等来预测生存率(如果乘客幸存下来就是1,如果没有就是0)。正如你所看到的,我们将同时使用分类和连续变量。

数据清理过程

在处理真实的数据集时,我们需要考虑到一些数据可能丢失的情况,因此我们需要为我们的分析准备数据集。作为第一步,我们使用read.csv()函数加载csv数据。

确保参数na.strings等于c(""),这样每个缺失值都被编码为NA。

加载和预处理数据

现在我们需要检查缺失值,并使用sapply()函数查看每个变量有多少个唯一值,该函数将作为参数传递的函数应用于数据框的每一列。

sapply(function(x) sum(is.na(x)))

sapply(function(x) length(unique(x)))

绘制数据集并突出缺失值。

map(training)

处理缺失值

变量cabin有太多的缺失值,不使用它。我们也剔除PassengerId,因为它只是一个索引。

使用subset()函数,对原始数据集进行子集,只选择相关列。

现在需要考虑其他的缺失值。在拟合广义线性模型时,R可以通过在拟合函数中设置一个参数来处理它们。

然而,我个人更喜欢 "手动"替换缺失值。有不同的方法可以做到这一点,一个典型的方法是用平均数、中位数或现有数值来替换缺失的数值。我使用平均数。

Age\[is.na(Age)\] <- mean(Age,na.rm=T) ## 用平均数代替缺失

就分类变量而言,使用read.table()或read.csv()默认会把分类变量编码为因子。因子是R处理分类变量的方式。我们可以使用以下几行代码来检查编码情况。

为了更好地了解R是如何处理分类变量的,我们可以使用contrasts()函数。这个函数向我们展示变量是如何虚拟出来的,以及如何在模型中解释它们。

例如,你可以看到,在性别这个变量中,女性将被用作参考变量。Embarked中的缺失值,由于只有两个,我们将剔除这两行(我们也可以替换缺失值,保留数据点)。

data\[!is.na(Embarked),\]

在进行拟合之前,数据的清洗和格式化很重要。这个预处理步骤对于获得良好的模型拟合和更好的预测能力是非常重要的。

模型拟合

我们把数据分成两部分:训练集和测试集。训练集将被用来拟合我们的模型,我们将在测试集上进行测试。

##现在,让我们来拟合这个模型。请务必在glm()函数中指定参数family=binomial。
glm(Survived ~.,family=binomial(link='logit'))
##通过使用函数summary(),我们得到了我们模型的结果。

解释我们的逻辑回归模型的结果

首先,我们可以看到,SibSp、票价都没有统计学意义。至于有统计学意义的变量,性别的P值最低,表明乘客的性别与存活的概率有很大关系。这个预测因素的负系数表明,在所有其他变量相同的情况下,男性乘客生存的可能性较小。请记住,在Logit模型中,反应变量是对数几率:ln(odds) = ln(p/(1-p)) = ax1 + bx2 + 。+ z*xn。

由于男性是一个虚拟变量,所以男性会使对数几率减少2.75,而年龄增加一个单位会使对数几率减少0.037。

现在我们可以对模型分析偏差表

无效偏差和_残差_之间的差异显示了我们的模型与空模型(只有截距的模型)的对比情况。这个差距越大越好。分析该表,我们可以看到逐一添加每个变量时_残差_的下降。同样,加入Pclass、Sex和Age可以明显减少残差。尽管SibSp的p值很低,但其他变量似乎对模型的改善较少。这里的大p值表明,没有变量的模型或多或少解释了相同数量的变化。最终,我们希望看到的是_残差_和AIC的明显下降。

虽然不存在与线性回归的R2完全等同的指标,但麦克法登R2指数可以用来评估模型的拟合度。

评估模型的预测能力

在上面的步骤中,我们简要地评估了模型的拟合情况,现在我们想看看在新的数据集上预测y时,模型的表现如何。通过设置参数type='response',R将以P(y=1|X)的形式输出概率。我们的决策边界将是0.5。如果P(y=1|X)>0.5,那么y=1,否则y=0。

Error <- mean(fitted != Survived)
print(paste('准确度',1- Error))

测试集上0.84的准确度是一个相当不错的结果。然而,请记住,这个结果在一定程度上取决于我先前对数据的手动分割,因此,如果想得到一个更精确的分数,最好运行某种交叉验证,如k-fold交叉验证。

作为最后一步,我们将绘制ROC曲线并计算AUC(曲线下面积),这是二元分类器的典型性能测量。

ROC是在不同的阈值设置下,通过绘制真阳性率(TPR)与假阳性率(FPR)产生的曲线,而AUC是ROC曲线下的面积。根据经验,一个具有良好预测能力的模型的AUC应该比0.5更接近于1(1是理想的)。

performance( measure = "tpr", x.measure = "fpr")
plot(prf)

auc


相关文章
|
2月前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
3月前
|
机器学习/深度学习 资源调度 算法
R语言逻辑回归与分类模型的深度探索与应用
【8月更文挑战第31天】逻辑回归作为一种经典的分类算法,在R语言中通过`glm()`函数可以轻松实现。其简单、高效且易于解释的特点,使得它在处理二分类问题时具有广泛的应用价值。然而,值得注意的是,逻辑回归在处理非线性关系或复杂交互作用时可能表现不佳,此时可能需要考虑其他更复杂的分类模型。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
67 3
|
6月前
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
19天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。