原文链接:http://tecdat.cn/?p=2652

逻辑回归是拟合回归曲线的办法,当y是分类变量时,y = f(x)。典型的应用这种模型是给定一组预测的X预测Ÿ。预测因子能够是间断的,分类的或两者的混合。

R中的逻辑回归实现

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

数据集

咱们将钻研泰坦尼克号数据集

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

数据清理过程

在解决实在数据集时,咱们须要思考到一些数据可能缺失的状况,因而咱们须要为咱们的剖析筹备数据集。作为第一步,咱们应用该函数加载csv数据read.csv()。

使每个缺失值编码为NA。

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

当初咱们须要查看缺失的值,查看每个变量的惟一值,应用sapply()函数将函数作为参数传递给数据框的每一列。

PassengerId    Survived      Pclass        Name         Sex           0           0           0           0           0         Age       SibSp       Parch      Ticket        Fare         177           0           0           0           0       Cabin    Embarked         687           2 length(unique(x)))PassengerId    Survived      Pclass        Name         Sex         891           2           3         891           2         Age       SibSp       Parch      Ticket        Fare          89           7           7         681         248       Cabin    Embarked         148           4

对缺失值进行可视化解决:能够绘制数据集并显示缺失值:

船舱有太多的缺失值,咱们不应用它。

应用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()函数。

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

模型拟合

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

通过应用函数,summary()咱们取得了咱们模型的后果:

Deviance Residuals:     Min       1Q   Median       3Q      Max  -2.6064  -0.5954  -0.4254   0.6220   2.4165  Coefficients:             Estimate Std. Error z value Pr(>|z|)    (Intercept)  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 ***Age         -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    Fare         0.001528   0.002353   0.649   0.5160    EmbarkedQ   -0.002656   0.400882  -0.007   0.9947    EmbarkedS   -0.318786   0.252960  -1.260   0.2076    \-\-\-Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

解释咱们的逻辑回归模型的后果

当初咱们能够剖析拟合并解释模型

首先,咱们能够看到SibSp,Fare和Embarked没有统计意义。至于统计上显着的变量,性别具备最低的p值,这表明乘客的性别与存活的可能性有很强的关联。预测因子的负系数表明所有其余变量雷同,男性乘客不太可能存活下来。因为男性是虚构变量,因而男性将对数概率升高2.75,而单位年龄减少则将对数概率升高0.037。

当初咱们能够运行anova()模型上的函数来剖析偏差表

Analysis of Deviance TableModel: binomial, link: logitResponse: SurvivedTerms added sequentially (first to last)         Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    NULL                       799    1065.39              Pclass    1   83.607       798     981.79 < 2.2e-16 ***Sex       1  240.014       797     741.77 < 2.2e-16 ***Age       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    Fare      1    0.994       793     711.58  0.318717    Embarked  2    2.187       791     709.39  0.334990

有效偏差(_null_ _deviance_)和残差之间的差别越大越好。通过剖析表格,咱们能够看到每次增加一个变量时呈现偏差的状况。同样,减少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。


最受欢迎的见解

1.R语言多元Logistic逻辑回归 利用案例

2.面板平滑转移回归(PSTR)剖析案例实现

3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R语言泊松Poisson回归模型剖析案例

5.R语言回归中的Hosmer-Lemeshow拟合优度测验

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

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

8.python用线性回归预测股票价格

9.R语言如何在生存剖析与Cox回归中计算IDI,NRI指标