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

news2024/9/19 10:38:31

参考资料: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.coloradmin.cn/o/2055256.html

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

相关文章

如何构建Java SpringBoot+Vue的宽带业务管理系统:一步一脚印教程

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

贝叶斯推理:分步指南

一、说明 让我们深入了解贝叶斯推理的迷人世界。我将通过易于遵循的示例向您介绍其实际应用。 贝叶斯推理为统计分析提供了一个强大而灵活的框架&#xff0c;特别是在存在不确定性和先验知识的情况下。通过结合先前的分布并使用贝叶斯定理根据新证据更新这些信念&#xff0c;贝…

可视耳勺值不值得买?精心总结六大选购技巧

随着生活品质逐渐提高&#xff0c;很多家庭越来越关注个护健康&#xff0c;其中包括耳道的清洁方式。以前人们常用棉签或者挖耳勺进行掏耳朵&#xff0c;但这种方式很容易导致清洁不干净引发中耳炎。可视耳勺应运而生&#xff0c;能通过可视化的操作帮助用户看清耳垢位置进行精…

python之matplotlib (4 图例)

图例 方法一 import matplotlib.pyplot as plt import numpy as npxnp.arange(1,10) yx2 yy2*x1figplt.figure() axplt.gca() ax.plot(x,y,labela,ccoral) ax.plot(x,yy,labelb,cy) plt.legend() plt.show() 在plot中的参数label注明标注名称即可实现图例的绘制&#xff0c;但…

【深度学习】直观理解AUROC

文章目录 前言如何计算直观解释常用计算方式 前言 AUROC常用于衡量二分类分类器的性能&#xff0c;本文旨在详解该指标计算过程 如何计算 设想我们有一个分类器&#xff0c;对数据做二分类。我们设输入数据为 x x x, 预测标签为 y y y, ground-truth标签为 y ^ \hat{y} y…

JAVA多场景多项目排队叫号系统小程序源码

&#x1f525;【告别长龙&#xff0c;智能排队新风尚】多场景多项目排队叫号系统大揭秘&#x1f50d; &#x1f680;【一码在手&#xff0c;轻松畅游各大场景】 还在为医院挂号、银行办事、餐厅等号的长队头疼吗&#xff1f;&#x1f629; 多场景多项目排队叫号系统&#xff0…

关于nginx标准配置参数介绍

标准配置参数&#xff1a; user root;#配置用户或者组&#xff0c;默认为nobody worker_processes 4;#允许生成的进程数&#xff0c;默认为1 项目中nginx.conf配置文件 user root; worker_processes 4; //最大的进程数&#xff0c;要看服务器的内核是多少核的&#xff0…

IEEE-802.3总线局域网

关于以太网相关基础知识&#xff0c;这批文章说的挺好的。

MacOS 阿里云docker镜像仓库无法登录的解决办法

问题情况 Error response from daemon: Get “https://registry.cn-hangzhou.aliyuncs.com/v2/”: Method Not Allowed 解决办法 MacOS下&#xff0c;打开该文件 open ~/.docker删除config.json文件 重新登录 已经提示Login Successed 接下去进行其他操作即可。 PS&…

MiDaS、ZoeDepth、Depth-Anything ai算法深度图估计

1、MiDaS 参考&#xff1a; https://github.com/isl-org/MiDaS https://pytorch.org/hub/intelisl_midas_v2/ https://colab.research.google.com/github/pytorch/pytorch.github.io/blob/master/assets/hub/intelisl_midas_v2.ipynb#scrollTo5A32CL3tocrZ 代码 import cv2 i…

如何使用midjourney?MidJourney订阅计划及国内订阅教程

国内如何订阅MidJourney 第三方代理 参考&#xff1a; zhangfeidezhu.com/?p474 使用信用卡订阅教程 办理国外信用卡&#xff1a; 这个各自找国外的银行办理就好了。 登录MidJourney&#xff1a; 登录MidJourney网站&#xff0c;进入订阅中心。如果是在Discord频道&#x…

idea启动报错Improperly specified VM option.

我本来是想解决idea启动占内存的问题&#xff0c;在网上找了个修改启动参数&#xff0c;这么改的 因为格式不正确&#xff0c;idea启动报错&#xff1a; Improperly specified VM option. To fix the problem, edit your JVM optionsand remove the options that are obsolete…

19 OptionMenu 组件

OptionMenu 组件使用指南 Tkinter 的 OptionMenu 组件是一个下拉选择框&#xff0c;允许用户从一组预定义的选项中选择一个。它通常用于提供用户一个有限的选项集合来选择。以下是对 OptionMenu 组件的详细说明和一个使用案例。 OptionMenu 组件属性 variable: 与 OptionMen…

一个开源可视化网页编辑器,为开发者提供一个快速构建 Web 应用的平台

大家好&#xff0c;今天给大家分享的是一款功能强大、灵活且开源的 可视化网页编辑器框架GrapesJS。它允许用户通过拖拽、点击等直观的方式&#xff0c;无需编写代码即可创建自定义的网页、邮件模板、仪表盘等 项目介绍 GrapesJS 是一个免费的开源 Web 构建器框架&#xff0c;…

常用FTP等工具配置

一、WINSCP 常用配置 1、配置putty&#xff1a;选项-应用程序-路径&#xff0c;记住会话密码传给PUTTY. 2、配置传输777权限&#xff1a;选项->传输->编辑->设置0777权限。 二、PUTTY 常用配置 1、putty 日志路径配置。logging-logfilename: D:/puttylog/&H-&a…

统一多场景自动编译加速——支持动态shape场景,一套架构搞定训推需求

为了让飞桨开发者们掌握第一手技术动态、让企业落地更加高效&#xff0c;飞桨官方在7月至10月特设《飞桨框架3.0全面解析》系列技术稿件及直播课程。技术解析加代码实战&#xff0c;带大家掌握包括核心框架、分布式计算、产业级大模型套件及低代码工具、前沿科学计算技术案例等…

【TCP】确认应答、超时重传机制和TCP报头

TCP 相关机制 TCP 基本特点&#xff1a;有连接、可靠传输、面向字节流、全双工 有连接、面向字节流和全双工都能在前面的代码中体现有连接&#xff1a;必须要先调用 accept 建立联系才能处理面向字节流&#xff1a;会拿到 clientSocket 对象的 InputStream 和 OutputStream&a…

【hot100篇-python刷题记录】【数组中的第K个最大元素】

R5-堆篇 笑死&#xff0c;摆烂式 class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:nums.sort()return nums[-k] 堆排序 堆排序&#xff08;英语&#xff1a;Heapsort&#xff09;是指利用堆&#xff08;heap&#xff09;这种数据结构所设计的一…

C++面试基础系列-double_colon(::)

系列文章目录 文章目录 系列文章目录C面试基础系列-double_colon(::)Overview1.double_colon(::)关键点2.double_colon(::)使用示例2.1.访问类成员2.2.静态成员访问2.3.命名空间中的实体2.4.全局变量和函数2.5.友元类2.6.类型转换2.7.枚举类成员访问2.8.模板参数 关于作者 C面试…

简述灰点工业相机的相关知识

灰点相机是一种特殊的相机类型&#xff0c;它的名称来源于其拍摄时可能产生的灰点效果&#xff0c;但并非所有灰点相机都会直接产生这种效果&#xff0c;这一命名更多是基于其品牌或某种特定的视觉特性。以下是对灰点相机的解析&#xff1a; 一、基本定义 类型&#xff1a;灰…