En principio, le mostramos cómo hacerlo, ilustrado en un conjunto de datos más pequeño con solo 10 predictores:
# Hacer datos falsos
mydata = as.data.frame (matriz (rnorm (1100), 100))
nombres (mydata) = c (paste0 ("x", 1:10), "y")
# Forme una matriz que contenga todas las columnas predictoras pero no y
x = as.matrix (mydata [, 1:10])
# Utilice poly () para formar todas las interacciones bidireccionales y términos de segundo orden
x2 = poli (x, grado = 2, crudo = VERDADERO)
# Volver a guardar como un marco de datos que incluye y
mydata2 = as.data.frame (cbind (x2, y = mydata $ y))
# Ajustar el modelo lineal completo
lm2 = lm (y ~., datos = mydata2)
Sin embargo, tiene 100 predictores. En mi experiencia, con más de 10-15 predictores, R generalmente no puede asignar suficiente memoria para la matriz que contiene cada interacción bidireccional. Obtendrá errores inútiles o R simplemente fallará.
Si es así, considere si realmente necesita todas interacciones bidireccionales. Tal vez solo un subconjunto tenga sentido. Por ejemplo, puede usar poly ()
como se indicó anteriormente para formar todas las interacciones bidireccionales dentro de un subconjunto de x, luego nuevamente para formar interacciones entre otro subconjunto de x, pero no tener interacciones entre esos subconjuntos .