R语言中用于计算Rsquare的包rsq

2023-11-19

理论介绍

线性模型情形

R-squared(值范围 0-1)描述的 输入变量对输出变量的解释程度。在单变量线性回归中R-squared 越大,说明拟合程度越好。

数学表达式:

R 2 = S S R / T S S = 1 − R S S / T S S R^2=SSR/TSS=1-RSS/TSS R2=SSR/TSS=1RSS/TSS
其中:

  • TSS 是执行回归分析前,响应变量固有的方差
  • RSS 是残差平方和(就是回归模型不能解释的方差)
  • SSR 回归模型可以解释的方差

然而,只要增加了更多的变量,无论增加的变量是否和输出变量存在关系,则R-squared 要么保持不变,要么增加。

所以需要 adjusted R-squared (范围 ( − ∞ , 1 ] (-\infty,1] (,1]),它会对那些增加的且不会改善模型效果的变量增加一个惩罚项。

数学表达式:

R 2 ( a d j ) = 1 − ( 1 − R 2 ) × n − 1 n − p − 1 R^2(adj)=1-(1-R^2)\times\frac{n-1}{n-p-1} R2(adj)=1(1R2)×np1n1

(p 为变量个数,n 为样本个数)

另外一个表达是:

R 2 ( a d j ) = 1 − R S S / ( n − p − 1 ) T S S / ( n − 1 ) R^2(adj)=1-\frac{RSS/(n-p-1)}{TSS/(n-1)} R2(adj)=1TSS/(n1)RSS/(np1)

结论,如果单变量线性回归,则使用 R-squared评估,多变量,则使用adjusted R-squared。

在单变量线性回归中,R-squared和adjusted R-squared是一致的。

另外,如果增加更多无意义的变量,则 R-squared 和adjusted R-squared之间的差距会越来越大,Adjusted R-squared会下降。但是如果加入的特征值是显著的,则adjusted R-squared 也会上升。
参考来源:https://zhuanlan.zhihu.com/p/340105912

R语言中的req包可以对线性模型和广义线性模型的多种形式的 R 2 R^2 R2进行计算

广义线性模型情形

针对广义线性模型R-squared通常定义为解释的不确定性的比例(the proportionate reduction in uncertainty, measured by KL divergence, due to the inclusion of regressors.)
一种基于KL散度的R-squared定义是:
R K L 2 = 1 − K ( y , μ ^ ) K ( y , μ ^ 0 ) R_{KL}^2=1-\frac{K(y,\hat{\mu})}{K(y,\hat{\mu}_0)} RKL2=1K(y,μ^0)K(y,μ^),
其中,
K ( y , μ ^ ) = ∑ i = 1 n [ log ⁡ f y ( y i ) − log ⁡ f μ ^ ( y i ) ] K(y,\hat{\mu})=\sum_{i=1}^n[\log f_y(y_i)-\log f_{\hat{\mu}}(y_i)] K(y,μ^)=i=1n[logfy(yi)logfμ^(yi)],
μ ^ i = exp ⁡ ( x i β ^ ) \hat{\mu}_i=\exp(x_i \hat{\beta}) μ^i=exp(xiβ^)表示模型估计的均值
μ ^ 0 \hat{\mu}_0 μ^0是对 μ \mu μ直接估计的极大似然估计,往往是 y y y的均值

参考文献:
A. C. Cameron, F. A. G. Windmeijer. An R-squared measure of goodness of fit for some common nonlinear regression models. Journal of Econometrics. 1997, 77: 329-342.

函数介绍

下面的函数介绍来源于:https://cran.r-project.org/web/packages/rsq/rsq.pdf

rsq()的介绍

rsq(fitObj,adj=FALSE,type=c('v','kl','sse','lr','n'))

参数介绍:

  • fitObj:一个“lm”,“glm”, “merMod”, “lmerMod” 或者类 “lme”; 通常是 lm, glm, glm.nb, lmer , glmer , lme4中的glmer ,nlme中 lme的一个结果。
  • adj:这是一个逻辑值,如果是TRUE,则计算adjusted R^2
  • type: 表示R-squared的类型 (仅对广义线性模型有用):
    ’v’ (default) – variance-function-based (Zhang, 2016), calling rsq.v;
    ’kl’ – KL-divergence-based (Cameron and Windmeijer, 1997), calling rsq.kl;
    ’sse’ – SSE-based (Efron, 1978), calling rsq.sse;
    ’lr’ – likelihood-ratio-based (Maddala, 1983; Cox and Snell, 1989; Magee,
    1990), calling rsq.lr;
    ’n’ – corrected version of ’lr’ (Nagelkerke, 1991), calling rsq.n

