适合符合R中黄土(Fit a line with LOESS in R)

2019-07-21 07:42发布

我有它的一些点的数据集,并希望以适合有一条线。 我与尝试了loess功能。 不幸的是我得到非常奇怪的结果。 见积波纹管。 我想到一条线,去更多的是通过点,在整个剧情。 我怎样才能做到这一点?

如何重现它:

请从数据集https://www.dropbox.com/s/ud32tbptyvjsnp4/data.R?dl=1 (只有两个KB),并使用此代码:

load(url('https://www.dropbox.com/s/ud32tbptyvjsnp4/data.R?dl=1'))
lw1 = loess(y ~ x,data=data)
plot(y ~ x, data=data,pch=19,cex=0.1)
lines(data$y,lw1$fitted,col="blue",lwd=3)

任何帮助是极大的赞赏。 谢谢!

Answer 1:

你对绘制拟合值y ,而不是针对x 。 此外,您将需要绘制线之前订购的x值。 试试这个:

lw1 <- loess(y ~ x,data=data)
plot(y ~ x, data=data,pch=19,cex=0.1)
j <- order(data$x)
lines(data$x[j],lw1$fitted[j],col="red",lwd=3)



Answer 2:

不幸的是,数据不再可用,但一个简单的方法如何适应非参数线(局部加权平滑散点图或只是一抔黄土,如果你想)是使用下面的代码:

scatter.smooth(y ~ x, span = 2/3, degree = 2)

请注意,您可以用参数玩spandegree来获得任意平滑。



Answer 3:

可能是晚了,但你有ggplot(和dplyr)选项。 首先,如果你只想要绘制了点黄土线,你可以试试:

library(ggplot2)
load(url("https://www.dropbox.com/s/ud32tbptyvjsnp4/data.R?dl=1"))
ggplot(data, aes(x, y)) + 
geom_point() +
geom_smooth(method = "loess", se = FALSE)

另一种方式,是通过predict()使用黄土拟合函数。 比如我用dplyr功能预测添加到一个名为新列"loess"

  library(dplyr)
  data %>%
  mutate(loess = predict(loess(y ~ x, data = data))) %>%
  ggplot(aes(x, y)) +
  geom_point(color = "grey50") +
  geom_line(aes(y = loess))

更新 :添加一行代码来加载例如数据提供UPDATE2:校正上geom_smoot()函数名acoording @phi评论



文章来源: Fit a line with LOESS in R
标签: r loess