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

原文出处:拓端数据部落公众号

并非所有结果/因变量都可以使用线性回归进行合理建模。也许第二种最常见的回归模型是逻辑回归,它适用于二元结果数据。如何计算逻辑回归模型的R平方?

McFadden麦克法登R平方

在R中,glm(广义线性模型)命令是用于拟合逻辑回归的标准命令。据我所知,拟合的glm对象并没有直接给你任何伪R平方值,但可以很容易地计算出McFadden的度量。为此,我们首先拟合我们感兴趣的模型,然后是仅包含截距的null模型。然后我们可以使用拟合模型对数似然值计算McFadden的R平方:

mod < -  glm(y~x,family =“binomial”)
nullmod < -  glm(y~1,family =“binomial”)
1-logLik(MOD)/ logLik(nullmod)

 为了了解预测器需要获得某个McFadden的R平方值的强度,我们将使用单个预测模型X来模拟数据, 我们首先尝试P(Y = 1 | X = 0)= 0.3和P(Y = 1 | X = 1)= 0.7:

set.seed(63126)
n < -  10000
x < -  1 *( (n)<0.5)
pr < - (x == 1)* 0.7 +(x == 0)* 0.3
y < -  1 *(  f(n)<pr)
mod < -  glm(y~x,family =“binomial”)
nullmod < -  glm(y~1,family =“binomial”)
1-logLik(MOD)/  (nullmod)
'log Lik。' 0.1320256(df = 2)

因此,即使X对Y = 1的概率有相当强烈的影响,McFadden的R2也只有0.13。要增加它,我们必须使P(Y = 1 | X = 0)和P(Y = 1 | X = 1)更加不同:

set.seed(63126)
n < -  10000
x < -  1 *(runif(n)<0.5)
pr < - (x == 1)* 0.9 +(x == 0)* 0.1
y < -  1 *( (n)<pr)
mod < -  glm(y~x,family =“binomial”)
nullmod < -  glm(y~1,family =“binomial”)
1- (MOD)/  (nullmod)
[1] 0.5539419

即使X将P(Y = 1)从0.1变为0.9,McFadden的R平方仅为0.55。最后我们将尝试0.01和0.99的值 - 我称之为非常强大的效果!

set.seed(63126)
n < -  10000
x < -  1 *(runif(n)<0.5)
pr < - (x == 1)* 0.99 +(x == 0)* 0.01
y < -  1 *( (n) pr)
mod < -  glm(y~x,family =“binomial”)
nullmod < -  glm(y~1,family =“binomial”)
1- (MOD)/  ( )
[1] 0.9293177

现在我们有一个更接近1的值。

分组二项数据与单个数据

data < -  data.frame(s = c(700,300),f = c(300,700),x = c(0,1))SFX
1 700 300 0
2 300 700 1

为了使逻辑回归模型拟合R中的数据,我们可以将因变量传递给glm函数, :

Call:
glm(formula = cbind(s, f) ~ x, family = "binomial", data = data)Deviance Residuals:
[1]  0  0Coefficients:Estimate Std. Error z value Pr(>|z|)
(Intercept)  0.84730    0.06901   12.28   <2e-16 ***
x           -1.69460    0.09759  -17.36   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)Null deviance: 3.2913e+02  on 1  degrees of freedom
Residual deviance: 1.3323e-13  on 0  degrees of freedom
AIC: 18.371Number of Fisher Scoring iterations: 2

我们现在将分组的二项式数据转换为 伯努利 数据,并拟合相同的逻辑回归模型。

individualData <-  (cbind(data,y=0),cbind(data,y=1))
individualData$freq <- individualData$s
individualData$freq[ $y==0] <-  $f[individualData$y==0]
mod2 <- glm(y~x, family="binomial",data= ,weight=freq)
summary(mod2)Call:
glm(formula = y ~ x, family = "binomial", data = individualData, weights = freq)Deviance Residuals: 1       2       3       4
-26.88  -22.35   22.35   26.88  Coefficients:Estimate Std. Error z value Pr(>|z|)
(Intercept)  0.84730    0.06901   12.28   <2e-16 ***
x           -1.69460    0.09759  -17.36   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)Null deviance: 2772.6  on 3  degrees of freedom
Residual deviance: 2443.5  on 2  degrees of freedom
AIC: 2447.5Number of Fisher Scoring iterations: 4

正如所料,我们从分组数据框中获得相同的参数估计和推论。

