Reducir el número de variables en una regresión múltiple.

9

Tengo un gran conjunto de datos que consta de los valores de varios cientos de variables financieras que podrían usarse en una regresión múltiple para predecir el comportamiento de un fondo indexado a lo largo del tiempo. Me gustaría reducir el número de variables a diez más o menos y al mismo tiempo conservar la mayor potencia predictiva posible. Agregado: El conjunto reducido de variables debe ser un subconjunto del conjunto de variables original para preservar el significado económico de las variables originales. Así, por ejemplo, no debería terminar con combinaciones lineales o agregados de las variables originales.

Algunas ideas (probablemente ingenuas) sobre cómo hacer esto:

  1. Realice una regresión lineal simple con cada variable y elija las diez con los valores más grandes . Por supuesto, no hay garantía de que las diez mejores variables individuales combinadas sean el mejor grupo de diez.R2
  2. Realice un análisis de componentes principales e intente encontrar las diez variables originales con las asociaciones más grandes con los primeros ejes principales.

No creo que pueda realizar una regresión jerárquica porque las variables no están realmente anidadas. Probar todas las combinaciones posibles de diez variables es computacionalmente inviable porque hay demasiadas combinaciones.

¿Existe un enfoque estándar para abordar este problema de reducir el número de variables en una regresión múltiple?

Parece que este sería un problema suficientemente común que habría un enfoque estándar.

Una respuesta muy útil sería aquella que no solo menciona un método estándar, sino que también ofrece una visión general de cómo y por qué funciona. Alternativamente, si no hay un enfoque estándar, sino más bien múltiples con diferentes fortalezas y debilidades, una respuesta muy útil sería una que discuta sus pros y sus contras.

El comentario de whuber a continuación indica que la solicitud en el último párrafo es demasiado amplia. En cambio, aceptaría como buena respuesta una lista de los principales enfoques, tal vez con una breve descripción de cada uno. Una vez que tenga los términos, puedo desenterrar los detalles de cada uno.

Mike Spivey
fuente
1
Mike, puedes navegar por el Capítulo 3 de ESL , si no estás familiarizado con él. La página en el enlace proporcionado apunta a un PDF legal gratuito del texto.
cardenal
¿Puede aclarar si está buscando mantener solo, por ejemplo, diez de las variables originales o también le interesarían los métodos que usan un pequeño subconjunto de combinaciones lineales de las variables originales (esta última es algo así como una regresión tradicional de componentes principales te daría)
cardenal
3
Esta respuesta da un ejemplo concreto de uno de los (muchos) problemas con el método 1. Un comentario de @cardinal a la respuesta de Frank Harrell llega al quid de la cuestión con el método 2: cualquier cosa que haga solo con las variables independientes, sin considerar su relaciones con la variable dependiente, los riesgos son irrelevantes o peores. En cuanto a las respuestas estándar o "canónicas", pedir una aquí es un poco como pedir una discusión de todos los métodos para encontrar puntos racionales en curvas elípticas, con sus ventajas y desventajas :-).
whuber
2
Como señalaron otros aquí, el método 1 conducirá a problemas. Para un tratamiento intuitivamente accesible de por qué es cierto / una descripción de otro de los problemas con este enfoque, es posible que desee leer esto: stats.stackexchange.com/questions/20836/…
gung - Reinstate Monica
1
Gracias a Whuber y Gung por las explicaciones de los problemas con la primera idea.
Mike Spivey

Respuestas:

6

El método 1 no funciona. El método 2 tiene esperanza dependiendo de cómo lo hagas. Es mejor ingresar los componentes principales en orden de variación descendente explicado. Un enfoque más interpretable es hacer un agrupamiento variable, luego reducir cada grupo a un puntaje único (sin usar Y), luego ajustar un modelo con los puntajes del grupo.

Frank Harrell
fuente
+1. Por "agrupamiento variable", se refiere al análisis factorial, esa es una estrategia que podría usar (también antes de mirar y). Pienso en el análisis de conglomerados como agrupación de observaciones en lugar de variables, pero solo tengo un conocimiento superficial de los análisis de conglomerados.
gung - Restablece a Monica
1
No parece que haya ninguna razón a priori para creer que las direcciones de variación máxima de los predictores estén necesariamente altamente correlacionadas con la respuesta . Quizás me equivoque o haya entendido mal su comentario. ¿Podrías aclarar?
cardenal
1
Además, parece que el OP no está describiendo (del todo) la regresión de componentes principales en su Método 2.
cardenal
No estaba completamente claro en mi publicación original, pero necesito un subconjunto de las variables originales. Entonces, un análisis directo de componentes principales o agrupamiento no es realmente lo que busco.
Mike Spivey
1
La agrupación de variables está relacionada con el análisis factorial pero es más simple. Las variables se agrupan en cómo se correlacionan entre sí. Consulte la varclusfunción en el Hmiscpaquete R o PROC VARCLUS en SAS. La reducción de datos puede ayudar con el subconjunto de variables si ejerce un poco de precaución; puede eliminar un grupo completo si su valor es 0.3. Con los componentes principales, existen técnicas como la reducción de la batería, en las que esencialmente aproxima las PC con un subconjunto de sus variables constituyentes. P
Frank Harrell
3

En el capítulo 5 de Data Mining with R, el autor muestra algunas formas de elegir los predictores más útiles. (En el contexto de la bioinformática, ¡donde cada fila de muestra tiene más de 12,000 columnas!)

Primero usa algunos filtros basados ​​en la distribución estadística. Por ejemplo, si tiene media docena de predictores, todos con una media y SD similares, entonces puede salirse con la suya con solo uno de ellos.

Luego muestra cómo usar un bosque aleatorio para encontrar cuáles son los predictores más útiles. Aquí hay un ejemplo abstracto autónomo. Puedes ver que tengo 5 buenos predictores, 5 malos. El código muestra cómo mantener los mejores 3.

set.seed(99)

d=data.frame(
  y=c(1:20),
  x1=log(c(1:20)),
  x2=sample(1:100,20),
  x3=c(1:20)*c(11:30),
  x4=runif(20),
  x5=-c(1:20),
  x6=rnorm(20),
  x7=c(1:20),
  x8=rnorm(20,mean=100,sd=20),
  x9=jitter(c(1:20)),
  x10=jitter(rep(3.14,20))
  )

library(randomForest)
rf=randomForest(y~.,d,importance=T)
print(importance(rf))
#         %IncMSE IncNodePurity
# x1  12.19922383    130.094641
# x2  -1.90923082      6.455262
# ...

i=importance(rf)
best3=rownames(i)[order(i[,"%IncMSE"],decreasing=T)[1:3]]
print(best3)
#[1] "x1" "x5" "x9"

reduced_dataset=d[,c(best3,'y')]

El último enfoque del autor es utilizar un algoritmo de agrupamiento jerárquico para agrupar predictores similares en, por ejemplo, 30 grupos. Si desea 30 predictores diversos, elija uno de cada uno de esos 30 grupos, al azar.

Aquí hay un código, usando los mismos datos de muestra que el anterior, para elegir 3 de las 10 columnas:

library(Hmisc)
d_without_answer=d[,names(d)!='y']
vc=varclus(as.matrix(d_without_answer))
print(cutree(vc$hclust,3))
# x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 
#  1   2   1   3   1   1   1   2   1   3 

Mis datos de muestra no se ajustan a este enfoque en absoluto, porque tengo 5 buenos predictores y 5 que son solo ruido. Si los 10 fueron predictores poco correlacionado con y, y tenía una buena oportunidad de ser aún mejor cuando se usan juntos (que es muy posible en el ámbito financiero), entonces este puede ser un enfoque bien.

Darren Cook
fuente
2

Puede considerar usar un método como LASSO que regularice los mínimos cuadrados seleccionando una solución que minimice la norma del vector de parámetros. Resulta que esto tiene el efecto en la práctica de minimizar el número de entradas distintas de cero en el vector de parámetros. Aunque LASSO es popular en algunos círculos estadísticos, se han considerado muchos otros métodos relacionados en el mundo de la detección de compresión.

Brian Borchers
fuente
Gracias. Buscaré LASSO. (Parece que también se menciona en las referencias cardinales de referencia.)
Mike Spivey