输出参数:
该函数除了返回R-square的值,针对(广义)线性混合模型还有下列输出:

  • R_M^2: 模型总共可以解释的变异性的比例,包含固定效应以及随机效应.
  • R_F^2:可以被固定因子解释的变异性所占的比例
  • R_R^2:可以被随机效应因子解释的变异性所占的比例

实例

library(rsq)
data(hcrabs)
attach(hcrabs)
y <- ifelse(num.satellites>0,1,0)
bnfit <- glm(y~color+spine+width+weight,family=binomial)
rsq(bnfit)
# [1] 0.2171238
rsq(bnfit,adj=TRUE)
# [1] 0.1839109
quasibn <- glm(y~color+spine+width+weight,family=quasibinomial)
rsq(quasibn)
# [1] 0.2171238
rsq(quasibn,adj=TRUE)
# [1] 0.1839109
psfit <- glm(num.satellites~color+spine+width+weight,family=poisson)
rsq(psfit)
# [1] 0.1172267
rsq(psfit,adj=TRUE)
# [1] 0.07977572
quasips <- glm(num.satellites~color+spine+width+weight,family=quasipoisson)
rsq(quasips)
# [1] 0.1172267
rsq(quasips,adj=TRUE)
# [1] 0.07977572



# Linear mixed models
require(lme4)
lmm1 <- lmer(Reaction~Days+(Days|Subject),data=sleepstudy)
rsq(lmm1)
# $model
# [1] 0.8003832
# 
# $fixed
# [1] 0.2864714
# 
# $random
# [1] 0.5139119
rsq.lmm(lmm1)
# $model
# [1] 0.8003832
# 
# $fixed
# [1] 0.2864714
# 
# $random
# [1] 0.5139119

rsq.partial()的介绍

该函数用于计算aka partial R 2 R^2 R2, 可用于线性模型和广义线性模型

rsq.partial(objF,objR=NULL,adj=FALSE,type=c('v','kl','sse','lr','n'))

参数介绍:

  • objF:是一个 “lm” 或 "glm"对象, 也是lm, glm, 或者glm.nb 的用于拟合全模型的结果
  • objR:是一个 “lm” 或 "glm"对象, 也是lm, glm, 或者glm.nb 的用于拟合缩减模型的结果
  • adj: logical; if TRUE, calculate the adjusted partial R^2.
    type: R-squared的类型:
    ’v’ (default) – variance-function-based (Zhang, 2016), calling rsq.v;
    ’kl’ – KL-divergence-based (Cameron and Windmeijer, 1997), calling rsq.kl;
    ’sse’ – SSE-based (Efron, 1978), calling rsq.sse;
    ’lr’ – likelihood-ratio-based (Maddala, 1983; Cox and Snell, 1989; Magee,1990), calling rsq.lr;
    ’n’ – corrected version of ’lr’ (Nagelkerke, 1991), calling rsq.n.

输出参数:
返回值包含adjustment 和partial.rsq. 当objR 为 NULL时, variable.full和 variable.reduced将被返回; 否则返回的是variable。

  • adjustment:逻辑值; 如果为TRUE, 则计算adjusted partial R^2.
  • variable.full :全模型中全部的协变量
  • variable.reduced:缩减模型中的全部协变量.
  • variable: 全模型中全部的协变量.
  • partial.rsq: partial R 2 R^2 R2 或者 adjusted partial R 2 R^2 R2.

相关文献

  1. Cameron, A. C. and Windmeijer, A. G. (1997) An R-squared measure of goodness of fit for some common nonlinear regression models. Journal of Econometrics, 77: 329-342.
  2. Cox, D. R. and Snell, E. J. (1989) The Analysis of Binary Data, 2nd ed. London: Chapman and Hall.
  3. Efron, B.(1978) Regression and ANOVA with zero-one data: measures of residual variation. Journal of the American Statistical Association, 73: 113-121.
  4. Maddala, G. S. (1983) Limited-Dependent and Qualitative Variables in Econometrics. Cambridge University.
  5. Magee, L. (1990) R^2 measures based on Wald and likelihood ratio joint significance tests. The American Statistician, 44: 250-253.
  6. Nagelkerke, N. J. D. (1991) A note on a general definition of the coefficient of determination. Biometrika, 78: 691-692.
  7. Zhang, D. (2017). A coefficient of determination for generalized linear models. The American Statistician, 71(4): 310-316.

pcor()函数介绍

