IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

PCA{FactoMineR} Cercle des corrélations


Sujet :

R

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 38
    Points
    38
    Par défaut PCA{FactoMineR} Cercle des corrélations
    Bonjour,
    J'ai fait une ACP avec la fonction PCA du package FactoMineR et sur le graphe de sortie je n'obtiens pas de cercle de corrélation. Seulement mes variables placées selon les 2 premiers axes de mon ACP, mais pas de cercle (cf. pièce jointe).

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a=read.table("totaldata2.txt",header=TRUE)
    z=PCA(a[,-c(1)],graph=T,scale.unit=F,quali.sup=1:3)
    Comment puis-je obtenir le cercle des corrélation?
    Merci de votre aide!
    Images attachées Images attachées  

  2. #2
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Bonjour,

    Je pense que tu devrais avoir une liste contenant toutes les informations sur les variables actives.

    BC

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 38
    Points
    38
    Par défaut
    Il y a bien la commande:
    Mais je ne comprends pas la sortie de cette commande. En voici le début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > z$var$cor
              Dim.1         Dim.2         Dim.3         Dim.4         Dim.5
    X400  0.7044234  0.6972447666  0.0032425827 -0.0918712633 -2.074036e-02
    X401  0.6999258  0.7021095505  0.0016827976 -0.0860622901 -1.164070e-02
    X402  0.7029790  0.6995144310  0.0016878852 -0.0835322014 -1.525771e-02
    X403  0.7039987  0.6977874328  0.0046004261 -0.0862880234 -1.492602e-02
    X400, X401, X402, X403 sont mes 4 premières variables.

    De plus, j'aurais souhaité obtenir quelque chose de visuel. Mais peut-être n'est ce pas possible avec la fonction "PCA".

  4. #4
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Mais je ne comprends pas la sortie de cette commande. En voici le début:
    • 1 Si vous lisez cette table par ligne vous aurez:
      correllation(X400, DIM)= 0.7044234, correlation(X400, DIM2)=0.6972447666, ...
    • 2 Si vous la lisez par colonne: la première colonne correspondra aux corrélations entre tes variables et la première composante DIM1.


    De plus, j'aurais souhaité obtenir quelque chose de visuel. Mais peut-être n'est ce pas possible avec la fonction "PCA".
    Le graphique du cercle de corrélation, vous obtenez en même temps que le graphique des individus, dés que vous appelez la fonction PCA.

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    library(FactoMineR)
    data(decathlon)
    res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup=13)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 38
    Points
    38
    Par défaut
    C'est justement là tout mon problème, lorsque je rentre la ligne de code suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z=PCA(a[,-c(1)],graph=T,ncp=5,scale.unit=F,quali.sup=1:3)
    Je n'obtiens pas directement le cercle des corrélations mais simplement le graphe que je vous ai mis en pièce jointe. J'ai bien essayé ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    library(FactoMineR)
    data(decathlon)
    res.pca <- PCA(decathlon, quanti.sup = 11:12, quali.sup=13)
    Et en effet, là j'obtiens le cercle des corrélations sur le graphe. D'où ma question : pourquoi dans le cas des données fournies avec la fonction PCA j'obtiens ce cercle alors qu'avec mes données non??? Je ne comprends pas.

    J'ai réussi à le retrouver via la fonction "s.corcircle" du package "ade4" mais le résultat n'est pas aussi "sympa" (cf. pièce jointe).
    Images attachées Images attachées  

  6. #6
    Inactif  
    Profil pro
    " "
    Inscrit en
    Janvier 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : " "

    Informations forums :
    Inscription : Janvier 2008
    Messages : 330
    Points : 254
    Points
    254
    Par défaut
    Peut être qu'il faudrait plus regarder la structure de vos données. Sinon, sur ce lien vous avez une très bonne documention sur l'utilisation du package FactoMineR et sur celui-ci quelques idées pour l’interprétation de l'ACP.

    BC

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Points : 38
    Points
    38
    Par défaut
    Alors en fait le cercle des corrélations n'apparait pas sur la figure de sortie du fait de cette partie du code :
    Lorsque je mets "True" et que toutes les variables sont centrées réduites, le cercle des corrélations apparait sur le graphe, soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z=PCA(a[,-c(1)],graph=T,ncp=5,scale.unit=T,quali.sup=1:3)
    Ce qui ne m'arrange pas car toutes mes variables ont la même unité! Y-a-t'il un moyen de le faire comprendre à la fonction PCA?

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Points : 98
    Points
    98
    Par défaut
    Bonjour,
    Un peu tard mais cela peut tjrs servir
    J'ai eu le même pb aujourd'hui

    Une solution semble être d'utiliser le menu déroulant de factominer


  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Points : 25
    Points
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    projet1=read.table(file.choose(), header=T, sep=";",row.names = 1)
    projet1
    # ON CHARGE LE PACKAGE FACTOMINER
    library(FactoMineR)
    cv=PCA(projet1)
    Ca affiche l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "Error in get(getOption("device"))(width = min(14, 8 * (xmax - xmin)/(ymax -  : 
      unused arguments (width = min(14, 8 * (xmax - xmin)/(ymax - ymin)), height = 8)"

  10. #10
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    scale.unit=FALSE signifie qu'on analyse une matrice de variance/covariance et non une matrice de corrélation. En conséquence, scale.unit=FALSE ne peut pas garantir que la norme des vecteurs-variables est l'unité dans l'espace N-dimensionnel où N est le nombre de variables, donc ne peut pas non plus garantir que la projection de ces vecteurs-variables sur le plan représenté dans le plot (souvent le plan dimension 1 x dimension 2) ne dépasse pas le cercle de rayon unité. Par contre scale.unit=TRUE projette toujours ces vecteurs à l'intérieur du cercle de corrélation qui est un cercle de rayon unité. Dans ce cas, le tracé de ce cercle et la position des vecteurs dans ce cercle a un sens, sens que cela n'a pas avec scale.unit=FALSE. En effet,avac scale.unit=TRUE, les variables projetées sur le cercle de corrélation sont celles qui sont intégralement dans ce plan et donc orthogonales aux autres dimensions.

    De manière informelle, scale.unit=TRUE permet d'analyser l'information commune entre paires de variables indépendamment de l'amplitude des variables en les transformant en unités arbitraires de dispersion ou en d'autres termes à combien d'unités de dispersion d'une variable correspond une unité de dispersion de l'autre - tandis que scale.unit=FALSE analyse ce qu'une variable apporte sur l'autre en terme d'amplitude ou à combien d'unités réelles d'une variable correspond une unité réelle de l'autre (par exemple à combien de cm correspond une variation d'un an pour scale.unit=FALSE tandis que pour scale.unit=TRUE, ce sera à combien de cm / sd(cm) correspond une variation de un an/sd(an) ou sd(x) est la déviation standard de la variable x dans mes données).

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2018
    Messages : 12
    Points : 25
    Points
    25
    Par défaut merciii beaucoup
    Citation Envoyé par faubry Voir le message
    scale.unit=FALSE signifie qu'on analyse une matrice de variance/covariance et non une matrice de corrélation. En conséquence, scale.unit=FALSE ne peut pas garantir que la norme des vecteurs-variables est l'unité dans l'espace N-dimensionnel où N est le nombre de variables, donc ne peut pas non plus garantir que la projection de ces vecteurs-variables sur le plan représenté dans le plot (souvent le plan dimension 1 x dimension 2) ne dépasse pas le cercle de rayon unité. Par contre scale.unit=TRUE projette toujours ces vecteurs à l'intérieur du cercle de corrélation qui est un cercle de rayon unité. Dans ce cas, le tracé de ce cercle et la position des vecteurs dans ce cercle a un sens, sens que cela n'a pas avec scale.unit=FALSE. En effet,avac scale.unit=TRUE, les variables projetées sur le cercle de corrélation sont celles qui sont intégralement dans ce plan et donc orthogonales aux autres dimensions.

    De manière informelle, scale.unit=TRUE permet d'analyser l'information commune entre paires de variables indépendamment de l'amplitude des variables en les transformant en unités arbitraires de dispersion ou en d'autres termes à combien d'unités de dispersion d'une variable correspond une unité de dispersion de l'autre - tandis que scale.unit=FALSE analyse ce qu'une variable apporte sur l'autre en terme d'amplitude ou à combien d'unités réelles d'une variable correspond une unité réelle de l'autre (par exemple à combien de cm correspond une variation d'un an pour scale.unit=FALSE tandis que pour scale.unit=TRUE, ce sera à combien de cm / sd(cm) correspond une variation de un an/sd(an) ou sd(x) est la déviation standard de la variable x dans mes données).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Matrice centré reduite et matrice des corrélations
    Par clement1990 dans le forum SAS STAT
    Réponses: 4
    Dernier message: 13/11/2017, 10h05
  2. Réponses: 0
    Dernier message: 13/12/2014, 18h55
  3. ACP cercle de corrélation
    Par ebongue dans le forum SAS STAT
    Réponses: 7
    Dernier message: 07/03/2013, 15h34
  4. Cercle des correlations sous SAS
    Par tomjr dans le forum SAS STAT
    Réponses: 0
    Dernier message: 02/06/2010, 17h03
  5. Matrice des corrélations
    Par fafabzh6 dans le forum SAS STAT
    Réponses: 0
    Dernier message: 30/07/2008, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo