ACP non-paramétrique

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Paul Robert
Messages : 4
Enregistré le : 14 Mai 2008, 10:08

ACP non-paramétrique

Messagepar Paul Robert » 14 Mai 2008, 12:24

Bonjour,

j'ai un jeu de données qualitatives avec une 40ène de variables que je veux traité par une ACP. Le problème est que mes données de base sont très hétérogènes, et ne suivent pas une distribution normale.
je pense que pour avoir des résultats plus robustes il serait souhaitables de transformer le tableau initial des données en tableau de rangs avant une ACP.
Dans ces conditions, l'observation i de la variable j consiste en un classement qij. La distance entre deux variables j et j' sera:

d2(j,j')=6/[n(n-1)(n+1)] *somme(de i=1 à n)(qij-qij')2

Que pensez-vous de cette méthode?
Y-a-t-il une fonction dans R qui permette d'effectuer cette transformation?

Merci beaucoup

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 14 Mai 2008, 12:54

Il me semble que l'ACP est faite pour des variables continues. Pour les variables qualitatives, il y a des méthodes adaptées telles que l'ACM, hill & smith ou analyse mixte (les deux dernières traitant plutôt le cas de mélanges de variables continues et qualitatives).
Par ailleurs, je ne crois pas que la normalité des données soit un prérequis à l'ACP (d'autant plus que les variables sont normées au cours de l'analyse si on choisit les options adéquates)

Nicolas

Paul Robert
Messages : 4
Enregistré le : 14 Mai 2008, 10:08

Messagepar Paul Robert » 14 Mai 2008, 13:03

Oups désolé j'ai fait une erreur, c'est bien des variables quantitatives.

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 14 Mai 2008, 13:13

Alors pas de problème, vous pouvez faire l'ACP avec la fonction dudi.pca par exemple. A mon avis, nul besoin de transformation préalable. Il faut surtout que vous ayez un nombre de ligne important par rapport au nombre de variable, c'est préférable.

Nicolas.

P.S: Et moi aussi j'ai dit une bêtise...il ne fallait pas parler de variables continues mais quantitatives :)

Paul Robert
Messages : 4
Enregistré le : 14 Mai 2008, 10:08

Messagepar Paul Robert » 14 Mai 2008, 13:23

:)

je pense en effet que les résultats seront proches entre une ACP sur le jeu de données initiales et transformé en rangs. Mais j'ai tout de même beaucoup de variables (45) par rapport au nombre de lignes (50éne). De plus, le fait que mes variables soient très hétérogènes et n'ayant pas de distribution normale, j'aimerais visualiser les liens entre ces variables d'une manière plus robuste.
Avez-vous une autre idée que la transformation en tableau de rangs?

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 14 Mai 2008, 13:52

le tableau normé ne donne t'il pas des distributions plus satisfaisantes ?

voir la fonction scale()

Nicolas

Tillard
Messages : 87
Enregistré le : 17 Déc 2004, 10:32

Messagepar Tillard » 14 Mai 2008, 14:26

Bonjour
vous confondez "normé" et "normalisé"

Code : Tout sélectionner

X <- c(rnorm(1000,-20,2), rnorm(1000,20,20)) / 20
hist(X)
hist(scale(X), breaks=50)

ni la distribution de X ni la distribution de scale(X) ne suivent une distribution normale

scale ne normalise pas les données
cordialement
Emmanuel Tillard
UMR ERRC (Elevage des Ruminants en Regions Chaudes)
CIRAD - St PIERRE (La Réunion)
tel: 02 62 49 92 54

Paul Robert
Messages : 4
Enregistré le : 14 Mai 2008, 10:08

Messagepar Paul Robert » 14 Mai 2008, 14:52

l'ACP que J'ai effectué est centrée normée, mais les données ne suivant pas une "distribution normale", j'aimerais trouver un autre moyen d'analyse pour gagner en robustesse.
Ma première idée était de transformé mon jeu de données initial(quantitatif) en tableau de rangs.
Ma question était donc, cela vous semble-t-il pertinent, et si non connaissez-vous une méthode d'analyse non-paramétrique pour rendre compte de la liaison entre les variables?