nullmod1 <- glm(cbind(s,f)~1, family="binomial",data)
nullmod2 <- glm(y~1, family="binomial",data=individualData, =freq)
1-logLik(mod1)/logLik(nullmod1)
'log Lik.' 0.9581627 (df=2)
1-logLik(mod2)/logLik(nullmod2)
'log Lik.' 0.1187091 (df=2)

我们看到分组数据模型的R平方为0.96,而单个数据模型的R平方仅为0.12。

拓端tecdat|R语言在逻辑回归中求R square R方相关推荐

  1. R语言使用逻辑回归分类算法

    R语言使用逻辑回归分类算法 逻辑回归属于概率统计的分类算法模型的算法,是根据一个或者多个特征进行类别标号预测.在R语言中可以通过调用logit函数执行逻辑回归分类算法并预测输出概率.通过调用glm函数 ...

  2. R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化

    最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...

  3. R语言用逻辑回归建立用户付费模型

    原文链接:http://tecdat.cn/?p=967 对于某企业新用户,会利用大数据来分析该用户的信息来确定是否为付费用户,弄清楚用户属性,从而针对性的进行营销,提高运营人员的办事效率(点击文末& ...

  4. r语言实现岭回归_预测分析:R语言实现

    预测分析:R语言实现 作者:(希)鲁伊·米格尔·福特(Rui Miguel Forte) 著 出版日期:2016年10月 文件大小:53.55M 支持设备: ¥40.00仅供试读 适用客户端: 言商书 ...

  5. r语言的逻辑回归分类

    iris 是r语言内置的数据集 head(iris) # 与python的不同iris.head() Sepal.Length Sepal.Width Petal.Length Petal.Width ...

  6. R语言有序逻辑回归-因变量是等级资料

    ordinal logistic regression适用于因变量为等级资料.使用课本例16-4的数据. 随机选取84例患者做临床试验,探讨性别和治疗方法对该病的影响.变量赋值为:性别(X1,男=0, ...

  7. R语言LR逻辑回归实例

    二分类实例 去掉setosa类 index <- which(iris$Species == 'setosa') iris <- iris[- index,]training <-i ...

  8. R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据...

    原文链接:http://tecdat.cn/?p=24152 什么是PCR?(PCR = PCA + MLR)(点击文末"阅读原文"获取完整代码数据). • PCR是处理许多 x ...

  9. 语言nomogram校准曲线图_医学统计与R语言:Meta 回归作图(Meta regression Plot)

    微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发 输入1: install.packages("metafor") library(metafor) dat.bcg 结果 ...

  10. r语言library什么意思_医学统计与R语言:百分条图与雷达图

    微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发 百分条图-输入1: library(ggplot2) 结果1: year 输入2: percentbar <- gather(perc ...

最新文章

  1. 成为算法工程师的路上,掌握什么思维会让自我提升突飞猛进?
  2. java map 教程_Java Map接口
  3. python - 异常处理
  4. 带你学python基础:函数是个function?
  5. WHENEVER SQLERROR EXIT SQL.SQLCODE
  6. 成功跳槽百度工资从15K涨到28K,威力加强版
  7. keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...
  8. 本周开课 | 第 17 期高级转录组分析和R数据可视化火热报名中!!!
  9. python3语法学习第五天--函数(1)
  10. android裁剪部分放大动画,【Android】图片放大被截了一部分之认识clipChildren属性的用法...
  11. matlab画区间柱状图,科学网—Matlab画柱状图 - 高淑敏的博文
  12. 华为移动路由Pro测评:不用办理固话宽带也可高速上网
  13. Android数据加密之——Base64编码算法
  14. 简述python在量化金融中应用_Python金融量化
  15. Linux中alias设置重命名出现 -bash: alias :XXX :not found 问题的解决
  16. ubuntu中截图工具shutter编辑按钮不可用
  17. C语言在控制台上实现鼠标操作的方法
  18. python drf_python DRF操作流程
  19. Windows10 安装Redis(图文教程)
  20. 工作效率提升技巧三:做事的心态

热门文章

  1. ORB-SLAM 解读(五) 地图点投影进行特征匹配
  2. window Anaconda安装tensorflow cpu版本与keras安装版本
  3. sshpass-Linux命令之非交互SSH密码验证
  4. 电商购物网站 - 需求与设计
  5. Vim 编辑器的兼容模式
  6. Entity Framework 复杂类型
  7. bash算术求值和errexit陷阱
  8. MVC.NET 出现诡异的 “IIS运行停止”
  9. RHCE认证培训+考试七天实录(七)
  10. 数学建模python matlab 编程(指派问题)