0 es el valor del intercepto del modelo en este caso. En términos más generales, el valor en 0 es la suma de las contribuciones de todos los demás términos, de modo que la escala es el efecto aditivo al valor del predictor lineal en ese valor de la covariable.
library("mgcv")
set.seed(1)
SimData <- data.frame(x = runif(100, 0, 1))
SimData <- transform(SimData, y = x^2 + rnorm(100, 0, 0.1))
fit <- gam(y ~ s(x), data = SimData)
newdata <- data.frame(x = seq(0, 1, length = 100))
pred <- predict(fit, newdata = newdata, type = "terms")
head(pred)
attr(pred, "constant")
Considerando el ejemplo de código anterior tenemos
> head(pred)
s(x)
1 -0.3705257
2 -0.3676520
3 -0.3647786
4 -0.3619106
5 -0.3590587
6 -0.3562354
> attr(pred, "constant")
(Intercept)
0.3372932
pred
contiene las contribuciones de $s(x)$ a los valores predichos del modelo en los valores dados de $x$ . Los valores predichos del modelo son los valores en pred
y el intercepto del modelo
head(data.frame(fit1 = drop(pred + attr(pred, "constant")),
fit2 = predict(fit, newdata)))
> head(data.frame(fit1 = drop(pred + attr(pred, "constant")),
+ fit2 = predict(fit, newdata)))
fit1 fit2
1 -0.03323248 -0.03323248
2 -0.03035874 -0.03035874
3 -0.02748538 -0.02748538
4 -0.02461740 -0.02461740
5 -0.02176549 -0.02176549
6 -0.01894214 -0.01894214
mgcv en realidad no lo hace predict()
al trazar. Simplemente evalúa los valores de la función base en los valores de $x$ y multiplica la matriz resultante por el vector de coeficientes de las funciones de base correspondientes.
bs <- PredictMat(fit$smooth[[1]], data = newdata)
head(data.frame(p1 = bs %*% coef(fit)[-1],
p2 = drop(pred)))
Los valores en p1
aquí son las mismas que antes (contribuciones a los valores predichos), pero sólo hemos trabajado con esta covariable y no con todas las demás covariables de un modelo potencialmente más amplio. Esto es lo que se muestra en el gráfico.
Que el 0 aparezca donde aparece se debe a la restricción de suma a cero impuesta por razones de identificabilidad. Sin esta restricción (o una similar, pero otras tienen propiedades indeseables) se podría añadir un valor constante al intercepto del modelo y restar el mismo valor al efecto del suavizado y seguir obteniendo el mismo modelo. Por lo tanto, habría un número infinito de soluciones para el modelo. La restricción de la suma a cero evita este problema de identificabilidad. Y por lo tanto, si el efecto del suavizado tiene que sumar cero del rango de la covariable, 0 está en la media general de la respuesta en la escala del predictor lineal.