ACP avec package mva

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

Brice Mora
Messages : 14
Enregistré le : 05 Nov 2007, 23:13

ACP avec package mva

Messagepar Brice Mora » 10 Juin 2008, 12:33

Bonjour,

j'ai sorti mes vieux cours sur R pour utiliser la fct prcomp pour faire une ACP. Avant il fallait charger le package mva qui visiblement a été fusionné avec le package stats. Là n'est pas le problème. Nous avions ensuite l'habitude d'utiliser la fct coocircle pour représenter les corrélations entre variables. J'ai retrouvé la fct ici :
http://pcm1.e.ujf-grenoble.fr:8080/cours_if/m_math/Ad-stat/TP3/coocircle.R
mais je ne sais pas comment l'utiliser, cad où la placer (et comment la charger si nécessaire) pour l'appeler correctement.

Quelqu'un sait-il comment faire?
à moins qu'un nouveau package permettent de faire une ACP et de représenter les corrélations dans un cercle comme coocircle.r ?

Merci!
Brice

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

Messagepar Tillard » 10 Juin 2008, 14:04

Bonjour
library(ade4)
?dudi.pca
?s.corcircle
cordialement
Emmanuel Tillard
UMR ERRC (Elevage des Ruminants en Regions Chaudes)
CIRAD - St PIERRE (La Réunion)
tel: 02 62 49 92 54

Brice Mora
Messages : 14
Enregistré le : 05 Nov 2007, 23:13

Messagepar Brice Mora » 10 Juin 2008, 21:42

Merci pour ces fonctions, cela marche bien.

Mais en fouillant sur le net je vois que l'ACP est censée être utilisée uniquement sur des données quantitatives continues. Or 2 de mes variables (6 en tout) ne le sont pas. Une est un code (0 ou 1) pour dire si un résultat est correct ou pas, l'autre désigne un numéro de classe (1 ou 2). Les 4 variables numériques continues sont des indices statistiques qui ont servi à une classification.
Je pourrais donc dire que j'ai deux variables pseudo-numériques non continues. L'ACP est-elle vraiment adaptée à mon jeu de variables?
Si non, quel test devrai-je utiliser pour identifier d'éventuelles corrélations entre les variables? Une simple matrice de corrélation (fonction cor) suffirait-elle?

Je vous remercie par avance.
Brice

Vincent Boulanger
Messages : 76
Enregistré le : 25 Avr 2006, 11:59

Messagepar Vincent Boulanger » 11 Juin 2008, 06:43

Effectivement, l'ACP est construite pour traiter des données quantitatives...
Si vous n'avez que 6 variables, ça vaut peut-être le coup de regarder les liens une par une : faire des graphiques puis des tests de corrélation ou comparaison de moyenne.

Si vous souhaitez résumer vos 6 variables en un ou deux axes synthétiques (sous réserve d'interprétabilité) vous pouvez tenter de regrouper en classes les variables quantitatives et de faire une AFC...

Bon courage,

VB
Vincent Boulanger
Ingénieur Forestier
Doctorant Cemagref/INRA/ONCFS

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

Messagepar Logez Maxime » 11 Juin 2008, 07:35

Bonjour,

Si tu veux analyser un mélange de variables continues et de variables catégorielles tu peux utiliser l'analyse de Hill & Smith dudi.hillsmith de la librairie ade4. Le gros avantage de cette analyse est que tu peux combiner les deux types de variables dans une seule et même analyse.

Cette analyse se comporte comme une ACP centrée réduite si tu ne mets que des variables continues et comme une ACM si tu n'as que des variables catégorielles.

Maxime

Brice Mora
Messages : 14
Enregistré le : 05 Nov 2007, 23:13

Messagepar Brice Mora » 12 Juin 2008, 22:15

Oui de simples "plot" entre variables, la matrice de corrélation et des comparaisons de moyennes entre certaines de mes variables, c'est une bonne voie, merci.

J'ai utilisé le test de Hill-Smith, cela marche bien, merci.
Voici mon code

Code : Tout sélectionner

# Lancer HillSmith test
library (ade4)
results_HS<- dudi.hillsmith(datamatrix, scannf=TRUE)

results_HS$index
results_HS$assign
results_HS$cr

# cercle des corrélations
s.corcircle (results_HS$cr, clabel = 0.8,grid=FALSE, fullcircle = TRUE, sub='Cercle de corrélation', box = FALSE, add.plot = FALSE)


Au niveau du cercle de corrélation, je trouve que mes variables sont à mi-chemin entre le bord du cercle et son centre. Puis-je tout de même interpréter les relations entre variables ou sont-elles trop loin du bord pour pouvoir l'être!?
Merci!

Brice Mora
Messages : 14
Enregistré le : 05 Nov 2007, 23:13

Aide-toi et google t'aidera

Messagepar Brice Mora » 16 Juin 2008, 14:16

Interpréter les résultats d’un cercle de corrélation selon :
http://biodiversite.wallonie.be/outils/methodo/SAS/exempl08.html

"Cercle des corrélations qui représente les corrélations des variables avec les axes principaux. Les variables se représentent par des flèches (vecteurs). Plus elles sont proches d'un axe, plus elles y contribuent (CTR = contributions relatives). Plus elles sont proches de la circonférence, mieux elles sont expliquées par le plan formé par les deux axes (CO2 = contributions absolues). Les objets sont représentés dans le plan des axes principaux grâce aux vecteurs propres".

Merci tout de même pour toutes vos infos!

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

Messagepar Logez Maxime » 16 Juin 2008, 15:30

Bonjour,

dans le cas d'une analyse de hill & smith avec des variables continues et des facteurs, le cercle de corrélation n'a pas de sens. Par contre tu peux toujours représenter le plan factoriel de la liaison des variables avec les axes principaux mais ce n'est pas les cr mais les co.

Si tu ne prends que des variables continues alors l'analyse de hill et smith est équivalente à une acp centrée réduite :

Code : Tout sélectionner

library(ade4)
data(deug)
acp <- dudi.pca(deug$tab,scannf=FALSE)
# le cercle des corrélations :
s.corcircle(acp$co)

# l'analyse de hill & smith :
hill1 <- dudi.hillsmith(deug$tab,scannf=FALSE)
s.corcircle(hill1$cr) # ça ne correspond pas !
s.corcircle(hill1$co) # on retombe sur nos pattes !

# par contre :
sqrt(abs(hill1$cr))
# équivaut à
abs(acp$co)
abs(hill1$co)


Maxime

Brice Mora
Messages : 14
Enregistré le : 05 Nov 2007, 23:13

Messagepar Brice Mora » 17 Juin 2008, 16:17

Je dois utiliser HillSmith car je souhaite notamment avoir le niveau de corrélation entre une variable nominale (facteur) et une variable continue : cad "qualité de classification" (bon/mauvais) et un indice statistique.

J'ai corrigé mon code : results_HS$cr remplacé par results_HS$co
Merci

Code : Tout sélectionner

datamatrix<-read.table("D:/Export_HS_Regen.txt", header=T)
library (ade4)
results_HS<- dudi.hillsmith(datamatrix, scannf=TRUE)
jpeg(filename="D:/CorrelCircle_Regen.jpg")
s.corcircle (results_HS$co, clabel = 0.8,grid=FALSE, fullcircle = TRUE, box = FALSE, add.plot = FALSE)
dev.off()

Le résultat est d'autant plus intéressant qu'il donne un vecteur pour chaque état de ma variable nominale (factorielle) : un vct pour "bon" et un autre pour "mauvais".

Encore merci


Retourner vers « Questions en cours »

Qui est en ligne

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