R -- loess函数

news2024/11/26 2:54:48

文章目录

  • brief:
  • Example
  • 代码实例
  • 用在时序数据上

brief:

通常我们使用最小二乘回归(OLS)去找到一条直线来最佳地拟合数据点,就像下面那样。
在这里插入图片描述
但是我们会遇到下面这种数据分布,我们应该怎样处理呢?广义线性回归 或者 Loess回归进行拟合?
在这里插入图片描述
有人这样子想了,先把数据分段,然后每段数据内拟合,然后再连接拟合线,当你把数据分段约小,拟合线越平滑。
在这里插入图片描述
使用上面那种思想解决问题的办法就可以认为是loess回归。

接下来我们去看看一个简单的例子,了解下loess回归每一步做了什么?


Example

在这里插入图片描述
对于第一个数据点,称为 x,此时它是中心点。
然后计算离他最近的四个点(我们选取的windows = 5),进行线性拟合。
如果是OLS的话每个数据点的权重是一样的 ,但是现在进行拟合时我们要给每个数据点不一样的权重,使得 x的权重最大(这样就会出现x 对线性拟合的影响最大),距离 x 第一近的 数据点权重第二大,依此类推。
上述的加权回归结果就是 中心点 x 有一个回归预测值 Xpred
在这里插入图片描述
让我们一直对每一个数据点进行类似的加权回归,直到遇到下面这种情况,我们需要停下来,仔细检查一下:
图示中的 new point 用 X表示,也就是我们前述的 Xpred 偏离实际值太对,因为有个离他比较近的数据点出现了离群现象。

在这里插入图片描述
在这里插入图片描述
这个时候我们仅仅是检查,先不管上述问题,一直把所有数据点进行拟合:
在这里插入图片描述
最后在解决上述离群点的问题:
第一次我们得到了一系列的Xpred,我们用Xpred作为数据点再次进行加权回归。
此时的权重等于x 与 Xpred的差值,x 与 Xpred距离远大,权重越小,x 与 Xpred距离越小权重越大。
所以我们得到了下面图示中的一系列Xpred,用红×表示。
在这里插入图片描述
第二次加权拟合的结果:
在这里插入图片描述

Hooray!貌似解决了问题:
在这里插入图片描述


代码实例

set.seed(123)
x <- seq(-5, 5, length.out = 100)
y <- exp(-x^2) + rnorm(length(x), sd = 0.1)

# 计算 LOESS 拟合曲线
fit <- loess(y ~ x, span = 0.5)

# 可视化数据和拟合曲线
plot(x, y, main = "LOESS Fit", pch = 20, col = "blue")
lines(x, predict(fit), col = "red", lwd = 2)

在这里插入图片描述

set.seed(123)
x <- seq(-5, 5, length.out = 100)
y <- exp(-x^2) + rnorm(length(x), sd = 0.1)

# 计算 LOESS 拟合曲线
fit <- loess(y ~ x, span = 0.1)

# 可视化数据和拟合曲线
plot(x, y, main = "LOESS Fit", pch = 20, col = "blue")
lines(x, predict(fit), col = "red", lwd = 2)

在这里插入图片描述

loess(formula, data, weights, subset, na.action, model = FALSE,
span = 0.75, enp.target, degree = 2,
parametric = FALSE, drop.square = FALSE, normalize = TRUE,
family = c(“gaussian”, “symmetric”),
method = c(“loess”, “model.frame”),
control = loess.control(…), …)

下面是几个比较重要的参数:
在这里插入图片描述
其中 span 控制 windows大小,小于1是表示windows占数据点的百分比,大于1表示windows包含所有数据点,
换句话说span 越接近于1拟合线越平滑,越接近0拟合线波动越大。

返回的结果适用以下方法:
在这里插入图片描述

用在时序数据上

df <- read.csv("D:/603876.csv",header = T,row.names = 1,encoding = "UTF-8")
df <- df[,-1]
colnames(df) <- c("identity","date","open","close",
                    "high","low","volume","VOT","maplitude","U-D","VOU-D","turnover")

# 计算 LOESS 拟合曲线
trend <- loess(df$close ~ seq_along(df$close), span = 30/length(df$close))
# 可视化拟合曲线
plot(seq_along(df$close), df$close, main = "Data Trend", type = "l")
lines(seq_along(df$close), predict(trend), col = "red")

