返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >如何使用R语言做逻辑回归详解
  • 623
分享到

如何使用R语言做逻辑回归详解

2024-04-02 19:04:59 623人浏览 八月长安
摘要

目录前言首先加载需要用的包接下来建模最后我们可以根据模型来预测啦总结 前言 回归的本质是建立一个模型用来预测,而逻辑回归的独特性在于,预测的结果是只能有两种,true or

前言

回归的本质是建立一个模型用来预测,而逻辑回归的独特性在于,预测的结果是只能有两种,true or false

在R里面做逻辑回归也很简单,只需要构造好数据集,然后用glm函数(广义线性模型(generalized linear model))建模即可,预测用predict函数。

我这里简单讲一个例子,来自于加州大学洛杉矶分校的课程

首先加载需要用的包

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.1.3
library(Rcpp)
## Warning: package 'Rcpp' was built under R version 3.2.2
然后加载测试数据
mydata <- read.csv("Http://www.ats.ucla.edu/stat/data/binary.csv") 
## 这里直接读取网络数据
head(mydata)
##   admit gre  gpa rank
## 1     0 380 3.61    3
## 2     1 660 3.67    3
## 3     1 800 4.00    1
## 4     1 640 3.19    4
## 5     0 520 2.93    4
## 6     1 760 3.00    2
#This dataset has a binary response (outcome, dependent) variable called admit. 
#There are three predictor variables: gre, gpa and rank. We will treat the variables gre and gpa as continuous. 
#The variable rank takes on the values 1 through 4.
summary(mydata)
##      admit             gre             gpa             rank      
##  Min.   :0.0000   Min.   :220.0   Min.   :2.260   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:520.0   1st Qu.:3.130   1st Qu.:2.000  
##  Median :0.0000   Median :580.0   Median :3.395   Median :2.000  
##  Mean   :0.3175   Mean   :587.7   Mean   :3.390   Mean   :2.485  
##  3rd Qu.:1.0000   3rd Qu.:660.0   3rd Qu.:3.670   3rd Qu.:3.000  
##  Max.   :1.0000   Max.   :800.0   Max.   :4.000   Max.   :4.000
sapply(mydata, sd)
##       admit         gre         gpa        rank 
##   0.4660867 115.5165364   0.3805668   0.9444602
xtabs(~ admit + rank, data = mydata)  ##保证结果变量只能是录取与否,不能有其它!!!
##      rank
## admit  1  2  3  4
##     0 28 97 93 55
##     1 33 54 28 12

可以看到这个数据集是关于申请学校是否被录取的,根据学生的GRE成绩,GPA和排名来预测该学生是否被录取。

其中GRE成绩是连续性的变量,学生可以考取任意正常分数。

而GPA也是连续性的变量,任意正常GPA均可。

最后的排名虽然也是连续性变量,但是一般前几名才有资格申请,所以这里把它当做因子,只考虑前四名!

而我们想做这个逻辑回归分析的目的也很简单,就是想根据学生的成绩排名,绩点信息,托福或者GRE成绩来预测它被录取的概率是多少!

接下来建模

mydata$rank <- factor(mydata$rank)
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
summary(mylogit)
## 
## Call:
## glm(fORMula = admit ~ gre + gpa + rank, family = "binomial", 
##     data = mydata)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.6268  -0.8662  -0.6388   1.1490   2.0790  
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -3.989979   1.139951  -3.500 0.000465 ***
## gre          0.002264   0.001094   2.070 0.038465 *  
## gpa          0.804038   0.331819   2.423 0.015388 *  
## rank2       -0.675443   0.316490  -2.134 0.032829 *  
## rank3       -1.340204   0.345306  -3.881 0.000104 ***
## rank4       -1.551464   0.417832  -3.713 0.000205 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 499.98  on 399  degrees of freedom
## Residual deviance: 458.52  on 394  degrees of freedom
## aiC: 470.52
## 
## Number of Fisher Scoring iterations: 4

根据对这个模型的summary结果可知:

GRE成绩每增加1分,被录取的优势对数(log odds)增加0.002

而GPA每增加1单位,被录取的优势对数(log odds)增加0.804,不过一般GPA相差都是零点几。

最后第二名的同学比第一名同学在其它同等条件下被录取的优势对数(log odds)小了0.675,看来排名非常重要啊!!!

这里必须解释一下这个优势对数(log odds)是什么意思了,如果预测这个学生被录取的概率是p,那么优势对数(log odds)就是log2(p/(1-p)),一般是以自然对数为底

