Я хотел бы использовать 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'-world, функции 'rms' ожидают, что в среде будут доступны другие вспомогательные функции и структуры. Есть отдельные методыPredict
для функцииols
, аналогlm
. Для этого необходимо указать объект datadist в качестве опции. Когда я запускаюPredict(ols(speed ~ rcs(dist, 5),data=cars))
, я получаю те же результаты, что и вашfitted
. Когда я пытаюсь предложить ols в качестве метода дляgeom_smooth
, я получаю сообщение об ошибке. - person IRTFM   schedule 13.01.2016