# 确定每个趋势的起点和终点
# 先让上涨的趋势数据点都为1,下降趋势的数据点都为0
trend_direction <- ifelse(diff(predict(trend)) >= 0, 1, 0)
# 趋势拐点则表现为差分不为0
trend_start <- c(1, which(diff(trend_direction) != 0)+1)
# 趋势开始的地方也是另一段趋势结束的地方
trend_end <- c(which(diff(trend_direction) != 0), length(trend_direction))

# 输出每个趋势的长度
for (i in seq_along(trend_start)) {
  trend_length <- trend_end[i] - trend_start[i] + 1
  trend_desc <- paste("Trend", i, "is", trend_direction[trend_start[i]], "with length of", trend_length)
  print(trend_desc)
}

在这里插入图片描述

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

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

相关文章

图论 (Java) 从入门到入土 /第一部分 图的基础-图的表示/

零.前言 图&#xff0c;是一种比较复杂的数据结构。和树的一个节点只和上层一个节点相连不同&#xff0c;在图中&#xff0c;任意两个节点都可能相连&#xff0c;且可能具有方向性&#xff0c;并且节点的边具有权重&#xff0c;因此&#xff0c;图被用于描述各种复杂的数据对象…

深入理解Qt定时器:QTimer的魅力与挑战

深入理解Qt定时器&#xff1a;QTimer的魅力与挑战 1. 引言&#xff08;Introduction&#xff09; QTimer的基本概念&#xff08;Basic Concepts of QTimer&#xff09; 2. QTimer的基本使用&#xff08;Basic Usage of QTimer&#xff09;2.1 创建和启动QTimer&#xff08;Crea…

【软件测试】日志第五天

系软件开发日志 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;软件测试 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系软件开发日志前言web自动化…

6月编程排行榜出炉,Python还是第一吗?

除了自己的薪水&#xff0c;程序员每个月最关注的就要数编程排行榜啦~快跟着播妞一起看看最新编程排行情况&#xff1a; Tiobe编程排行前15名 历年排行变化趋势图 详细榜单可参考官网&#xff1a;https://www.tiobe.com/tiobe-index/ 本月排行看点&#xff1a;没有意外&#…

又一经典之作开源,腾讯云架构师珍藏版:“redis深度笔记”

前言 作为这个时代码代码的秃头人员&#xff0c;对Redis肯定是不陌生的&#xff0c;如果连Redis都没用过&#xff0c;还真不好意思出去面试&#xff0c;指不定被面试官吊打多少次。 毕竟现在互联网公司和一些创业公司都要用到Redis&#xff0c;像亚马逊、谷歌、阿里、腾讯都要…

太赞了!阿里技术团队《Java 面试官手册》突击版免费对外开放!

现在已经不是几年前了&#xff0c;可能路边的大爷都知道学计算机挣钱了&#xff0c; 突然想起一个段子&#xff0c;就是当路边的大爷都开始进场买股票时&#xff0c;说明市场已经很危险了。不过大家大可放心&#xff0c;大爷永远无法进场搞计算机&#xff0c;大家放心卷。因为公…

帆软10移动端适配过程记录

背景 最近项目中嵌入的帆软报表在移动端进行适配&#xff0c;支持手机端展示&#xff0c;版本升级在前期&#xff08;帆软FineReport之版本升级&#xff09;有过介绍&#xff0c;本期主要记录适配过程出现的问题及处理方案。 异常处理 1、请求找不到js文件 问题描述 在手机…

活动笔记丨物业行业人效提升与灵活用工新路径

近日&#xff0c;盖雅工场成功举办物业行业人效提升专场交流&#xff0c;来自广深地区央企和民营的领先物业企业和现场服务业的多位代表齐聚深圳招商积余大厦&#xff0c;共同研讨行业人效提升的挑战和实践。 本次闭门交流会聚焦于人效提升&#xff0c;讨论话题包括各自企业在人…

[C语言实现]数据结构——手撕顺序栈之我出生就会写一个栈

&#x1f970;作者: FlashRider &#x1f30f;专栏: 数据结构 目录 栈的前置知识 1.什么是栈&#xff1f; 2.生活中哪些地方有栈的影子&#xff1f; 顺序表实现栈 1.为什么通常采用顺序表实现栈&#xff1f; 2.栈的实现 栈的前置知识 1.什么是栈&#xff1f; 栈&#xf…

spring实例化bean属性填充