最后我们可以根据模型来预测啦

## 重点是predict函数,type参数
newdata1 <- with(mydata,
                 data.frame(gre = mean(gre), gpa = mean(gpa), rank = factor(1:4)))
newdata1 
##     gre    gpa rank
## 1 587.7 3.3899    1
## 2 587.7 3.3899    2
## 3 587.7 3.3899    3
## 4 587.7 3.3899    4
## 这里构造一个需要预测的矩阵,4个学生,除了排名不一样,GRE和GPA都一样
newdata1$rankP <- predict(mylogit, newdata = newdata1, type = "response")
newdata1
##     gre    gpa rank     rankP
## 1 587.7 3.3899    1 0.5166016
## 2 587.7 3.3899    2 0.3522846
## 3 587.7 3.3899    3 0.2186120
## 4 587.7 3.3899    4 0.1846684
## type = "response" 直接返回预测的概率值0~1之间
可以看到,排名越高,被录取的概率越大!!!

log(0.5166016/(1-0.5166016)) ## 第一名的优势对数0.06643082

log((0.3522846/(1-0.3522846))) ##第二名的优势对数-0.609012

两者的差值正好是0.675,就是模型里面预测的!

newdata2 <- with(mydata,
                 data.frame(gre = rep(seq(from = 200, to = 800, length.out = 100), 4),
                            gpa = mean(gpa), rank = factor(rep(1:4, each = 100))))
##newdata2
##这个数据集也是构造出来,需要用模型来预测的!
newdata3 <- cbind(newdata2, predict(mylogit, newdata = newdata2, type="link", se=TRUE))
## type="link" 返回fit值,需要进一步用ploGIS处理成概率值
## ?plogis The Logistic Distribution
newdata3 <- within(newdata3, {
  PredictedProb <- plogis(fit)
  LL <- plogis(fit - (1.96 * se.fit))
  UL <- plogis(fit + (1.96 * se.fit))
})
最后可以做一些简单的可视化
head(newdata3)
##        gre    gpa rank        fit    se.fit residual.scale        UL
## 1 200.0000 3.3899    1 -0.8114870 0.5147714              1 0.5492064
## 2 206.0606 3.3899    1 -0.7977632 0.5090986              1 0.5498513
## 3 212.1212 3.3899    1 -0.7840394 0.5034491              1 0.5505074
## 4 218.1818 3.3899    1 -0.7703156 0.4978239              1 0.5511750
## 5 224.2424 3.3899    1 -0.7565919 0.4922237              1 0.5518545
## 6 230.3030 3.3899    1 -0.7428681 0.4866494              1 0.5525464
##          LL PredictedProb
## 1 0.1393812     0.3075737
## 2 0.1423880     0.3105042
## 3 0.1454429     0.3134499
## 4 0.1485460     0.3164108
## 5 0.1516973     0.3193867
## 6 0.1548966     0.3223773
ggplot(newdata3, aes(x = gre, y = PredictedProb)) +
  geom_ribbon(aes(ymin = LL, ymax = UL, fill = rank), alpha = .2) +
  geom_line(aes(colour = rank), size=1)

总结 

到此这篇关于如何使用R语言做逻辑回归的文章就介绍到这了,更多相关R语言逻辑回归内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 如何使用R语言做逻辑回归详解

