Réduire le nombre de variables dans une régression multiple


9

J'ai un grand ensemble de données composé des valeurs de plusieurs centaines de variables financières qui pourraient être utilisées dans une régression multiple pour prédire le comportement d'un fonds indiciel au fil du temps. Je voudrais réduire le nombre de variables à une dizaine tout en conservant autant de pouvoir prédictif que possible. Ajouté: L'ensemble réduit de variables doit être un sous-ensemble de l'ensemble de variables d'origine afin de préserver la signification économique des variables d'origine. Ainsi, par exemple, je ne devrais pas me retrouver avec des combinaisons linéaires ou des agrégats des variables d'origine.

Quelques réflexions (probablement naïves) sur la façon de procéder:

  1. Effectuez une régression linéaire simple avec chaque variable et choisissez les dix avec les plus grandes valeurs . Bien sûr, rien ne garantit que les dix meilleures variables individuelles combinées constitueraient le meilleur groupe de dix.R2
  2. Effectuez une analyse des composants principaux et essayez de trouver les dix variables d'origine avec les associations les plus importantes avec les premiers axes principaux.

Je ne pense pas pouvoir effectuer une régression hiérarchique car les variables ne sont pas vraiment imbriquées. Essayer toutes les combinaisons possibles de dix variables est impossible à calculer car il y a trop de combinaisons.

Existe-t-il une approche standard pour résoudre ce problème de réduction du nombre de variables dans une régression multiple?

Il semble que ce serait un problème suffisamment courant pour qu'il y ait une approche standard.

Une réponse très utile serait celle qui non seulement mentionne une méthode standard, mais donne également un aperçu de comment et pourquoi cela fonctionne. Alternativement, s'il n'y a pas une approche standard mais plutôt plusieurs avec des forces et des faiblesses différentes, une réponse très utile serait celle qui discute de leurs avantages et inconvénients.

Le commentaire de whuber ci-dessous indique que la demande du dernier paragraphe est trop large. Au lieu de cela, j'accepterais comme bonne réponse une liste des principales approches, peut-être avec une très brève description de chacune. Une fois que j'ai les termes, je peux creuser moi-même les détails de chacun.


1
Mike, vous pouvez parcourir le chapitre 3 d' ESL , si vous ne le connaissez pas. La page sur le lien fourni pointe vers un PDF gratuit et légal du texte.
cardinal

Pouvez-vous préciser si vous cherchez à ne conserver, disons, que dix des variables d'origine ou si vous êtes également intéressé par des méthodes qui utilisent un petit sous-ensemble de combinaisons linéaires des variables d'origine (cette dernière étant quelque chose comme une régression traditionnelle à composantes principales vous donnerait).
Cardinal

3
Cette réponse donne un exemple concret de l'un des (nombreux) problèmes avec la méthode 1. Un commentaire de @cardinal à la réponse de Frank Harrell va au cœur du problème avec la méthode 2: tout ce que vous faites avec les seules variables indépendantes, sans considérer leur les relations avec la variable dépendante, risquent d'être hors de propos ou pire. En ce qui concerne les réponses standard ou "canoniques", en demander une ici, c'est un peu comme demander une discussion de toutes les méthodes pour trouver des points rationnels sur les courbes elliptiques, avec leurs avantages et leurs inconvénients :-).
whuber

2
Comme indiqué par d'autres ici, la méthode 1 entraînera des problèmes. Pour un traitement intuitivement accessible de pourquoi c'est vrai / une description d'un autre des problèmes avec cette approche, vous pouvez lire ceci: stats.stackexchange.com/questions/20836/…
gung -

1
Merci à whuber et gung pour les explications des problèmes avec la première idée.
Mike Spivey

Réponses:



6

La méthode 1 ne fonctionne pas. La méthode 2 a de l'espoir selon la façon dont vous le faites. Il est préférable d'entrer les principaux composants dans un ordre décroissant de variance expliqué. Une approche plus interprétable consiste à effectuer un clustering variable, puis à réduire chaque cluster à un seul score (sans utiliser Y), puis à ajuster un modèle avec les scores du cluster.


+1. Par "regroupement de variables", voulez-vous dire l' analyse factorielle - c'est une stratégie que je pourrais utiliser (également avant de regarder y). Je pense à l'analyse de grappes comme regroupant des observations plutôt que des variables, mais je n'ai qu'une connaissance superficielle des analyses de grappes.
gung - Reinstate Monica

1
Il ne semble pas y avoir de raison a priori de croire que les directions de variance maximale des prédicteurs sont nécessairement fortement corrélées à la réponse . Je me trompe peut-être ou j'ai mal compris votre commentaire. Pourriez-vous clarifier?
Cardinal

1
En outre, il semble que l'OP ne décrive pas (tout à fait) la régression des composants principaux dans sa méthode 2.
Cardinal

Je n'étais pas complètement clair dans mon message d'origine, mais j'ai besoin d'un sous - ensemble des variables d'origine. Une analyse directe des composants principaux ou un regroupement n'est donc pas vraiment ce que je recherche.
Mike Spivey

1
Le regroupement de variables est lié à l'analyse factorielle mais est plus simple. Les variables sont regroupées en fonction de leur corrélation. Voir la varclusfonction dans le Hmiscpackage R , ou PROC VARCLUS dans SAS. La réduction des données peut aider à sous-définir les variables si vous faites preuve d'un peu de prudence; vous pouvez supprimer un cluster entier si sa valeur est de 0,3. Avec les principaux composants, il existe des techniques telles que la réduction de la batterie où vous approximez essentiellement les PC avec un sous-ensemble de leurs variables constitutives. P
Frank Harrell

3

Dans le chapitre 5 de l'exploration de données avec R, l'auteur montre quelques façons de choisir les prédicteurs les plus utiles. (Dans le contexte de la bioinformatique, où chaque ligne d'échantillon a plus de 12 000 colonnes!)

Il utilise d'abord des filtres basés sur la distribution statistique. Par exemple, si vous avez une demi-douzaine de prédicteurs ayant tous une moyenne et un écart-type similaires, vous pouvez vous en tirer avec un seul d'entre eux.

Il montre ensuite comment utiliser une forêt aléatoire pour trouver celles qui sont les prédicteurs les plus utiles. Voici un exemple abstrait autonome. Vous pouvez voir que j'ai 5 bons prédicteurs, 5 mauvais. Le code montre comment garder le meilleur 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')]

La dernière approche de l'auteur consiste à utiliser un algorithme de regroupement hiérarchique pour regrouper des prédicteurs similaires en, disons, 30 groupes. Si vous voulez 30 prédicteurs divers, choisissez-en un au hasard dans chacun de ces 30 groupes.

Voici du code, en utilisant les mêmes exemples de données que ci-dessus, pour choisir 3 des 10 colonnes:

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 

Mes données d'échantillon ne conviennent pas du tout à cette approche, car j'ai 5 bons prédicteurs et 5 qui ne sont que du bruit. Si les 10 prédicteurs étaient légèrement corrélés avec y, et avaient de bonnes chances d'être encore meilleurs lorsqu'ils sont utilisés ensemble (ce qui est tout à fait possible dans le domaine financier), alors cela peut être une bonne approche.


2

Vous pourriez envisager d'utiliser une méthode comme LASSO qui régularise les moindres carrés en sélectionnant une solution qui minimise la seule norme du vecteur de paramètres. Il s'avère que cela a pour effet en pratique de minimiser le nombre d'entrées non nulles dans le vecteur de paramètres. Bien que LASSO soit populaire dans certains cercles statistiques, de nombreuses autres méthodes connexes ont été envisagées dans le monde de la détection compressive.


Merci. Je vais chercher LASSO. (Il semble que cela soit aussi mentionné dans le cardinal de référence.)
Mike Spivey
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.