【问题标题】:Plotting geom_smooth/geom_spline regression line through the origin通过原点绘制 geom_smooth/geom_spline 回归线
【发布时间】:2020-12-13 15:15:36
【问题描述】:

与这个问题(Plotting a regression line through the origin)相关,我想通过原点(0)强制调用geom_smooth(method="loess")。对于geom_smooth(method="lm"),这可以通过在调用中指定公式来实现,即geom_smooth(method=lm, formula=y~x-1)geom_smooth(method="loess") 的等价物是什么?

【问题讨论】:

    标签: r ggplot2 spline loess


    【解决方案1】:

    这是一件奇怪的事情。 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 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 2021-02-24
      • 2018-10-15
      相关资源
      最近更新 更多