该函数用于计算线性模型和广义线性模型的偏相关系数

pcor(objF,objR=NULL,adj=FALSE,type=c('v','kl','sse','lr','n'))

参数介绍:

  • objF:是一个 “lm” 或 "glm"对象, 也是lm, glm, 或者glm.nb 的用于拟合全模型的结果

  • objR:是一个 “lm” 或 "glm"对象, 也是lm, glm, 或者glm.nb 的用于拟合缩减模型的结果

  • adj: logical; if TRUE, calculate the adjusted partial R^2.
    type: R-squared的类型:
    ’v’ (default) – variance-function-based (Zhang, 2016), calling rsq.v;
    ’kl’ – KL-divergence-based (Cameron and Windmeijer, 1997), calling rsq.kl;
    ’sse’ – SSE-based (Efron, 1978), calling rsq.sse;
    ’lr’ – likelihood-ratio-based (Maddala, 1983; Cox and Snell, 1989; Magee,1990), calling rsq.lr;
    ’n’ – corrected version of ’lr’ (Nagelkerke, 1991), calling rsq.n.

    注意:
    当缩减模型的拟合对象缺失时,对于每个变量的偏相关系数都会被计算(除了多于两个水平的因子)。

vresidual()函数介绍

用于计算variance-function-based的残差, 这是用来计算variance-function-based R-squared.

vresidual(y,yfit,family=binomial(),variance=NULL)

参数介绍:

  • y:观测值的向量
  • yfit:拟合值的向量
  • family:分布族
  • variance:方差函数 (specified by family by default).

注意:
残差的计算依赖于方差函数, 对于quasi 模型需要很好的定义. 当方差函数是常数或者线性函数时,这会导出经典的残差。注意只有方差函数需要被设定,通过 “family”" 或者 “variance”。

实例

data(hcrabs)
attach(hcrabs)
y <- ifelse(num.satellites>0,1,0)
bnfit <- glm(y~color+spine+width+weight,family="binomial")
vresidual(y,bnfit$fitted.values,family="binomial")
# Effectiveness of Bycycle Safety Helmets in Thompson et al. (1989)
y <- matrix(c(17,218,233,758),2,2)
x <- factor(c("yes","no"))
tbn <- glm(y~x,family="binomial")
yfit <- cbind(tbn$fitted.values, 1-tbn$fitted.values)
vr0 <- vresidual(matrix(0,2,1),yfit[,1],family="binomial")
vr1 <- vresidual(matrix(1,2,1),yfit[,2],family="binomial")
y[,1]*vr0+y[,2]*vr1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言中用于计算Rsquare的包rsq 的相关文章

  • 如何在 R 中为回归量创建“宏”?

    对于长且重复的模型 我想创建一个 宏 在 Stata 中称为 宏 并通过以下命令完成 global var1 var2 其中包含回归量的模型公式 例如来自 library car lm income education prestige d
  • Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • 如何将带有观察计数的标签添加到 stat_summary ggplot?

    我有一个数据集 例如 outcome lt c rnorm 500 45 10 rnorm 250 40 12 rnorm 150 38 7 rnorm 1000 35 10 rnorm 100 30 7 group lt c rep A
  • rpart是自动剪枝吗?

    Is rpart自动修剪 生成的决策树rpart比具有自动修剪功能的 Oracle Data Mining 生成的级别要多得多 否 但拟合函数的默认值可能会 提前 停止分割 对于 早期 的某些定义 See rpart control对于您可
  • stat_function 从函数生成平线

    我有以下代码 library ggplot2 f lt function x if x gt 2 1 x 0 3 else 0 graph lt ggplot data frame x c 0 10 aes x graph lt graph
  • R data.table 连接不等式条件

    我想使用 data table 包根据多个不等式条件对数据进行子集化 data table 手册中的示例展示了如何使用字符变量执行此操作 但不显示数字不等式 我还了解了如何使用子集函数来执行此操作 但我真的很想利用 data table 二
  • 改进R中从google获取股票新闻数据的功能

    我已经编写了一个函数来从 Google 获取和解析给定股票代码的新闻数据 但我确信有一些方法可以改进它 对于初学者来说 我的函数返回一个 GMT 时区的对象 而不是用户当前的时区 如果传递的数字大于 299 它就会失败 可能是因为 goog
  • 在`rmarkdown`中,如何在句子中添加图标?

    In rmarkdown 如何在句子中添加图标 例如如下 如何添加markdown icon单词 Markdown 和 is 之间 有一个很好的 R 包 可以轻松下载 RMarkdown 文档并将图标添加到其中 icons https gi
  • 根据 R 数据框中的名称对列进行平均

    我想知道是否有一种有效的方法来获取每组的平均值类似命名的列谁的名字结尾为 1S and 2S ex ex1S ex2S at time 1并取每组的平均值类似命名的列谁的名字结尾为 1C or 2C ex ex1C ex2C at time
  • 如何总结此R问题中的销售数量、售出酒类数量和花费金额

    我使用以下代码在 R 上上传我的数据 if file exists ames liquor rds url lt https github com ds202 at ISU materials blob master 03 tidyvers
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • 如何从数据框中删除少于 5 个观察值的个体 [重复]

    这个问题在这里已经有答案了 为了澄清这个问题 我将简要描述数据 中的每一行data frame是一个观察值 列代表与该观察值相关的变量 包括 观察到什么个体 观察时间 观察地点等 我想排除 过滤观察值少于 5 个的个体 换句话说 如果 in
  • 在 Lavaan 生长曲线模型中提取个体轨迹

    我已经使用 R 的 Lavaan 包中的 Growth 函数成功地对一项研究的纵向数据进行了建模 我找不到任何关于如何提取每个参与者的预测轨迹的记录 我只能找到整个组的预测轨迹 在摘要输出的 拦截 部分下给出 使用 lavPredict m
  • R Leaflet Legend:colorBin-删除中断之间的小数

    我正在使用 Leaflet 库在 R 中创建交互式 HTML 地图 传说中采用的是colorBin用于创建将数据分为 6 个类别的方法 使用min values and max values 我已经定义了美国社区调查收入数据的特定范围可能落
  • R data.table fwrite 到 fread 空间分隔符并清空

    我在使用 fread 以 作为分隔符和散布的空白值时遇到问题 例如 这个 dt lt data table 1 5 1 5 1 5 make a simple table dt 3 V2 NA add a blank in the midd
  • 使用 ggplot 构面时增加闪亮的绘图大小

    有没有办法增加绘图窗口的大小shiny取决于在一个中使用的面的数量ggplot图 也许使用垂直滚动 例如 使用下面的示例 当输入为 A 有三个方面 情节看起来不错 当选项 B 选择绘图数量会增加 但绘图窗口保持相同大小 导致绘图太小 是否有
  • 使用 RDCOMClient 搜索 Outlook 收件箱

    我尝试使用 RDCOMClient 在 Outlook 收件箱中搜索电子邮件中的特定主题 然后获取附件 我在一封电子邮件上进行了这项工作 但由于主题包含日期元素 我需要搜索成为一个类似的子句 但不太清楚这适合我的下面的查询 outlook
  • 手动设置scale_fill_distiller()的比例

    我正在尝试制作一系列图表进行比较 举例来说 我想使用iris数据集来制作这样的图 其中我已过滤以仅查看 setosa 物种 library ggplot2 library dplyr iris gt filter Species setos
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • 从 R 中的方差分析 (glm) 中提取残余偏差

    我在 R 中安装了一个 glm 模型并采用了方差分析表 我需要提取 残余偏差 列 但它会产生错误 以下是代码 创建数据 counts lt c 18 17 15 20 10 20 25 13 12 outcome lt gl 3 1 9 t

