将设置方法作为geom_smooth中的默认方法给出不同的结果

sna*_*ack 6 r ggplot2

我正在绘制一些数据并具有以下代码:

ggplot(aes(x = x, y = y), data = data) + 
  geom_point(alpha = 1/15, color = 'blue')+
  scale_y_continuous('y')+
  scale_x_continuous('x')+
  geom_smooth(stat = 'smooth', color = 'Red')
Run Code Online (Sandbox Code Playgroud)

该图如下所示:

在此输入图像描述

但是,如果我在geom_smooth函数中指定'gam' ,例如:

geom_smooth(stat = 'smooth', color = 'Red', method = 'gam')
Run Code Online (Sandbox Code Playgroud)

我得到了不同的结果:

在此输入图像描述

为什么会这样?

Flo*_*ian 10

文档中,您可以看到:

使用的平滑方法(功能),例如."lm","glm","gam","loess","rlm".

对于method ="auto",基于最大组的大小(跨所有面板)选择平滑方法.黄土用于少于1,000次观测; 否则gam与公式= y~s(x,bs ="cs")一起使用.有点传闻,黄土给出了更好的外观,但在内存中是O(n ^ 2),因此不适用于较大的数据集.

请注意,当方法'auto'使用gam时,它也会更改公式.默认公式是

公式= y~x

所以在第一个场景中,它使用方法gam,修改后的函数函数y~s(x,bs ="cs").第二次,你只指定应该使用方法'gam',但你不会覆盖公式,所以仍然使用y~x.你可以这样做:

geom_smooth(stat = 'smooth', color = 'Red', method = 'gam', formula = y ~ s(x, bs = "cs"))
Run Code Online (Sandbox Code Playgroud)

得到相同的结果.希望这可以帮助!