R语言在逻辑回归中求R square R方
时间:2022-07-22
本文章向大家介绍R语言在逻辑回归中求R square R方,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文链接:http://tecdat.cn/?p=6295
并非所有结果/因变量都可以使用线性回归进行合理建模。也许第二种最常见的回归模型是逻辑回归,它适用于二元结果数据。如何计算逻辑回归模型的R平方?
麦克法登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 0
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: 3.2913e+02 on 1 degrees of freedom
Residual deviance: 1.3323e-13 on 0 degrees of freedom
AIC: 18.371
Number 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.5
Number 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。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Sequential Nim(CodeForces - 1382B)【博弈】
- Less Coin Tosses(Gym - 102346L)【打表+找规律】
- leetcode1558题解【贪心】
- 如何将炫酷的报表直接截图发送邮件——在Superset 0.37使用Schedule Email功能
- Kafka监控必备——Kafka-Eagle 2.0.2正式发布
- 安防/教育/互联网直播视频组件EasyRTSPServer读取本地文件报错找不到EasyStreamClient.dll解决方法
- C语言编程入门之--第六章C语言控制语句
- RTSP网络摄像头网页无插件直播视频平台EasyNVR自定义标题和CopyRight步骤
- 设计模式~解释器
- RTSP/GB28181/HIKSDK/Ehome协议视频上云服务平台EasyCVR人脸识别开发ArcSoftFace环境搭建
- RTSP/GB28181/HIKSDK/EHome流媒体协议视频上云网关EasyCVR流地址密码不正确如何修正?
- tmux终端意外出现控制字符
- clickhouse编译安装以及搭建mysql实时复制
- Linux回收站机制实现过程及用法详解
- Linux如何基于AIDE检测文件系统完整性