Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Prétraitement CAH --> ACP sur beaucoup de variables
2 participants
Page 1 sur 1
Prétraitement CAH --> ACP sur beaucoup de variables
Bonjour à tous,
Je suis chargé de réaliser une typologie (avec le logiciel R) à partir d'une base de données recensant 405 individus et près de 150 variables (la grande majorité sont de nature quantitative).
J'ai pour optique d'isoler les variables quantitatives et ainsi réaliser une ACP avec en variables supplémentaires les quelques variables quali intéressantes.
En premier lieu je me pose cette question :
- Est-il préférable de sélectionner les indicateurs pertinents avant de réaliser l'ACP ou au contraire il vaut mieux lancer l'ACP sur toutes les variables quanti (110 variables) ?
Pour l'instant j'ai opté pour la deuxième solution à savoir faire tourner l'ACP sur toute la base et retenir les k composantes principales (où la valeur propre est > 1 ce qui correspond à 29 CP : 75% inertie). Je retire les dernières composantes correspondant au "bruit statistique". Effectivement, j'ai appris qu'il était dans notre intérêt de garder un maximum de variables pour perdre le moins d'information possible...
Mais dans ce cas, j'ai des doutes sur l'interprétation de cette ACP ... ne perd t-elle pas du sens ?
Comment l'interpréter ? Caractériser uniquement le premier plan factoriel (celui-ci représente que 21% de l'inertie) ? De plus avec autant de variables certaines sorties deviennent illisibles (notamment le cercle des corrélations).
(Au vu de la matrice des corrélations, mes variables présentent quelques corrélations entre elles)
Je comptais par la suite lancé ma CAH sur les 29 composantes principales retenus précédemment.
Si quelqu'un peut éclairer ma lanterne je suis tout ouïe !
Cordialement
Je suis chargé de réaliser une typologie (avec le logiciel R) à partir d'une base de données recensant 405 individus et près de 150 variables (la grande majorité sont de nature quantitative).
J'ai pour optique d'isoler les variables quantitatives et ainsi réaliser une ACP avec en variables supplémentaires les quelques variables quali intéressantes.
En premier lieu je me pose cette question :
- Est-il préférable de sélectionner les indicateurs pertinents avant de réaliser l'ACP ou au contraire il vaut mieux lancer l'ACP sur toutes les variables quanti (110 variables) ?
Pour l'instant j'ai opté pour la deuxième solution à savoir faire tourner l'ACP sur toute la base et retenir les k composantes principales (où la valeur propre est > 1 ce qui correspond à 29 CP : 75% inertie). Je retire les dernières composantes correspondant au "bruit statistique". Effectivement, j'ai appris qu'il était dans notre intérêt de garder un maximum de variables pour perdre le moins d'information possible...
Mais dans ce cas, j'ai des doutes sur l'interprétation de cette ACP ... ne perd t-elle pas du sens ?
Comment l'interpréter ? Caractériser uniquement le premier plan factoriel (celui-ci représente que 21% de l'inertie) ? De plus avec autant de variables certaines sorties deviennent illisibles (notamment le cercle des corrélations).
(Au vu de la matrice des corrélations, mes variables présentent quelques corrélations entre elles)
Je comptais par la suite lancé ma CAH sur les 29 composantes principales retenus précédemment.
Si quelqu'un peut éclairer ma lanterne je suis tout ouïe !
Cordialement
Coxtox- Nombre de messages : 21
Date d'inscription : 17/05/2016
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Bien que très utilisé dans la littérature, le critère de Kaiser (conserver les dimensions associées à une valeur propre supérieure à 1) n'est pas un bon critère de choix quand le rapport entre le nombre de d'individus et de variables oscille autour de l'unité (ici, de l'ordre de 4). Pour s'en convaincre :
Il y a environ 50 valeurs propres supérieures à 1 tandis que l'analyse parallèle de Horn conduit à n'en retenir qu'une et le critère de Karlis/Saporta/Spinaki deux à trois.
Donc, soit je commencerais par une sélection de variable soit j'utiliserai une ACP robuste.
- Code:
require( MASS)
donnees <- mvnorm( 405, mu=rep( 0, 110), Sigma=diag( 110)
eigen( cor( donnees))$values
# Analyse parallèle de Horn
library( paran)
paran( donnees, graph=TRUE)
# Critere de Karlis-Saporta-Spinaki
1 + 2 * sqrt( (Nb.variables - 1) / (Nb.lignes - 1))
Il y a environ 50 valeurs propres supérieures à 1 tandis que l'analyse parallèle de Horn conduit à n'en retenir qu'une et le critère de Karlis/Saporta/Spinaki deux à trois.
Donc, soit je commencerais par une sélection de variable soit j'utiliserai une ACP robuste.
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Hey ! Merci pour cette réponse.
Je vais donc effectuer de la sélection d'indicateurs avant d'effectuer mon ACP. Je comparerai dans un second temps les résultats avec l'ACP robuste si le temps me le permet.
L'ACP robuste permet de ne pas donner un poids élevé aux outliers c'est bien cela ? La méthode ne m'est pas familière ! L'interprétation reste la même que pour une ACP normale ?
Cordialement
Je vais donc effectuer de la sélection d'indicateurs avant d'effectuer mon ACP. Je comparerai dans un second temps les résultats avec l'ACP robuste si le temps me le permet.
L'ACP robuste permet de ne pas donner un poids élevé aux outliers c'est bien cela ? La méthode ne m'est pas familière ! L'interprétation reste la même que pour une ACP normale ?
Cordialement
Coxtox- Nombre de messages : 21
Date d'inscription : 17/05/2016
Re: Prétraitement CAH --> ACP sur beaucoup de variables
L'ACP robuste va permettre de traiter le problème d'indétermination des composantes, c'est-à-dire que grossièrement elle ne prendra en compte que les variables qui sont assez corrélées entre elles alors que le fait que le rapport entre nombre d'individus et de variables est faible crée des corrélations parasites. C'est un peu comme si elle ne prenait en compte que les corrélations significatives mais le faire directement, c'est-à-dire mettre à zéro les corrélations non significatives, peut conduire à une matrice qui n'est plus une matrice définie positive, ce qui entrainera des valeurs propres négatives.
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Bonjour,
Je reviens à la charge ! Alors j'ai effectué ma sélection d'indicateurs et je suis passé de 150 variables à 50 variables.
Cependant les résultats fournis en particulier le cercle des corrélations est difficilement interprétable même en raccourcissant le libellé des variables .. (je travaille avec FactomineR).
Je voulais savoir si il y avait un moyen pour que l'on puisse bien associer chaque flèche au libellé de la variable. Dans mon cas, il est difficile de savoir quelle flèche appartient à quel libellé.
Sinon pour réduire davantage le nombre de variables, est-ce que se baser sur la matrice des corrélations et retirer les variables corrélées aux autres est une bonne méthode. En procédant de cette manière, le pourcentage d'inertie sur les premiers axes factoriels sera encore plus faible qu'il ne l'est à présent ? (je précise que j'ai seulement 33% d'inertie sur le premier plan factoriel)
Si quelqu'un à une idée je suis preneur !
Cdlt
Je reviens à la charge ! Alors j'ai effectué ma sélection d'indicateurs et je suis passé de 150 variables à 50 variables.
Cependant les résultats fournis en particulier le cercle des corrélations est difficilement interprétable même en raccourcissant le libellé des variables .. (je travaille avec FactomineR).
Je voulais savoir si il y avait un moyen pour que l'on puisse bien associer chaque flèche au libellé de la variable. Dans mon cas, il est difficile de savoir quelle flèche appartient à quel libellé.
Sinon pour réduire davantage le nombre de variables, est-ce que se baser sur la matrice des corrélations et retirer les variables corrélées aux autres est une bonne méthode. En procédant de cette manière, le pourcentage d'inertie sur les premiers axes factoriels sera encore plus faible qu'il ne l'est à présent ? (je précise que j'ai seulement 33% d'inertie sur le premier plan factoriel)
Si quelqu'un à une idée je suis preneur !
Cdlt
Coxtox- Nombre de messages : 21
Date d'inscription : 17/05/2016
Re: Prétraitement CAH --> ACP sur beaucoup de variables
l'argument lim.cos2 de la fonction plot permet de limiter le nombre de variables représentées. Il y a aussi l'argument select.
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Impec Merci ! j'ai trouvé mon bonheur en attribuant une couleur à chaque flèche et en utilisant lim.cos2 :
Une autre question par rapport à la CAH : j'utilise la fonction HCPC ci -dessous
Si quelqu'un connait l'origine de cette erreur ? Elle s'affiche une fois que je coupe le dendrogramme.
Cdlt,
- Code:
plot.PCA(res.pca, axes=c(1, 2), choix="var", col.var=1:52, col.quanti.sup="blue", label=c("var", "quanti.sup"), new.plot=FALSE, title="Cercle des corrélations",lim.cos2.var=0.2)
Une autre question par rapport à la CAH : j'utilise la fonction HCPC ci -dessous
- Code:
res.hcpc <- HCPC(res.pca,graph=T)
- Code:
Error in lm.wfit(x, y, w, offset = offset, singular.ok = singular.ok, :
NA/NaN/Inf dans 'y'
Si quelqu'un connait l'origine de cette erreur ? Elle s'affiche une fois que je coupe le dendrogramme.
Cdlt,
Coxtox- Nombre de messages : 21
Date d'inscription : 17/05/2016
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Personnellement, je n'ai aucune idée sur l'origine de l'erreur. Pose la question directement à François Husson qui maintient le package et qui est la référence donnée pour cette fonction.
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Ok merci j'ai posé la question. Je vous tiens au courant mais je crois que ça vient du fait que j'ai attribué un identifiant de ligne.
Petite autre question sinon : comme je vous l'ai précisé, je compte effectué une CAH sur composantes principales. Dans mon cas, avec 50 variables je me demandais combien d'axes retenir dans l'ACP pour lancer ma CAH dessus (argument ncp)? Afin d'éliminer le "bruit statistique". Voici l'inertie pour chaque axe :
Petite autre question sinon : comme je vous l'ai précisé, je compte effectué une CAH sur composantes principales. Dans mon cas, avec 50 variables je me demandais combien d'axes retenir dans l'ACP pour lancer ma CAH dessus (argument ncp)? Afin d'éliminer le "bruit statistique". Voici l'inertie pour chaque axe :
- Code:
res.pca <- PCA(test,quali.sup = c(1,27,28,51:52),ncp=13)
eigenvalue percentage of variance cumulative percentage of variance
comp 1 9.00 19.15 19.15
comp 2 7.21 15.33 34.49
comp 3 2.46 5.23 39.71
comp 4 2.25 4.79 44.51
comp 5 2.06 4.38 48.89
comp 6 1.88 4.00 52.89
comp 7 1.60 3.39 56.29
comp 8 1.50 3.18 59.47
comp 9 1.37 2.91 62.38
comp 10 1.30 2.77 65.15
comp 11 1.26 2.68 67.84
comp 12 1.12 2.38 70.22
comp 13 1.03 2.20 72.41
comp 14 0.94 1.99 74.40
comp 15 0.93 1.97 76.38
comp 16 0.87 1.86 78.23
comp 17 0.84 1.79 80.02
comp 18 0.78 1.65 81.67
comp 19 0.76 1.62 83.29
comp 20 0.71 1.50 84.79
comp 21 0.68 1.44 86.24
comp 22 0.67 1.43 87.66
comp 23 0.65 1.38 89.05
comp 24 0.59 1.25 90.30
comp 25 0.56 1.19 91.49
comp 26 0.54 1.15 92.64
comp 27 0.51 1.08 93.72
comp 28 0.46 0.98 94.70
comp 29 0.45 0.95 95.65
comp 30 0.35 0.75 96.40
comp 31 0.34 0.72 97.12
comp 32 0.28 0.60 97.72
comp 33 0.21 0.45 98.17
comp 34 0.20 0.42 98.59
comp 35 0.16 0.34 98.93
comp 36 0.13 0.27 99.20
comp 37 0.08 0.16 99.36
comp 38 0.08 0.16 99.52
comp 39 0.06 0.13 99.65
comp 40 0.06 0.12 99.77
comp 41 0.04 0.09 99.86
comp 42 0.03 0.06 99.91
comp 43 0.02 0.04 99.95
comp 44 0.01 0.03 99.98
comp 45 0.01 0.01 99.99
comp 46 0.00 0.01 100.00
comp 47 0.00 0.00 100.00
Coxtox- Nombre de messages : 21
Date d'inscription : 17/05/2016
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Le choix du nombre de dimension à retenir dépend du rapport entre le nombre de sujets (nombre de lignes) et le nombre de variables beaucoup plus que de la valeur des valeurs propres ou le pourcentage d'inertie représenté par les dimensions retenues.
Je dirais que par expérience, empiriquement et visuellement, le critère de Cattell, connu aussi sous le nom de screeplot, éboulis ou coude est un bon critère. Il m'arrive aussi d'utiliser paran et souvent je prends une dimension de plus que ce que me donne paran. Depuis quelques temps, FactoMineR propose aussi une fonction qui permet d'estimer le nombre de composantes à conserver, estim_ncp, mais je ne l'ai jamais testé.
Je dirais que par expérience, empiriquement et visuellement, le critère de Cattell, connu aussi sous le nom de screeplot, éboulis ou coude est un bon critère. Il m'arrive aussi d'utiliser paran et souvent je prends une dimension de plus que ce que me donne paran. Depuis quelques temps, FactoMineR propose aussi une fonction qui permet d'estimer le nombre de composantes à conserver, estim_ncp, mais je ne l'ai jamais testé.
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Super ! Merci pour ces réponses ! cependant j'ai quelque difficulté pour l'interprétation du graph de l'analyse de Horn. J'obtiens ce graph.
Je pense que celle-ci suggère donc de garder seulement le premier axe. Cela signifie que lorsque je vais effectuer ma CAH je vais préciser ncp=2 de cette manière ? (si on prend un axe de plus) :
J'établis ma CAH à partir du premier plan factoriel (34.5% d'inertie) ?! Cela représente une grande perte d'infos !
Cdlt
Je pense que celle-ci suggère donc de garder seulement le premier axe. Cela signifie que lorsque je vais effectuer ma CAH je vais préciser ncp=2 de cette manière ? (si on prend un axe de plus) :
- Code:
res.pca <- PCA(res.impute$completeObs,ncp=1)
res.hcpc <- HCPC(res.pca,graph=T)
J'établis ma CAH à partir du premier plan factoriel (34.5% d'inertie) ?! Cela représente une grande perte d'infos !
Cdlt
Coxtox- Nombre de messages : 21
Date d'inscription : 17/05/2016
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Non. Si le critère du coude donne entre 3 et 4 axes, l'analyse de Horn suggère de conserver 11 axes, ceux étiquetés "Adjuster Ev (retained)".Je pense que celle-ci suggère donc de garder seulement le premier axe. a écrit:
En fait, il semble à regarder le graphe qu'il y a trois patterns, l'un décrit majoritairement par les 3 / 4 premiers axes, un second décrit par les quatre axes suivants et un dernier assez proche du bruit décrit par les axes suivants.
Il ne faut pas confondre variance d'une donnée (dispersion des valeurs) et information. La dispersion des valeurs est due au fait que la valeur théorique peut avoir une certaine dispersion dans la population et que la mesure de cette valeur est bruitée. Si le bruit est important par rapport à la dispersion naturelle, alors le rapport entre dispersion naturelle et dispersion de la mesure est faible et pourtant filtrer les données pour s'affranchir du bruit ne peut pas être considéré comme une perte d'information. Au contraire ! L'un des rôles de l'ACP est aussi de réaliser un filtrage.Cela représente une grande perte d'infos ! a écrit:
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Merci bcp pour ces précisions ! Clair et concis! Que demander de plus !
Coxtox- Nombre de messages : 21
Date d'inscription : 17/05/2016
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Petite dernière question
Convient-il de retirer de l'étude les variables trop corrélées entre elles ? Par exemple sur mon cercle des corrélation j'ai des variables qui se superposent quasiment. Dois-je garder celle qui contribue le plus à la formation des axes pour éviter la redondance ? (Voir même retirer les variables ayant un faible cos² sur les premiers axes)
Je ne pense pas car c'est justement le but de l'ACP de résumer le maximum d'info sur les premier axes. Mais je préfère avoir un avis sur la question !
Cdlt
Convient-il de retirer de l'étude les variables trop corrélées entre elles ? Par exemple sur mon cercle des corrélation j'ai des variables qui se superposent quasiment. Dois-je garder celle qui contribue le plus à la formation des axes pour éviter la redondance ? (Voir même retirer les variables ayant un faible cos² sur les premiers axes)
Je ne pense pas car c'est justement le but de l'ACP de résumer le maximum d'info sur les premier axes. Mais je préfère avoir un avis sur la question !
Cdlt
Coxtox- Nombre de messages : 21
Date d'inscription : 17/05/2016
Coxtox- Nombre de messages : 21
Date d'inscription : 17/05/2016
Re: Prétraitement CAH --> ACP sur beaucoup de variables
Si les variables sont très corrélées entre elles, cela signifie qu'elles portent la même information en termes de modèle linéaire. Ces colinéarités peuvent poser de gros problème dans certaines analyses, notamment toutes celles basées sur les modèles linéaires (Anova, régression...).
Tu peux négliger toutes les variables dont la somme des cos^2 sur tous les axes que tu conserves est faible car tu peux les considérer comme très bruitées. A toi de déterminer ton seuil.
La notion de superposition est vague. En effet suppose que tu conserves trois axes. La variable V1 a des coordonnées (0.65, 0.65) dans les plans 1 et 2 tandis que V2 a des coordonnes (0.4, 0.4), ces deux variables se 'superposent' dans la plan 1x2. Mais supposons que V1 ait une coordonnée de 0.1 sur l'axe 3 tandis que la coordonnée de V2 sur cet axe est 0.8. Alors ces deux variables ne sont pas redondantes tandis que si la coordonnée de V2 sur l'axe 3 était du même ordre de grandeur que celle de V1, tu pourrais sans doute les considérer comme redondante. Donc dans le premier cas, tu conserve tes deux variables pour des analyses ultérieurs, dans le second cas, tu en élimines une, plutôt celle de somme des cos^2 le plus faible si les analyses ultérieures sont linéaires.
In fine, l'ACP donne des indications. A toi de les interpréter et d'en tirer les bonnes conclusions. Mais si tu as vraiment beaucoup de variables, tu as peut être intérêt à utiliser des méthodes robustes pour les analyses ultérieures.
Tu peux négliger toutes les variables dont la somme des cos^2 sur tous les axes que tu conserves est faible car tu peux les considérer comme très bruitées. A toi de déterminer ton seuil.
La notion de superposition est vague. En effet suppose que tu conserves trois axes. La variable V1 a des coordonnées (0.65, 0.65) dans les plans 1 et 2 tandis que V2 a des coordonnes (0.4, 0.4), ces deux variables se 'superposent' dans la plan 1x2. Mais supposons que V1 ait une coordonnée de 0.1 sur l'axe 3 tandis que la coordonnée de V2 sur cet axe est 0.8. Alors ces deux variables ne sont pas redondantes tandis que si la coordonnée de V2 sur l'axe 3 était du même ordre de grandeur que celle de V1, tu pourrais sans doute les considérer comme redondante. Donc dans le premier cas, tu conserve tes deux variables pour des analyses ultérieurs, dans le second cas, tu en élimines une, plutôt celle de somme des cos^2 le plus faible si les analyses ultérieures sont linéaires.
In fine, l'ACP donne des indications. A toi de les interpréter et d'en tirer les bonnes conclusions. Mais si tu as vraiment beaucoup de variables, tu as peut être intérêt à utiliser des méthodes robustes pour les analyses ultérieures.
Florent Aubry- Nombre de messages : 251
Date d'inscription : 02/11/2015
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum