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、异步请求 优化…

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

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

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

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

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

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

平安城市/雪亮工程现状及需求分析: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; 如果您…

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

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

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…

SpringBoot的事务/调度/缓存/邮件发送和一些Spring知识点总结

目录 1、SpringBoot的事务管理 2、SpringBoot的异步任务 3、SpringBoot定时任务调度 4、SpringBoot整合Mail发送邮件 5、Spring框架中的Bean的作用域 6、Spring框架中的Bean的线程安全 7、 Spring框架中的Bean生命周期 8、Spring框架如何解决循环依赖&#xff1f; 9、…

HarmonyOS Next 系列之列表下拉刷新和触底加载更多数据实现(十一)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现&#xff08;一&#xff09; HarmonyOS Next 系列之验证码输入组件实现&#xff08;二&#xff09; HarmonyOS Next 系列之底部标签栏TabBar实现&#xff08;三&#xff09; HarmonyOS Next 系列之HTTP请求封装和Token…

Golang | Leetcode Golang题解之第337题打家劫舍III

题目&#xff1a; 题解&#xff1a; func rob(root *TreeNode) int {val : dfs(root)return max(val[0], val[1]) }func dfs(node *TreeNode) []int {if node nil {return []int{0, 0}}l, r : dfs(node.Left), dfs(node.Right)selected : node.Val l[1] r[1]notSelected : …

mysql windows安装与远程连接配置

安装包在主页资源中 一、安装(此安装教程为“mysql-installer-community-5.7.41.0.msi”安装教程&#xff0c;安装到win10环境) 保持默认选项&#xff0c;点击”Next“。 点开第一行加号展开一路展开找到“MySQL Server 5,7,41 - X64”点击选中点击一下中间只想右侧的箭头看到…

Element-02.组件-Table表格

一.常见组件-表格 二.具体操作 <template><el-table:data"tableData"borderstyle"width: 100%"><el-table-columnprop"date"label"日期"width"180"></el-table-column><el-table-columnprop&q…

Chat App 项目之解析(二)

Chat App 项目介绍与解析&#xff08;一&#xff09;-CSDN博客文章浏览阅读76次。Chat App 是一个实时聊天应用程序&#xff0c;旨在为用户提供一个简单、直观的聊天平台。该应用程序不仅支持普通用户的注册和登录&#xff0c;还提供了管理员登录功能&#xff0c;以便管理员可以…