Я пытаюсь установить GAM, используя пакет gam
(я знаю, что mgcv
более гибкий, но здесь мне нужно использовать gam
). У меня сейчас проблема в том, что модель выглядит хорошо, но по сравнению с исходными данными она как бы смещена по оси Y на постоянную величину, для чего я не могу понять, откуда это берется.
Этот код воспроизводит проблему:
library(gam)
data(gam.data)
x <- gam.data$x
y <- gam.data$y
fit <- gam(y ~ s(x,6))
fit$coefficients
#(Intercept) s(x, 6)
# 1.921819 -2.318771
plot(fit, ylim = range(y))
points(x, y)
points(x, y -1.921819, col=2)
legend("topright", pch=1, col=1:2, legend=c("Original", "Minus intercept"))
Chambers, J.M. and Hastie, T.J. (1993) Statistical Models in S (Chapman & Hall) показывает, что не должно быть смещения, и это также интуитивно правильно (сглаживание должно описывать данные).
Я заметил что-то похожее в mgcv
, что можно решить, предоставив параметру shift
значение перехвата модели (потому что сглаживание, по-видимому, центрировано). Я подумал, что то же самое может быть верно и здесь, поэтому я вычел точку пересечения из исходных точек данных. Однако приведенный выше график показывает, что эта идея неверна. Я не знаю, откуда берется дополнительный сдвиг. Я надеюсь, что кто-то здесь сможет мне помочь.
(версия R. 3.3.1; gam
версия 1.12)