我想用R画一条平滑的曲线.我有以下简单的玩具数据:

> x
 [1]  1  2  3  4  5  6  7  8  9 10
> y
 [1]  2  4  6  8  7 12 14 16 18 20

现在,当我用标准命令绘制它时,它看起来很颠簸和前卫,当然:

> plot(x,y, type='l', lwd=2, col='red')

如何使曲线平滑,以便使用估计值对3条边进行圆角处理?我知道有很多方法可以拟合平滑曲线,但我不确定哪种方法最适合这种曲线,以及如何在R中编写它.

推荐答案

我非常喜欢loess()的平滑效果:

x <- 1:10
y <- c(2,4,6,8,7,12,14,16,18,20)
lo <- loess(y~x)
plot(x,y)
lines(predict(lo), col='red', lwd=2)

Venables和Ripley的MASS book有一整节关于平滑的内容,也涵盖了样条曲线和多项式——但loess()几乎是每个人的最爱.

R相关问答推荐

是否有R代码来判断一个组中的所有值是否与另一个组中的所有值相同?

检测(并替换)字符串中的数学符号

从有序数据中随机抽样

计算R中的威布尔分布的EDF

ggplot geom_smooth()用于线性回归虚拟变量-没有回归线

R等效于LABpascal(n,1)不同的列符号

Highcharter多次钻取不起作用,使用不同方法

使用case_match()和char数组重新编码值

在R中使用数据集名称

如何在geom_col中反转条

制作等距离的线串副本

移除仪表板Quarto中顶盖和车身之间的白色区域

多个模拟序列间的一种预测回归关系

使用rvest从多个页面抓取时避免404错误

基于数据集属性将科分配给物种

变长向量的矢量化和

以任意顺序提取具有多个可能匹配项的组匹配项

我需要使用ggplot2制作堆叠条形图

计算来自单独分组的分幅的值的百分位数

如何将宽格式的患者信息数据高效地转换为患者计数的时间序列?