我想使用ggplot2
来使用geom_smooth()
绘制受限制的立方样条拟合,但似乎它的工作不正确。这是一个简短的例子:
# rms package Contains Restricted Cubic Splines (RCS)
library(rms)
library(ggplot2)
# Load Data
data(cars)
# Model Fit with RCS
fit <- lm(speed ~ rcs(dist, 5), data=cars)
# Obtain Diagnostic Data
plot.dat <- cbind(cars, fitted=fitted(fit))
# Compare Smooth to Actual
ggplot(data=plot.dat) +
geom_point(aes(x=dist, y=speed)) +
geom_smooth(aes(x=dist, y=speed), method="lm",
formula=y ~ rcs(x, 5), se=FALSE, colour="blue") +
geom_line(aes(y=fitted, x=dist), size=1.25, colour="red")
这会产生以下图像:样条线比较。我不确定为什么
geom_smooth()
没有给出正确的结果。显然有一种解决方法(如上所示),但是否有办法使geom_smooth()
产生正确的结果呢?
rcs
函数是“rms”世界的一部分。与“ggplot2”世界函数的情况一样,“rms”函数期望环境中提供其他辅助函数和结构。ols
函数有单独的“Predict”方法,类似于lm
。这需要指定一个datadist对象作为选项。当我运行Predict(ols(speed ~ rcs(dist, 5),data=cars))
时,我得到与您的“fitted”相同的结果。当我尝试将“ols”作为方法提供给geom_smooth
时,我会收到一个错误。 - IRTFM