R语言统计分析——回归诊断2

参考资料:R语言实战【第2版】

        R语言的car包提供的大量函数,大大增强了拟合和评价回归模型的能力。如下:

函数目的
qqPlot()分位数比较图
durbinWatsonTest()对误差自相关性做Durbin-Watson检验
crPlots()成分与残差图
ncvTest()对非恒定的误差方差做得分检验
spreadLevelPlot()分散水平检验
outlierTest()

Bonferroni离群点检验

avPlots()添加的变量图形
influencePlot()回归影响图
scatterplot()增强的散点图
scatterplotMatrix()增强的散点图矩阵
vif()方差膨胀因子

        另外,gvlma包提供了对所有线性模型假设进行检验的方法。

1、正态性

        与基础包中的plot()函数相比,qqPlot()函数提供了更为精确的正态假设检验方法,它画出了在n-p-1个自由度的图分布下的学生化残差(studentized residual,也称学生化删除残差或折叠化残差)图形,其中n是样本大小,p是回归参数的数目(包括截距项)。如下:

# 加载car包
library(car)# 获取数据
states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
# 拟合多元线性模型
fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
# 绘制Q-Q图
qqPlot(fit,simulate=TRUE,main="Q-Q Plot")

         当simulate=TRUE时,将会使用参数自助法生成95%的置信区间。

        从上图中可以看出,除了Nevada,所有的点都离直线很近,并都落在置信区间内,这表明正态性假设符合得很好。作为一个异常值,我们也应该关注Nevada,它有一个很大的正残差值(真实值-预测值),表明模型低估了该地的谋杀率。

# 查看Nevada数据
states["Nevada",]
# 查看Nevada的拟合数据(预测值)
fitted(fit)["Nevada"]
# 查看Nevada的残差
residuals(fit)["Nevada"]
# 查看Nevada的学生化残差
rstudent(fit)["Nevada"]

注:学生化残差是残差除以它的标准差后得到的数值,用以直观地判断误差项服从正态分布这一假定是否成立,若假定成立,学生化残差的分布也应服从正态分布。【学生化残差_百度百科】

        可视化误差还有其他方法,比如使用residplot()函数生成学生化残差柱状图(即直方图),并添加正态曲线、核密度曲线和轴须图。

resiplot<-function(fit,nbreaks=10){z<-rstudent(fit)hist(z,breaks=nbreaks,freq=FALSE,xlab="Studentized Residual",main="Distribution of Error")rug(jitter(z),col="brown")curve(dnorm(x,mean=mean(z),sd=sd(z)),add=TRUE,col="blue",lwd=2)lines(density(z)$x,density(z)$y,col="red",lwd=2,lty=2)legend("topright",legend=c("Normal Curve","Kernel Density Curve"),lty=1:2,col=c("blue","red"),cex=0.7)
}
resiplot(fit)

        如上图所示,除了一个明显的离群点,误差基本上都很好的服从了正态分布。

2、误差的独立性

        判断因变量值(或残差)是否相互独立,最好的方法是依据收集数据方式的先验知识。例如,时间序列数据通常呈现自相关——相隔时间越近的观测相关性大于相隔越远的观测。car包提供了一个可做Durbin-Watson检验的函数,能够检测误差的序列相关性。继续使用上面的案例进行Durbin-Watson检验:

durbinWatsonTest(fit)

        结果中,p值不显著(p=0.242)说明无自相关性,误差之间相互独立。滞后项(lag=1)表明数据集中每个数据都是与其中后一个数据进行比较的。该检验适用于时间独立的数据,对于非聚集型的数据并不使用。注意,durbinWatsonTest()函数使用的自助法来导出p值。如果添加了选项simulate=TRUE,则每次运行测试时获得的结果都将略有不同。

3、线性

        通过成分残差图(component plus residual plot)也称偏残差图(partial residual plot),我们可以查看因变量与自变量之间是否呈非线性关系,也可以查看是否有不同于已设定线性模型的系统偏差,图形可用car包中的crPlots()函数绘制。继续使用上面的案例数据,如下:

# 导入car包
library(car)
# 绘制成分残差图
crPlots(fit)

        如果成分残差图中的图形存在非线性,则说明我们对自变量的函数形式建模不够充分。那么就需要添加一些曲线成分,如多项式,或对一个或多个变量进行变换(如log(x)代替x),或用其他回归变体形式而不是线性回归。

        从上图中可以看出,4个自变量的成分残差图可以认为是线性的,尤其是前两个自变量。

