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 :

Coefficients de corrélation différents selon la library utilisé avec les mêmes données


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 6
    Par défaut Coefficients de corrélation différents selon la library utilisé avec les mêmes données
    Bonjour,

    N'ayant pas toute les subtilités de R loin loin loin de là, je n'arrive pas à comprendre pourquoi en utilisant une même base de donnée, j'obtiens des coefficients de corrélations différents selon que j'utilise la library corrplot ou la library psych... Ces coefficients de diffère pas de beaucoup mais ils sont tout de même pas égaux...
    Auriez-vous une idée du pourquoi du comment s'il vous plait ?
    Je vous remercie de l'aide que vous pourrez m'apporter !
    Cordialement !!!

  2. #2
    Membre émérite
    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
    Par défaut
    Qu'entends-tu par des coefficients différents. Si ce sont ceux affichés sur la console à la sortie du test, cela provient de l'affichage car selon le nombre de chiffres significatifs imprimés. Voir par exemple, les 'différences' d'affichage entre et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str( summary( lm( y ~ x)))
    , la première instruction imprimant le résultat, la dernière instruction ne faisant qu'imprimer la structure du résultat en mémoire en donnant souvent des valeurs plus approximatives (1 à 3 chiffres derrière la virgule). Mais cela ne préjuge absolument pas des véritables valeurs en mémoire.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 6
    Par défaut
    Bonjour !
    Déjà merci beaucoup pour votre réponse !

    Mais malheureusement cela ne vient pas d'une question d'affichage j'en ai peur... J'ai mis les deux fichiers en pièce jointe je ne sais pas si cela a bien fonctionné ou non ! Mais pour donner un exemple je me retrouve avec des coef de 0.46 et 0.68 pour la même corrélation avec les deux méthodes alors que logiquement je devrais obtenir des coefficients égaux...
    J'ai chercher depuis ce matin mais je n'ai vraiment aucune piste c'est très étrange
    Images attachées Images attachées

  4. #4
    Membre émérite
    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
    Par défaut
    Quel est ton script à chaque fois. Par quelles fonctions calcules-tu tes corrélations et les visualises-tu ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 6
    Par défaut
    Pour la table des corrélations en couleur j'utilise la library "corrplot" et j'utilise le script suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    corrplot(ACPMATRIXcor, type="upper", order="hclust", method="color", addCoef.col = "black",
             tl.col="black", tl.cex = 0.5, tl.srt=45, is.corr=FALSE, 
             p.mat = p.mat, sig.level = 0.06, insig = "blank",
             title = "table des corrélations p-value 6%") #blanc => non significatif. Pour p-val = 1% ecrire "sig.level = 0.01"
    Pour l'autre scatter plots, j'utilise la library "psych" et j'utilise le script suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pairs.panels (ACPMATRIXcor, method = ("pearson"), hist.col = "#00AFBB", density = TRUE, ellipses = TRUE)
    Je les visualise directement sur R studio.

    ACPMATRIX et la matrice de mes données. Elle contient des données manquantes sous la forme NA, ce peut-il que les deux fonctions interprètent différemment ces données manquantes ?

  6. #6
    Membre émérite
    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
    Par défaut
    Si dans corrplot, l'argument est la matrice ce corrélation calculée par la fonction cor appliquée aux données, dans pairs.panels, l'argument est les données elles-mêmes et non la matrice de corrélation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ACPMATRIXcor <- cor( donnees)
    corrplot( ACPMATRIXcor, ...)
     
    Pairs.panels( donnees, ...
    Si tu donnes ACPMATRIXcor en entrée de pairs.panels, il visualise la matrice cor( ACPMATRIXcor). C'est de là que vient ton problème.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 6
    Par défaut
    Bonjour,

    Effectivement, j'avais raté une étape, merci beaucoup !

    J'ai modifier mon script que voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    ACPMATRIXcor <- cor(ACPMATRIX, method = c("pearson"), use = "complete.obs")
    ACPMATRIXcor
    p.ACPMATRIXcor <- rcorr(ACPMATRIX) 
    p.ACPMATRIXcor 
     
    cor.mtest <- function(ACPMATRIX, ...) {
      mat <- as.matrix(ACPMATRIX)
      n <- ncol(mat)
      p.mat<- matrix(NA, n, n)
      diag(p.mat) <- 0
      for (i in 1:(n - 1)) {
        for (j in (i + 1):n) {
          tmp <- cor.test(mat[, i], mat[, j], ...)
          p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
        }
      }
      colnames(p.mat) <- rownames(p.mat) <- colnames(mat)
      p.mat
    }
     
    p.mat <- cor.mtest(ACPMATRIX)
    head(p.mat[,1:12]) 
    p.mat 
     
    corrplot(ACPMATRIXcor, type="upper", order="hclust", method="color", addCoef.col = "black",
             tl.col="black", tl.cex = 0.5, tl.srt=45, is.corr=FALSE, 
             p.mat = p.mat, sig.level = 0.06, insig = "blank",
             title = "table des corrélations p-value 6%")
     
    library(psych)
    pairs.panels (ACPMATRIX, method = ("pearson"), hist.col = "#00AFBB", density = TRUE, ellipses = TRUE)
    Mon jeu de données et donc maintenant l'objet ACPMATRIX. J'ai rajouté tout le script servant à la construction du graphique de corrplot pour plus de compréhension.
    Malheureusement, je ne parviens toujours pas à obtenir des coefficients égaux, je suppose que j'ai encore interverti un ACPMATRIX avec un ACPMATRIXcor mais malgré de nombreuses tentatives, pas moyen de trouver où est la faute. Je ne maîtrise pas bien le script cor.mtest qu'un ami m'a fourni brut de pomme sans explications...

    Je vous remercie énormément pour l'aide que vous me procurez c'est vraiment gentil à vous !!!

  8. #8
    Membre émérite
    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
    Par défaut
    1) Le code est redondant :
    - corrplot::rcorr renvoie une liste de 3 membres
    r : la matrice de corrélation
    n : le nombre d'observations
    P [P majuscule] : la matrice des p-value, la diagonale est mise à NA (ce qui est logique) mais si tu veux la remplacer par des 1, il suffit alors d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    res <- rcoor( donnees)
    diag( res$P) <- 1
    Donc si tu utilises corrplot pour calculer, il est inutile de recalculer la matrice de corrélation par cor et la matrice des p.value par cor.mtest.
    Par contre, rcorr demande une matrice en entrée, si les données sont un data.frame, il faut les transformer par as.matrix( donnees).

    - cor.mtest existe dans le package corrplot, il est inutile de le reprogrammer. Il renvoie une liste de 3 membres :
    p [p minuscule] : les p value. Ici la diagonale est mise à zéro
    lowCI et uppCI : matrices des bornes inférieures et supérieurs de l'estimation de la corrélation.

    2) J'ai essayé ton script sur les données mtcars (qu'on peut charger par data( mtcars)), je n'ai aucune différence dans les coefficients de corrélation. La seule différence se trouve dans la visualisation. En utilisant dans corrplot la méthode "hclust" pour l'argument order à la place de la méthode par défaut (original) pour organiser la matrice, il y a permutation de lignes et de colonnes. Par exemple, sur les données mtcars, la variable carb qui se trouve en première ligne/colonne de corrplot est reléguée en dernière ligne/colonne de pairs.panels. SI tu conservais cette méthode hclust mais tu modifiais la méthode d'agrégation (hclust.method), tu aurais d'autres permutations.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/09/2015, 22h02
  2. [PDF] Données affichées différentes selon l'outil d'affichage utilisé
    Par Jipété dans le forum Bureautique
    Réponses: 4
    Dernier message: 02/10/2014, 11h53
  3. INDEX pas utilisé avec les <
    Par vodnok dans le forum Débuter
    Réponses: 6
    Dernier message: 07/03/2008, 10h11
  4. [Interface graphique]Composant différents selon le PC
    Par Cyborg289 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 01/08/2005, 10h05
  5. CSS : fichier include différent selon chaque resolution
    Par Sylvain245 dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 31/03/2005, 17h57

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