本文链接: https://www.lsjlt.com/news/164824.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用R语言做逻辑回归详解
    目录前言首先加载需要用的包接下来建模最后我们可以根据模型来预测啦总结 前言 回归的本质是建立一个模型用来预测,而逻辑回归的独特性在于,预测的结果是只能有两种,true or...
    99+
    2024-04-02
  • R语言逻辑回归深入讲解
    逻辑回归 > ###############逻辑回归 > setwd("/Users/yaozhilin/Downloads/R_edu/data") > ac...
    99+
    2024-04-02
  • R语言中如何进行多元逻辑回归
    小编给大家分享一下R语言中如何进行多元逻辑回归,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如何进行多元逻辑回归可以使用阶梯函数通过逐步过程确定多元逻辑回归。此函数选择模型以最小化AIC。通常建议不要盲目地遵循逐步程序,而...
    99+
    2023-06-08
  • R语言逻辑回归的示例分析
    这篇文章主要介绍R语言逻辑回归的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!逻辑回归> ###############逻辑回归> setwd("/Users/yao...
    99+
    2023-06-14
  • R语言多元Logistic逻辑回归应用实例
    可以使用逐步过程确定多元逻辑回归。此函数选择模型以最小化AIC。 如何进行多元逻辑回归 可以使用阶梯函数通过逐步过程确定多元逻辑回归。此函数选择模型以最小化AIC。 通常建议不要盲...
    99+
    2024-04-02
  • R语言中逻辑回归知识点总结
    逻辑回归是回归模型,其中响应变量(因变量)具有诸如True / False或0/1的分类值。 它实际上基于将其与预测变量相关的数学方程测量二元响应的概率作为响应变量的值。 逻辑回归的...
    99+
    2024-04-02
  • 怎么在R语言中实现逻辑回归
    怎么在R语言中实现逻辑回归?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于GNU系统的一个自由、免费、源代码开放的...
    99+
    2023-06-14
  • 在R语言中如何实现Logistic逻辑回归的操作
    这篇文章主要介绍了在R语言中如何实现Logistic逻辑回归的操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是R语言R语言是用于统计分析、绘图的语言和操作环境,属于G...
    99+
    2023-06-14
  • R语言逻辑回归、ROC曲线与十折交叉验证详解
    自己整理编写的逻辑回归模板,作为学习笔记记录分享。数据集用的是14个自变量Xi,一个因变量Y的australian数据集。 1. 测试集和训练集3、7分组 australian ...
    99+
    2024-04-02
  • 在R语言中实现Logistic逻辑回归的操作
    逻辑回归是拟合回归曲线的方法,当y是分类变量时,y = f(x)。典型的使用这种模式被预测Ÿ给定一组预测的X。预测因子可以是连续的,分类的或两者的混合。 R中的逻辑回归实现...
    99+
    2024-04-02
  • R语言逻辑回归、ROC曲线与十折如何实现交叉验证
    本篇内容主要讲解“R语言逻辑回归、ROC曲线与十折如何实现交叉验证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“R语言逻辑回归、ROC曲线与十折如何实现交叉验证”吧!1. 测试集和训练集3、7分...
    99+
    2023-06-08
  • R语言如何实现LASSO回归
    小编给大家分享一下R语言如何实现LASSO回归,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Lasso回归又称为套索回归,是Robert Tibshirani于1...
    99+
    2023-06-09
  • R语言多元线性回归实例详解
    目录一、模型简介二、求解过程总结一、模型简介 一元线性回归是一个主要影响因素作为自变量来解释因变量的变化,在现实问题研究中,因变量的变化往往受几个重要因素的影响,此时就需要用两个或两...
    99+
    2024-04-02
  • R语言如何进行线性回归的拟合度详解
    R语言进行线性回归的拟合度。 本文只是使用 R做回归计算,查看拟合度等,不讨论 R 函数的内部公式 在R中线性回归分析的函数是lm(),基本语法是 一元回归: lm(y ~ x,da...
    99+
    2024-04-02
  • C语言逻辑运算符如何使用
    今天小编给大家分享一下C语言逻辑运算符如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、&& 与 I...
    99+
    2023-06-30
  • R语言如何实现多元线性回归
    R小白几天的摸索 红色为输入,蓝色为输出 输入数据 先把数据用excel保存为csv格式放在”我的文档”文件夹 打开R软件,不用新建,直接写 回归计算 求三个平方和 置信区间...
    99+
    2024-04-02
  • R语言如何实现前向逐步回归
    这篇文章主要介绍了R语言如何实现前向逐步回归,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前向逐步回归原理前向逐步回归的过程是:遍历属性的一列子集,选择使模型效果最好的那一列...
    99+
    2023-06-20
  • python如何实现梯度下降求解逻辑回归
    线性回归1.线性回归函数似然函数的定义:给定联合样本值X下关于(未知)参数 的函数似然函数:什么样的参数跟我们的数据组合后恰好是真实值 2.线性回归似然函数对数似然: 3.线性回归目标函数(误差的表达式,我们的目的就是使得真实值与预...
    99+
    2023-05-14
    Python
  • C语言详细讲解逻辑运算符的使用
    目录一、&& 与 II 分析二、!分析三、小结一、&& 与 II 分析 下面的程序运行结束后,i, j,k 的值分别为多少? #include <...
    99+
    2024-04-02
  • 使用R语言怎么实现一个线性回归
    今天就跟大家聊聊有关使用R语言怎么实现一个线性回归,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作