Merci beaucoup

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 14 Mai 2008, 16:44

ce qui me gêne dans le fait de transformer en rang c'est d'une part la perte d'information que cela entraine et ensuite si vous voulez faire une ACP sur des variables qui ont été rendues discrètes, je crois que ce n'est pas approprié ou alors je n'ai pas bien compris ce que vous voulez faire de ces variables en rang.
Il faudrait peut être réaliser des test de corrélation simples type rang de spearman pour identifier les variables corrélées ?
Et je ne saisis pas bien l'intérêt d'avoir des variables qui suivent une loi normale...désolé :)

vous confondez "normé" et "normalisé"


non je sous entendais juste que parfois le fait de normer une variable peu permettre (plus par hasard peut être) d'obtenir une variable normalisée.

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 14 Mai 2008, 20:49

Nicolas Péru a écrit :Il faut surtout que vous ayez un nombre de ligne important par rapport au nombre de variable, c'est préférable.


Non, non: pas de contrainte à ce niveau (on n'est pas en régression...). Le nombre de colonnes peut même être supérieur au nombre de lignes.

Renaud

Tillard
Messages : 87
Enregistré le : 17 Déc 2004, 10:32

Messagepar Tillard » 14 Mai 2008, 21:20

Des exemples d'ACP sur rang sont traités dans ce doc
http://pbil.univ-lyon1.fr/R-beta/pdf/tdr61.pdf
Emmanuel Tillard

UMR ERRC (Elevage des Ruminants en Regions Chaudes)

CIRAD - St PIERRE (La Réunion)

tel: 02 62 49 92 54

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 15 Mai 2008, 08:00

Renaud Lancelot a écrit :
Nicolas Péru a écrit :Il faut surtout que vous ayez un nombre de ligne important par rapport au nombre de variable, c'est préférable.


Non, non: pas de contrainte à ce niveau (on n'est pas en régression...). Le nombre de colonnes peut même être supérieur au nombre de lignes.

Renaud


Disons que ça doit dépendre des écoles, puisque j'ai appris la même chose que Nicolas ...

Maxime

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 15 Mai 2008, 08:22

Renaud Lancelot a écrit :
Nicolas Péru a écrit :Il faut surtout que vous ayez un nombre de ligne important par rapport au nombre de variable, c'est préférable.


Non, non: pas de contrainte à ce niveau (on n'est pas en régression...). Le nombre de colonnes peut même être supérieur au nombre de lignes.

Renaud


???

Le calcul des corrélation entre variable n'est il pas alors un peu bancal ? Je ne veux pas lancer une discussion statistique mais là j'avoue que ça me turlupine un peu. Il ne m'a jamais été dit que l'ACP ne pouvait pas se faire sans un rapport nb ligne/nb de colonne important mais que dans le cas contraire il ne fallait pas accorder une grande confiance aux résultats obtenus...et jusqu'à présent, avec mon niveau de compréhension des stats :) cela m'est toujours apparu assez logique, vus les calculs intrinsèque à l'ACP...si vous avez des références sur la question je suis intéressé et je m'arrête de toute façon là pour cette question :)

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 15 Mai 2008, 11:33

Vraiment à la bourre ces jours-ci et pas le temps de regarder (mais j'y penserai). Pensez à l'AFC et à la notion de dualité des analyses lignes et colonnes. Ou penser à une matrice 10000 lignes * 100 colonnes. Vous aurez des résultats comparables en faisant l'ACP sur cette matrice, ou sur sa transposée (et merci de me dire si je pars en vrille ;-)).

Renaud

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 15 Mai 2008, 14:46

Re,

en effet l'AFC est symétrique mais pas l'ACP, dans l'ACP on cherche surtout à ordonner les lignes en fonction des colonnes et non l'inverse. Et faire une ACP sur une matrice ou sa transposé ne donne pas du tout les mêmes résultats.

Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité