I'm using a set of points which go from (-5,5)
to (0,0)
and (5,5)
in a "symmetric V-shape". I'm fitting a model with lm()
and the bs()
function to fit a "V-shape" spline:
lm(formula = y ~ bs(x, degree = 1, knots = c(0)))
I get the "V-shape" when I predict outcomes by predict()
and draw the prediction line. But when I look at the model estimates coef()
, I see estimates that I don't expect.
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.93821 0.16117 30.639 1.40e-09 ***
bs(x, degree = 1, knots = c(0))1 -5.12079 0.24026 -21.313 2.47e-08 ***
bs(x, degree = 1, knots = c(0))2 -0.05545 0.21701 -0.256 0.805
I would expect a -1
coefficient for the first part and a +1
coefficient for the second part. Must I interpret the estimates in a different way?
If I fill the knot in the lm()
function manually than I get these coefficients:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.18258 0.13558 -1.347 0.215
x -1.02416 0.04805 -21.313 2.47e-08 ***
z 2.03723 0.08575 23.759 1.05e-08 ***
That's more like it. Z's (point of knot) relative change to x is ~ +1
I want to understand how to interpret the bs()
result. I've checked, the manual and bs
model prediction values are exact the same.