Solución:
La matriz b
# 1 2 3
# [1,] 0.0000000 0.0000000 0.0000000
# [2,] 0.8270677 0.0000000 0.0000000
# [3,] 0.8198433 0.1801567 0.0000000
# [4,] 0.0000000 0.7286085 0.2713915
# [5,] 0.0000000 0.0000000 1.0000000
es en realidad solo la matriz de los valores de las tres funciones base en cada punto de x
, lo que debería haber sido obvio para mí ya que es exactamente la misma interpretación que para un modelo lineal polinomial. De hecho, dado que los nudos limítrofes son
bknots <- attr(b,"Boundary.knots")
# [1] 0.0 77.4
y los nudos internos son
iknots <- attr(b,"knots")
# 33.33333% 66.66667%
# 13.30000 38.83333
entonces las tres funciones básicas, como se muestra aquí, son:
knots <- c(bknots[1],iknots,bknots[2])
y1 <- c(0,1,0,0)
y2 <- c(0,0,1,0)
y3 <- c(0,0,0,1)
par(mfrow = c(1, 3))
plot(knots, y1, type = "l", main = "basis 1: b1")
plot(knots, y2, type = "l", main = "basis 2: b2")
plot(knots, b3, type = "l", main = "basis 3: b3")
Ahora, considere b[,1]
# 1
# [1,] 0.0000000
# [2,] 0.8270677
# [3,] 0.8198433
# [4,] 0.0000000
# [5,] 0.0000000
Estos deben ser los valores de b1
en x <- c(0.0, 11.0, 17.9, 49.3, 77.4)
. Como una cuestión de hecho, b1
es 0 en knots[1] = 0
y 1 en knots[2] = 13.3000
, lo que significa que en x[2]
(11.0) el valor debe ser 11/13.3 = 0.8270677
, como se esperaba. Del mismo modo, dado que b1
es 0 para knots[3] = 38.83333
, el valor en x[3]
(17.9) debe ser (38.83333-13.3)/17.9 = 0.8198433
. Ya que x[4], x[5] > knots[3] = 38.83333
, b1
hay 0 allí. Se puede dar una interpretación similar para las otras dos columnas.