Saltar al contenido

interpretación de la salida de la función R bs () (matriz base B-spline)

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")

ingrese la descripción de la imagen aquí

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *