【发布时间】:2017-07-01 21:20:41
【问题描述】:
假设我有一些数据,并且我创建了一个线性模型来拟合数据。然后我使用 ggplot2 绘制数据,我想将线性模型添加到图中。据我所知,这是标准的做法(使用内置的cars 数据集):
library(ggplot2)
fit <- lm(dist ~ speed, data = cars)
summary(fit)
p <- ggplot(cars, aes(speed, dist))
p <- p + geom_point()
p <- p + geom_smooth(method='lm')
p
但是,上述内容违反了 DRY 原则(“不要重复自己”):它涉及在对 lm 的调用中创建线性模型,然后在对 geom_smooth 的调用中重新创建它。这对我来说似乎很不雅,而且它还为错误引入了空间。例如,如果我更改了使用lm 创建的模型,但忘记更改使用geom_smooth 创建的模型,那么摘要和绘图将不是同一模型。
有没有办法使用 ggplot2 来绘制 已经存在的线性模型,例如通过将lm 对象本身 传递给geom_smooth 函数?
【问题讨论】: