跨度参数不适用于 ggplot2 中的黄土拟合?

span argument not work working with loess fit in ggplot2?

我想更改示例图中的跨度参数,Example Plot

在我为获取此图而编写的代码中,除了默认值 0.2 之外,我无法让跨度执行任何操作。我有一种预感,这与将黄土合适地分配给每个组有关,但我尝试过的方法没有奏效。我制作了一些示例代码来演示 span 参数不影响下面的黄土拟合。

xy <- rbind(data.frame(x=sort(rnorm(n=46, mean=5, sd=2)), y=1:46),data.frame(x=sort(rnorm(n=46, mean=7, sd=3)), y=1:46), data.frame(x=sort(rnorm(n=46, mean=4, sd=7)), y=1:46))


plot.data <- data.frame(group=letters[rep(1:3, each=46)], xy)

ggplot(plot.data, aes(x=x, y=y))+geom_smooth(method=loess, span=0.1, se=T,  col='black') + geom_point(alpha=0.7) + facet_wrap(~group)

在我看来,这可能与 ggplot2 关系不大,而与您的数据关系更大。观察:

plot.data.a <- plot.data[plot.data$group == 'a', ]
par(mfrow = c(2,2))
for(i in seq(.1, .9, length.out = 4)){
    plot(plot.data.a[,-1], main = paste('Span of', round(i, 2)))
    lines(loess(y ~ x, data = plot.data.a, span = i))
}

似乎改变跨度几乎没有 视觉 loess 拟合的影响。

因此,当您制作绘图并改变 span 时,ggplot2 似乎明白您正在改变 span,只是拟合相对没有变化.

Span 与 geom_smooth(...) 方法调用“loess”有关,请参阅此 link 以获得有用的介绍。

任何超过 1000 个数据点的数据都默认使用 method = "gam",因为这对于大型数据集更有效。

`geom_smooth()` using method = 'gam'

尝试明确说明 method = loess,然后设置跨度。

geom_smooth(method = "loess", span = 0.3)

注意:这会以指数方式增加图表呈现时间。