实例化bean之后要执行属性填充&#xff0c;也就是serviceA注入了servcieB&#xff0c;实例化servcieA时要通过populateBean先实例化serviceB. 也就是最终要执行serviceB的getBean 只是字段注入的流程 关键的两个Processor AutowiredAnnotationBeanPostProcessor 处理Autowire…

Databend 开源周报第 96 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 虚拟列 查询 J…

Angular与PDF之四: 反思代码与模板的复用

在我们前面关于Angular与PDF的几篇博客中分别讲了如何在在如何在客户端渲染PDF(Angular与PDF之一&#xff1a;如何在客户端渲染PDF_angular pdf_KenkoTech的博客-CSDN博客) 和预览&#xff08;Angular 与PDF之二&#xff1a;打印预览的实现_angular pdf预览_KenkoTech的博客-CS…

Easeui 02 tree组件.

1.添加tree组件. tree组件的位置&#xff1a;DataGrid and Tree(表格和树) → tree(树)&#xff1b; 复制 tree组件到 "菜单管理"的div里面&#xff0c;如&#xff1a; 这里要动态绑定数据&#xff0c;所以把死数据删除&#xff0c;只留下一个 ul&#xff0c;如&am…

HCIA-动态路由

目录 动态路由&#xff1a; 动态路由的分类 按工作区域分类&#xff1a; 按算法和工作机制分类&#xff1a; 距离矢量路由协议&#xff1a; 链路状态路由协议&#xff1a; OSPF协议计算路由步骤&#xff1a; OSPF协议 OSPF协议报文&#xff1a; OSPF三张表 OSPF路由…

算法修炼之筑基篇——筑基一层后期(解决KMP算法,KMP算法模板)

✨博主&#xff1a;命运之光​​​​​​ &#x1f984;专栏&#xff1a;算法修炼之练气篇​​​​​ &#x1f353;专栏&#xff1a;算法修炼之筑基篇 ✨博主的其他文章&#xff1a;点击进入博主的主页​​​​​​ 前言&#xff1a;学习了算法修炼之练气篇想必各位蒟蒻们的基…

kafka 四 Kafka读写流程、LEO log end offset、物理存储 稠密索引 稀疏索引 、Kafka物理存储、深入了解读数据流程、删除消息

目录 Kafka读写流程 LEO log end offset 物理存储 稠密索引 稀疏索引 Kafka物理存储 深入了解读数据流程 删除消息 Kafka读写流程 写流程&#xff1a; 通过zookeeper 找leader分配开始读写Isr中的副本同步数据&#xff0c;并返回给leader ack返回给 分片ack 读流程&…

2023高考语文,用ChatGPT挑战全国卷作文,已达到双一流高校学生水平?

前言 2023年高考语文结束啦&#xff0c;今天我们用ChatGPT来挑战高考作文&#xff0c;一起来看看它的表现如何&#xff1f;ChatGPT突然爆火网络&#xff0c;它真的会取代人类的工作吗&#xff1f; 什么是ChatGPT&#xff1f; ChatGPT是由OpenAI开发的&#xff0c;OpenAI是一家…

BBA EDI 项目数据库方案开源介绍

近期为了帮助广大用户更好地使用 EDI 系统&#xff0c;我们根据以往的项目实施经验&#xff0c;将成熟的 EDI 项目进行开源。用户安装好知行之桥EDI系统之后&#xff0c;只需要下载我们整理好的示例代码&#xff0c;并放置在知行之桥指定的工作区中&#xff0c;即可开始使用。 …

排序算法的复杂度及稳定性详解(内含记忆小窍门)

排序算法的复杂度及稳定性 一、排序算法分类二、概念2.1 时间复杂度2.2 空间复杂度2.3 稳定性 三、表格比较注意 四、部分排序分析4.1 直接插入排序图示代码 4.2 冒泡排序图示代码 4.3 快速排序图示代码 五、结构化记忆&#xff08;小窍门&#xff09;5.1 结构化5.2 我的结构化…

2023 如何备考系统架构师?

高级系统架构设计师难度还是有的&#xff0c;所以一般千万不要裸考&#xff01;&#xff01;要时间充足&#xff0c;至少要接触过&#xff0c;反正没有基础的尽量还是不要去裸考了&#xff01; 一、系统架构设计师考试题型 考试科目分为综合题&#xff08;选择题&#xff09;&a…