R语言统计分析——回归分析的改进措施

2024-08-23 05:36

本文主要是介绍R语言统计分析——回归分析的改进措施,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

        如果在回归诊断中发现了问题,我们该如何做?有四种方法可以处理违背回归假设的问题:

①删除观测点;

②变量变换;

③添加或删除变量;

④使用其他回归方法。

1、删除观测点

        删除离群点通常可以提高数据集对正态假设的拟合度,而强影响点会干扰结果,通常也会被删除。删除最大的离群点或强影响点后,模型需要重新你和。若离群点或强影响点仍然存在,重复以上过程知道获得比较满意的拟合。

        对于删除观测点,我们们要慎之又慎。如果是因为数据记录错误,或是没有遵守规程,或是受试对象误解了指导说明,这种情况下可以判断为离群点,删除它们是十分合理的

        不过在其他情况下,所有收集数据中的异常点可能是最有趣的东西。发掘为何该观测点不同于其他店,有助于我们更深刻地理解研究组,或者发现其他我们可能没有想过的问题。

2、变量变换

        当模型不符合正态性、线性或者同方差假设时,一个或多个变量的变换通常可以改善或调整模型效果。变换多用Y^\lambda代替Y,λ的常见值和解释如下:

λ-2-1-0.500.512
变换1/Y^21/Y1/\sqrt{Y}log(Y)\sqrt{Y}Y^2

        若Y是比例数据,通常使用logit变换:ln(Y/(1-Y))

        当模型违反正态假设时,通常可以对响应变量尝试某种变换。car包中的powerTransform()函数通过λ的最大似然估计来正态化变量X^\lambda。如下:

# 加载car包
library(car)
# 获取数据
states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
# 拟合多元线性模型
fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
# 查看正态变换建议
summary(powerTransform(states$Murder))

        我们可以用murder^0.6来正态化变量murder。由于0.6很接近0.5,我们可以尝试用平方根变换来提高模型正态性的符合程度。但本例中,λ=1的假设是无法拒绝的(p=0.145),因此没有足够的证据表明本例需要进行变量变换。

        当违反了线性假设时,对预测变量进行变换常常会比较有用。car包中的boxTidwell()函数通过获得预测变量幂数的最大似然估计来改善线性关系。如下:

# 加载car包
library(car)
boxTidwell(Murder~Population+Illiteracy,data=states)

        结果显示,使用变换Population^0.87和Illiteracy^1.36能够大大改善线性关系。但是对于这个量变量的计分检验的统计结果均不显著Population( p=0.75)和Illiteracy( p=0.54),说明不需要进行变换。

3、增删变量

        改变模型的变量会影响模型的拟合度。有时,添加一个重要变量可以解决我们许多问题,删除一个冗余变量也能达到同样的效果。

        删除变量在处理多重共线性时是一种非常重要的方法。如果我们仅仅是做预测,那么多重共线性并不构成问题。但如果还要对每个预测变量进行解释,那么就必须解决这个问题。最常见的方法是删除某个存在多重共线性的变量。另外一个可用的方法是岭回归

4、尝试其他方法

处理多重共线性的一种方法是拟合一种不同类型的模型(本例中是岭回归)。
如果存在离群点和/或强影响点,可以使用稳健回归模型替代OLS回归。
如果违背了正态性假设,可以使用非参数回归模型。
如果存在显著的非线性,能尝试非线性回归模型。
如果违背了误差独立性假设,还能用那些专门研究误差结构的模型,比如时间序列模型或者多层
次回归模型。
最后,我们还能转向广泛应用的广义线性模型,它能适用于许多OLS回归假设不成立的情况。

这篇关于R语言统计分析——回归分析的改进措施的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098494

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求: