3

我想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()产生正确的结果?

4

1 回答 1

2

我不知道如何与它集成,geom_smooth但我可以ggplot.Predict从 rms 包中做到这一点:

ddist <- datadist(cars)
options(datadist='ddist')

fit <- ols(speed~  rcs(dist,5),data=cars,
               x=TRUE, y=TRUE)

ggplot(Predict(fit))+geom_point(data=cars, aes(x=dist, y=speed))

在此处输入图像描述

于 2016-01-12T21:23:24.203 回答