4、同方差性

        car包提供了两个有用的函数,可以判断误差方差是否恒定。

        ncvTest()函数生成一个计分检验,零假设为误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化。若检验显著,则说明存在异方差性(误差方差不恒定)。

        spreadLevelPlot()函数创建一个添加了最佳拟合曲线的散点图,展示标准化残差决对值与拟合值得关系。

# 导入car包
library(car)
ncvTest(fit)
spreadLevelPlot(fit)

        根据ncvTest()的计分检验结果显示不显著(p=0.186),说明满足方差不变假设。 

        spreadLevelPlot()函数作图显示,数据点在水平的最佳拟合曲线(虚线)周围呈水平随机分布。如果违反了该假设,我们将看到一个非水平的曲线。而运行代码结果显示“Suggested power transformation: 1.209626”,建议进行1.2次幂的幂次转换。因接近1,所以不需要进行变换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

transformer-explainer

安装和启动 找到这个项目&#xff0c;然后装好了。 这个项目的目的如名字。 https://github.com/poloclub/transformer-explainerTransformer Explained: Learn How LLM Transformer Models Work with Interactive Visualization - poloclub/transformer-explainerhttps:/…

顶顶通呼叫中心中间件-一句话识别语音识别安装步骤

顶顶通呼叫中心中间件-一句话模型安装步骤&#xff0c;对接mod_vad。一句话识别&#xff08;http接口提交录音文件识别&#xff09; 一、安装一句话模型 一句话识别&#xff08;http接口提交录音文件识别&#xff09;&#xff0c;比如对接mod_vad(老电话机器人接口) curl -s…

web开发,过滤器,前后端交互

目录 web开发概述 web开发环境搭建 Servlet概述 Servlet的作用&#xff1a; Servlet创建和使用 Servlet生命周期 http请求 过滤器 过滤器的使用场景&#xff1a; 通过Filter接口来实现&#xff1a; 前后端项目之间的交互&#xff1a; 1、同步请求 2、异步请求 优化…

docker-compose安装MongoDB 7.0.12

文章目录 一. Mac1.1 创建目录1.2 docker-compose.yaml默认不开启relSet开启relSet&#xff08;数据同步&#xff09; 1.3 部署1.4 卸载1.5 replSet配置1.5.1 初始化replSet1.5.2 创建超管用户1.5.3 验证用户1.5.4 查看replSet状态 二. Centos72.1 创建目录2.2 docker-compose.…

JZ51 数组中的逆序对

数组中的逆序对_牛客题霸_牛客网 描述 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 数据范围&#xff…

Xv6虚拟内存(三):进程地址空间

阅读材料 Xv6代码&#xff1a;memlayout.h、proc.h、proc.c教材3.6节 进程地址空间初始化 proc_pagetable函数 该函数用于初始化一个用户进程的地址空间&#xff0c;返回该地址空间的根页表基地址。该函数只干两件事&#xff1a;映射trampoline页到最高虚拟地址处&#xff0…

使用 AWS EKS 部署 Easysearch

随着企业对数据搜索和分析需求的增加&#xff0c;高效的搜索引擎解决方案变得越来越重要。Easysearch 作为一款强大的企业级搜索引擎&#xff0c;可以帮助企业快速构建高性能、可扩展的数据检索系统。在云计算的背景下&#xff0c;使用容器化技术来部署和管理这些解决方案已经成…

【软件测试】功能测试理论基础

目录 项目的测试流程&#x1f3f4; 需求评审 评审形式 测试人员在需求评审中职责 测试计划与方案 测试计划 问题 测试方案&#x1f3f4; 测试计划与方案的对比 功能测试设计&#x1f3f4; 测试设计的步骤 项目的测试流程&#x1f3f4; 作用&#xff1a; 有序有效开展…

Flink消费Kafka数据积压排查解决

0、背景 有个Flink任务每天不定时会出现数据积压&#xff0c;无论是白天还是数据量很少的夜里&#xff0c;且积压的数据量会越来越多&#xff0c;得不到缓解&#xff0c;只能每日在积压告警后重启&#xff0c;重启之后消费能力一点毛病没有&#xff0c;积压迅速缓解&#xff0…

【云原生】RBAC授权详解

使用 RBAC签权 文章目录 使用 RBAC签权一、RBAC介绍1.1、介绍1.2、RBAC四种对象 二、Role和ClusterRole三、RoleBinding和ClusterRoleBinding四、示例Role4.1、创建Kubernetes用户4.2、Role示例4.3、RoleBinding4.4、验证4.5、退回管理员权限用户 五、示例ClusterRole5.2、创建…

平安城市/雪亮工程现状及需求分析:EasyCVR视频汇聚平台助力雪亮工程项目建设

一、背景现状 经过近几年的努力&#xff0c;平安城市雪亮工程建设取得了显著的成绩&#xff0c;完成了前端高清视频点位和高清卡口系统建设&#xff0c;建成了&#xff08;视频监控类&#xff09;、&#xff08;卡口类&#xff09;和&#xff08;应用类&#xff09;的平台。这…

1.Linux_常识

UNIX、Linux、GNU 1、UNIX UNIX是一个分时操作系统&#xff0c;特点是多用户、多任务 实时操作系统&#xff1a;来了请求就去解决请求 分时操作系统&#xff1a;来了请求先存着&#xff0c;通过调度轮到执行时执行 2、Linux Linux是一个操作系统内核 发行版本&#xff1…

C++练习备忘录

1. 保留两位小数输出格式 #include <iostream> #include <iomanip> using namespace std; int main() {double S 0;S (15 25) * 20 / 2;cout << fixed << setprecision(2) << S;return 0; }2. 设置输出宽度 #include <iostream> #inclu…

OD C卷 - 传递悄悄话

传递悄悄话 &#xff08;100&#xff09; 给定一个二叉树&#xff0c;节点采用顺序存储&#xff0c;如 i0 表示根节点&#xff0c;2i 1 表示左子树根&#xff0c;2i 2 表示右子树根;每个节点站一个人&#xff0c;节点数值表示由父节点到该节点传递消息需要的时间&#xff1b…

海量数据处理商用短链接生成器平台 - 1

第一章 海量数据处理商用短链接生成器平台介绍 第1集 什么是短链接生成器 短链接生成器是一种工具&#xff0c;可以将较长的链接转换成较短的链接。这种工具在许多场景中都很有用&#xff0c;包括营销、社交媒体分享和数据报告等。以下是一些关于短链接生成器的优点和作用&…

【Kubernetes】集群外部的请求访问集群内应用的最佳方式:Ingress

《Service 服务》系列&#xff0c;共包含以下文章&#xff1a; Service 概念与实战Service 类型&#xff1a;NodePort、ClusterlP、LoadBalancer、ExternalName虚拟 IP 与 Service 的代理模式集群外部的请求访问集群内应用的最佳方式&#xff1a;Ingress &#x1f60a; 如果您…

白骑士的C#教学附加篇 5.1 C#开发工具

系列目录 上一篇&#xff1a;白骑士的C#教学实战项目篇 4.4 游戏开发 在这一部分&#xff0c;我们将介绍一些额外的内容和工具&#xff0c;以帮助您提高 C# 开发的效率和质量。掌握合适的开发工具和调试技巧&#xff0c;可以让您在编写和维护代码时更加高效和从容。 开发工具对…

智慧水务项目(七)vscode 远程连接ubuntu 20.04 服务器,调试pyscada,踩坑多多

一、说明 以前用过pycharm&#xff0c;远程连接还可以&#xff0c;但是vscode用以前还可以&#xff0c;就用它开发python了&#xff0c;想搞个远程&#xff0c;源码直接放服务器上&#xff0c;能远程调试&#xff0c;其实也很方便的&#xff0c;结果第一次还成功了&#xff0c;…

学习笔记第二十八天

有名管道&#xff08;FIFO&#xff09; 有名管道是Linux系统中一种特殊的文件类型&#xff0c;它允许不相关的进程之间进行通信。有名管道在文件系统中具有具体的路径和名称&#xff0c;因此可以被多个进程共同访问。 特点 持久性&#xff1a;有名管道在文件系统中以文件的形…

LeetCode刷题笔记第231题:2 的幂

LeetCode刷题笔记第231题&#xff1a;2 的幂 题目&#xff1a; 想法&#xff1a; 对输入的数值循环除以2直至数值小于等于1&#xff0c;如果最终的数值为1则为2的幂&#xff0c;小于1则不是2的幂。 class Solution:def isPowerOfTwo(self, n: int) -> bool:if n 1:retur…