22  ¿Cómo obtener la matriz \(\boldsymbol{X}\) y el vector \(\boldsymbol{y}\)?

En este corto capítulo se muestra cómo crear la matriz \(\boldsymbol{X}\) y el vector \(\boldsymbol{y}\) necesario para aplicar varios modelos predictivos.

Las funciones model.matrix, model.frame y model.extract son útiles para obtener la matriz \(\boldsymbol{X}\) y el vector \(\boldsymbol{y}\). A continuación se muestra un ejemplo ilustrativo.

Ejemplo

Usando la base de datos de abajo construya la matriz \(\boldsymbol{X}\) y el vector \(\boldsymbol{y}\) para crear un modelo de regresión que explique la variable Precio del apartamento en función del Area del apartamento y Pisci. Tome el nivel Sin de la variable Pisci como nivel de referencia.

Solución

Lo primero es crear el marco de datos así:

datos <- data.frame(Precio = c(12, 15, 25, 11, 16, 7),
                    Area = c(3, 4, 1, 6, 5, 3), 
                    Pisci = factor(x=c('Grande', 'Sin', 'Pequena', 'Pequena', 'Sin', 'Grande'),
                                   levels=c('Sin','Pequena','Grande')))
datos
  Precio Area   Pisci
1     12    3  Grande
2     15    4     Sin
3     25    1 Pequena
4     11    6 Pequena
5     16    5     Sin
6      7    3  Grande

Luego usamos la función model.matrix para obtener \(\boldsymbol{X}\).

form <- formula(Precio ~ Area + Pisci)
X <- model.matrix(object=form, data=datos)
X
  (Intercept) Area PisciPequena PisciGrande
1           1    3            0           1
2           1    4            0           0
3           1    1            1           0
4           1    6            1           0
5           1    5            0           0
6           1    3            0           1
attr(,"assign")
[1] 0 1 2 2
attr(,"contrasts")
attr(,"contrasts")$Pisci
[1] "contr.treatment"

Luego usamos las funciones model.frame y model.extract para obtener el vector \(\boldsymbol{y}\).

mf <- model.frame(Precio ~ Area + Pisci, data=datos)
y <- model.extract(mf, "response")
y
 1  2  3  4  5  6 
12 15 25 11 16  7