我正在尝试在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
编写它。
发布于 2010-08-14 04:28:10
我非常喜欢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的质量书有一整节关于平滑的内容,还涵盖了样条和多项式--但loess()
几乎是每个人的最爱。
发布于 2010-08-14 08:51:16
也许smooth.spline是一个选项,你可以在这里设置一个平滑参数(通常在0和1之间
smoothingSpline = smooth.spline(x, y, spar=0.35)
plot(x,y)
lines(smoothingSpline)
您还可以对smooth.spline对象使用预测。该函数以R为基数,详情请参见?smooth.spline。
发布于 2010-08-14 10:15:40
为了让它变得更流畅。
x <- 1:10
y <- c(2,4,6,8,7,8,14,16,18,20)
lo <- loess(y~x)
plot(x,y)
xl <- seq(min(x),max(x), (max(x) - min(x))/1000)
lines(xl, predict(lo,xl), col='red', lwd=2)
这种风格插入了很多额外的点,并得到了一条非常平滑的曲线。这似乎也是ggplot所采用的方法。如果标准的平滑度很好,你可以直接使用。
scatter.smooth(x, y)
https://stackoverflow.com/questions/3480388
复制相似问题