随机推荐

  • 如何安装虚拟机?安装虚拟机的详细步骤

    1 下载虚拟机软件 首先 在官方网站上下载需要的虚拟机软件 如VMware VirtualBox等 注意软件版本的兼容性 最好选择最新版本 2 安装虚拟机软件 下载完成后 双击安装文件 按照提示完成安装 期间需要设置虚拟机软件的安装路径等信
  • C语言实现推箱子小游戏

    一 设计目的 用简单的C语言知识制作的推箱子游戏 通过上下左右键将所有箱子移动到目标位置 2 让我们更好地了解和巩固C语言知识 并实际运用 同时运用一些不太常见的知识点 二 功能描述 1 模块功能 本程序可分为初始界面 进行游戏 判定通关三
  • C++ list——push_back()与insert()

    push back 是把插入元素直接放入链表结尾 不多表述 insert 是把元素插入指定位置 摘自MSDN IDE VS2012 Parameters Parameter D
  • 使用UncaughtExceptionHandler进行未知异常得捕获

    UncaughtExceptionHandler UncaughtExceptionHandler使用场景 Thread类源代码 UncaughtExceptionHandler使用代码 UncaughtExceptionHandler使用
  • 场景法

    场景法 通过运用场景来对系统的功能点或业务流程的描述 从而提高测试效果 场景法一般包含基本流和备用流 从一个流程开始 通过描述经过的路径来确定的过程 经过遍历所有的基本流和备用流来完成整个场景 基本流 通过一个正确的事件流实现正确流程 备选
  • chatgpt赋能python:如何用Python实现抢购?

    如何用Python实现抢购 Python是一种灵活多样的编程语言 可以用它来完成各种任务 其中之一就是抢购 在电商大促销的节日 抢购商品通常需要竞争非常激烈 但是使用Python编写抢购脚本可以让您获得更高的成功率 以下是一些建议 通过Py
  • ①GD32Keil编译环境搭建及编译Demo

    进入 兆易官网 下载对应芯片的演示套件 下载解压后文件内容如下 安装keil5 我的keil5 下的pack包 打开demo包下的一个例程 提示如下
  • vue-router 2.0 常用基础知识点之router.push()

    router push location 除了使用
  • 红帽rhce认证考试科目有哪些?

    红帽RHCE认证考试主要考察的科目包括 RH124 主要考察Linux基础 文件和目录管理 用户和组管理 文件和目录权限管理 进程管理 系统服务 网络配置 日志分析等内容 RH134 主要考察自动化安装 文件编辑 任务计划 系统进程优先级管
  • 在Linux中安装Cmake过程中,遇到有关于openSSL的问题

    在Linux中安装Cmake过程中 遇到有关于openSSL的问题 以下是个人在安装cmake的过程中遇到的一些问题 如有什么错误之处欢迎各位大佬留言 共同进步 提示 Could Not Find OpenSSL try to set th
  • 【CV中的Attention机制】模块梳理合集

    文章目录 0 总述 1 SENet CVPR18 2 SKNet CVPR19 3 CBAM ECCV18 BAM BMVC18 scSE MICCAI18 4 Non Local Network CVPR19 5 GCNet ICCVW1
  • 手把手教你爬取并下载英雄联盟所有英雄皮肤高清大图

    利用requests和urlretrieve爬取并下载英雄联盟所有英雄皮肤高清大图 不知道屏幕前的你是不是也是一名loler 最近学习爬虫 印象中以前看过爬取英雄联盟的帖子 所以也就自己试了试 结果很是满意 先上效果图 亲女儿拉克丝 下面开
  • IO多路复用--[select

    因为在简历上写了netty的项目 因此还是将网络底层的那点东西搞清楚 首先希望明确的是 BIO NIO IO多路复用这是不同的东西 我会在本文中详细讲出来 本文参考资料 JAVA IO模型 IO多路复用 select poll epoll介
  • SpringBoot2.2.X整合ElasricSearch7.8

    这里默认大家已经掌握es基础语法 es版本为7 8 pom
  • pikachu靶场&RCE&文件包含&上传下载&越权(四)

    文章目录 RCE 概述 RCE PING RCE EVEL File Inclusion 文件包含漏洞 概述 文件下载漏洞 概念 文件上传漏洞 概述 前端页面检查 client check MIME TYPE漏洞 getimagesize
  • openwrt恢复出厂设置有两种方法

    1 输入以下指令 firstboot mtd r erase rootfs data 2 输入以下指令 mount root firstboot reboot f
  • spring Bean 生命周期BeanNameAware, BeanFactoryAware, ApplicationContextAware, InitializingBean接口详解

    继续接着上一篇完成后续接口的解析 还是借用上一篇引用大佬的文章 https www jianshu com p 1dec08d290c1 第二篇spring Bean 生命周期及BeanPostProcessor和Instantiation
  • Oracle dba_ts_quotas

    修改用户表空间配额 用户bpx1默认表空间是bpx1 select default tablespace from dba users where username in BPX1 SQL gt alter user bpx1 quota
  • 人工智能巨头碰撞——埃隆·马斯克推出xAI挑战OpenAI的统治地位

    目录 前言 XAI 的推出 什么是XAI 它将聚焦于什么 一 反AI斗士 马斯克进军AI 你怎么看 二 回顾上半年的 百模大战 中国的AI产业怎么样了 三 AI大模型这把火 还能怎么烧 其它资料下载 前言 北京时间7月13日凌晨 马斯克在T
  • R语言中用于计算Rsquare的包rsq

    文章目录 理论介绍 线性模型情形 广义线性模型情形 函数介绍 rsq 的介绍 实例 rsq partial 的介绍 相关文献 pcor 函数介绍 vresidual 函数介绍 实例 理论介绍 线性模型情形 R squared 值范围 0 1