为什么包 stats 中的 scatter.smooth 和包 ggplot2 中的 geom_smooth 给出不同的结果?
Why do scatter.smooth from package stats and geom_smooth from package ggplot2 give different results?
这是base r中的黄土平滑曲线
dat <- data.frame(RT = c(151, 160, 168, 169, 172, 175, 189, 279),
IQ = c(123, 121, 115, 110, 105, 103, 100, 120))
with(dat, scatter.smooth(IQ, RT, span = 0.8))
这是用ggplot生成的黄土曲线:
ggplot(dat, aes(x = IQ, y = RT)) +
geom_point() +
geom_smooth(method = stats::loess, se = F, span = 0.8)
为什么不同?
这是因为 scatter.smooth()
不使用默认的 loess()
参数,而 geom_smooth()
使用。如果您将 scatter.smooth()
中默认的方法参数提供给 ggplot2 方法,它们会产生非常相似的结果。
dat <- data.frame(RT = c(151, 160, 168, 169, 172, 175, 189, 279),
IQ = c(123, 121, 115, 110, 105, 103, 100, 120))
with(dat, scatter.smooth(IQ, RT, span = 0.8))
library(ggplot2)
ggplot(dat, aes(x = IQ, y = RT)) +
geom_point() +
geom_smooth(formula = y ~ x, method = "loess", se = F, span = 0.8,
method.args = list(degree = 1, family = "symmetric"))
由 reprex package (v1.0.0)
于 2021-02-03 创建
这是base r中的黄土平滑曲线
dat <- data.frame(RT = c(151, 160, 168, 169, 172, 175, 189, 279),
IQ = c(123, 121, 115, 110, 105, 103, 100, 120))
with(dat, scatter.smooth(IQ, RT, span = 0.8))
这是用ggplot生成的黄土曲线:
ggplot(dat, aes(x = IQ, y = RT)) +
geom_point() +
geom_smooth(method = stats::loess, se = F, span = 0.8)
为什么不同?
这是因为 scatter.smooth()
不使用默认的 loess()
参数,而 geom_smooth()
使用。如果您将 scatter.smooth()
中默认的方法参数提供给 ggplot2 方法,它们会产生非常相似的结果。
dat <- data.frame(RT = c(151, 160, 168, 169, 172, 175, 189, 279),
IQ = c(123, 121, 115, 110, 105, 103, 100, 120))
with(dat, scatter.smooth(IQ, RT, span = 0.8))
library(ggplot2)
ggplot(dat, aes(x = IQ, y = RT)) +
geom_point() +
geom_smooth(formula = y ~ x, method = "loess", se = F, span = 0.8,
method.args = list(degree = 1, family = "symmetric"))
由 reprex package (v1.0.0)
于 2021-02-03 创建