当前位置: 首页 > news >正文

从0开始学习R语言--Day23--稳健回归

稳健回归

一般来说,对于打印出来后明显分布的比较集中,靠近线分布的数据,我们会优先用最小二乘法(OLS)去回归数据,在正常的情况下它的效果很好,但如果数据中存在了比较离谱的离散点,那么由于OLS的算法机制,它会为了强行去拟合这些离散点去扭曲回归线,也就是让其产生偏离,这会严重误导我们对数据的判断。而稳健回归在这类处理中,引入了权重,通过对离散点的误差计算,当它认为这是会产生极大误差的点时,会赋予这些点很低的权重(有时甚至接近于0),从而使模型能够忽略这些离散点,较好的呈现出数据本身的统计性质。

以下是一个例子来说明:

set.seed(123)  # 固定随机数
n <- 100       # 样本量# 生成正常数据
x <- rnorm(n, mean = 10, sd = 2)
y <- 2 * x + rnorm(n, mean = 0, sd = 1)  # 真实关系: y = 2x + 噪声# 添加异常值(5个极端点)
outliers <- sample(1:n, 5)
y[outliers] <- y[outliers] + rnorm(5, mean = 15, sd = 3)  # 人为制造异常# 合并为数据框
df <- data.frame(x, y)
head(df)
# 安装包(如果未安装)
# install.packages("MASS")library(MASS)  # 包含稳健回归函数rlm()# 普通最小二乘法(OLS)
ols_model <- lm(y ~ x, data = df)
summary(ols_model)  # 查看结果# 稳健回归(M估计,默认使用Huber损失函数)
robust_model <- rlm(y ~ x, data = df)
summary(robust_model)  # 查看结果# 绘制数据点和回归线
plot(df$x, df$y, pch = 16, col = ifelse(1:n %in% outliers, "red", "blue"),main = "OLS vs Robust Regression")
abline(ols_model, col = "black", lwd = 2, lty = 2)      # OLS回归线(虚线)
abline(robust_model, col = "green", lwd = 2)            # 稳健回归线(实线)
legend("topleft", legend = c("OLS", "Robust"), col = c("black", "green"), lty = c(2, 1), lwd = 2)

输出:

Coefficients:Estimate Std. Error t value Pr(>|t|)    
(Intercept)   2.4482     1.9075   1.284    0.202    
x             1.8175     0.1844   9.854 2.51e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Coefficients:Value   Std. Error t value
(Intercept)  0.1394  0.5974     0.2334
x            1.9752  0.0578    34.1940Residual standard error: 0.992 on 98 degrees of freedom

从输出中我们可以明显观察到,OLS的截距是2.4482,而相比之下,稳健回归的是0.1394,更靠近理论上不设置噪声时的截距为0的情况。结合图像来看,OLS生成的虚线很明显被离散点误导了,向上偏移,而稳健回归的标准误差较小也说明估计更可靠。

http://www.xdnf.cn/news/1034443.html

相关文章:

  • 电路问题处理:SGMII链路中的AC耦合电容摆放位置
  • 轮廓 裂缝修复 轮廓修复 填补孔洞 源代码
  • 「Flink」Flink项目搭建方法介绍
  • 【飞牛os0.9.9系统使用docker 挂载cgroup2异常问题】
  • 傅里叶级数从三角函数形式到复指数形式的完整推导步骤
  • 位运,模拟,分治,BFS,栈和哈希表
  • Ant Design 版本演进详解:从 1.x 到 5.x 的发展历程
  • 【项目实训#09】智能代码文件助手模式前后端设计与实现
  • 读取配置文件到Settings对象的完整实现
  • synchronized和ReentrantLock的区别
  • gpt3大模型蒸馏后效果会变差么
  • HTTP 请求报文 方法
  • 湖北理元理律师事务所债务优化实务:平衡还款与生活的法律路径
  • 2022mpsPTE岗位笔试题
  • 自动化立体仓库堆垛机控制系统STEP7 FC1功能块 读取位置值SSI接口
  • KJY0047-J1阶段测试
  • 模拟 AJAX 提交 form 表单及请求头设置详解
  • 人工智能学习24-BP激活函数
  • 全球化2.0|云轴科技ZStack联合Teleplex举办技术沙龙 · 吉隆坡站
  • Oracle 单实例双IP配置
  • Qt:Qt桌面程序正常退出注意事项
  • 人工智能学习16-Numpy
  • YOLOv2 训练过程详解:从数据到模型落地的全流程解析
  • 设计模式-创建型模式(详解)
  • 11_13小结
  • 每天一个前端小知识 Day 1
  • 迁移数据库服务器和应用服务器步骤
  • Vue3中v-bind=“$attrs“应用实例
  • 最小费用最大流算法
  • 架构下的最终瓶颈:数据库如何破局?