在R语言中实现Logistic逻辑回归

简介: 在R语言中实现Logistic逻辑回归

逻辑回归是拟合回归曲线的方法,当y是分类变量时,y = f(x)。典型的使用这种模式被预测Ÿ给定一组预测的X。预测因子可以是连续的,分类的或两者的混合。


R中的逻辑回归实现

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


数据集

我们将研究泰坦尼克号数据集。这个数据集有不同版本可以在线免费获得,但我建议使用Kaggle提供的数据集。

目标是预测生存(如果乘客幸存,则为1,否则为0)基于某些诸如服务等级,性别,年龄等特征。我们将使用分类变量和连续变量。


数据清理过程

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

使每个缺失值编码为NA。

training.data.raw < - read.csv('train.csv',header = T,na.strings = c(“”))

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


sapply(training.data.raw,function(x)sum(is.na(x)))

对缺失值进行可视化处理可能会有所帮助:可以绘制数据集并显示缺失值:

 

 

机舱有太多的缺失值,我们不使用它。

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


data < - subset(training.data.raw,select = c(2,3,5,6,7,8,10,12))

现在我们需要解释其他缺失的值。通过在拟合函数内设置参数来拟合广义线性模型时,R可以很容易地处理它们。有不同的方法可以做到这一点,一种典型的方法是用现有的平均值,中位数或模式代替缺失值。我将使用平均值。


data$ Age [is.na(data $ Age)] < - mean(data$ Age,na.rm = T)

就分类变量而言,使用read.table()或read.csv()默认会将分类变量编码为因子。

为了更好地理解R如何处理分类变量,我们可以使用contrasts()函数。

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


模型拟合

我们将数据分成两部分:训练和测试集。训练集将用于拟合我们的模型。


model < - glm(Survived〜.,family = binomial(link ='logit'),data = train)

通过使用函数,summary()我们获得了我们模型的结果:


:glm(formula = Survived〜.,family = binomial(link =“logit”)   )
系数:估计标准误z值Pr(> | z |)
(截距)5.137627 0.594998 8.635 <2e-16 ***
Pclass -1.087156 0.151168 -7.192 6.40e-13 ***
Sexmale -2.756819 0.212026 -13.002 <2e-16 ***
年龄-0.037267 0.008195 -4.547 5.43e-06 ***
SibSp -0.292920 0.114642 -2.555 0.0106 *
Parch -0.116576 0.128127 -0.910 0.3629
票价0.001528 0.002353 0.649 0.5160
EmbarkedQ -0.002656 0.400882 -0.007 0.9947

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

现在我们可以分析拟合并解释模型告诉我们什么。

首先,我们可以看到SibSp,Fare和Embarked没有统计意义。至于统计上显着的变量,性别具有最低的p值,这表明乘客的性别与存活的可能性有很强的关联。预测因子的负系数表明所有其他变量相同,男性乘客不太可能存活下来。由于男性是虚拟变量,因此男性将对数概率降低2.75,而单位年龄增加则将对数概率降低0.037。

现在我们可以运行anova()模型上的函数来分析偏差表


anova(model,test =“Chisq”)
偏差表分析模型:logit
Df Deviance Resid。Df Resid。Dev Pr(> Chi)
NULL 799 1065.39 1级83.607 798 981.79 <2.2e-16 ***
性别1 240.014 797 741.77 <2.2e-16 ***
年龄1 17.495 796 724.28 2.881e-05 ***
SibSp 1 10.842 795 713.43 0.000992 ***
Parch 1 0.863 794 712.57 0.352873
票价1 0.994 793 711.58 0.318717

零偏差和剩余偏差之间的差异越大越好。通过分析表格,我们可以看到每次添加一个变量时出现偏差的情况。同样,增加Pclass,Sex and Age可以显着减少残余偏差。这里的大p值表示没有变量的模型或多或少地解释了相同的变化量。最终你想看到的是一个显着的下降和偏差AIC。

 

评估模型的预测能力

在上面的步骤,我们简要评价模型的拟合。通过设置参数type='response',R将以P(y = 1 | X)的形式输出概率。我们的决策边界将是0.5。如果P(y = 1 | X)> 0.5,则y = 1,否则y = 0。请注意,对于某些应用场景,不同的阈值可能是更好的选择。

fitting.results < - ifelse(fitted.results> 0.5,1,0)
misClasificError < - mean(fitted.results!= test $ Survived

测试集上的0.84精度是相当不错的结果。但是,如果您希望得到更精确的分数,最好运行交叉验证,如k折交叉验证验证。

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

ROC是通过在各种阈值设置下将真阳性率(TPR)与假阳性率(FPR)作图而产生的曲线,而AUC是ROC曲线下的面积。作为一个经验法则,具有良好预测能力的模型应该接近于1。

 

相关文章
|
10月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
7月前
|
机器学习/深度学习 资源调度 算法
R语言逻辑回归与分类模型的深度探索与应用
【8月更文挑战第31天】逻辑回归作为一种经典的分类算法,在R语言中通过`glm()`函数可以轻松实现。其简单、高效且易于解释的特点,使得它在处理二分类问题时具有广泛的应用价值。然而,值得注意的是,逻辑回归在处理非线性关系或复杂交互作用时可能表现不佳,此时可能需要考虑其他更复杂的分类模型。
|
7月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
118 3
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
10月前
|
机器学习/深度学习 数据可视化 算法
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为1
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
10月前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言逻辑回归logistic对ST股票风险建模分类分析混淆矩阵、ROC曲线可视化
R语言逻辑回归logistic对ST股票风险建模分类分析混淆矩阵、ROC曲线可视化
|
10月前
|
机器学习/深度学习 数据采集 算法
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分析分类预测房价及交叉验证|数据分享
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分析分类预测房价及交叉验证|数据分享
|
10月前
|
机器学习/深度学习 数据可视化
R语言lasso协变量改进Logistic逻辑回归对特发性黄斑前膜因素交叉验证可视化分析
R语言lasso协变量改进Logistic逻辑回归对特发性黄斑前膜因素交叉验证可视化分析
|
10月前
|
机器学习/深度学习 数据挖掘
R语言逻辑回归模型的移动通信客户流失预测与分析
R语言逻辑回归模型的移动通信客户流失预测与分析
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。