这是一件奇怪的事情。 loess 回归是 局部自适应 拟合,因此您不能将其限制为通过原点,除非您在回归中包含原点处的权重较大的点(或紧密的点簇)。这充其量是有点人为的。
如果您能够扩展您想要实现的目标以及您的数据代表什么,可能会有更好的选择,但与此同时,您可以像这样实现您的要求。
首先,让我们建立一个简单的例子:
library(ggplot2)
set.seed(1)
df <- data.frame(x = 0:10, y = rnorm(11, 0:10) + 5)
p <- ggplot(df, aes(x, y)) +
geom_point() +
coord_cartesian(xlim = c(0, 10), ylim = c(0, 20)) +
theme_bw(base_size = )
我们的标准geom_smooth 调用如下所示:
p + geom_smooth(formula = y ~ x, method = "loess")
为了强制它通过我们可以做的原点:
p + geom_smooth(data = rbind(df, data.frame(x = 0, y = 0)),
formula = y ~ x,
aes(weight = c(rep(1, nrow(df)), 100)),
method = "loess")
由reprex package (v0.3.0) 于 2020 年 12 月 13 日创建