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 :

corrélation de spearman


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    étudiant en bioinformatique
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : étudiant en bioinformatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Points : 5
    Points
    5
    Par défaut corrélation de spearman
    Bonjour à tous et à toutes,
    je cherche à déterminer les corrélations de spearman entre deux variables, pour cela j'utilise cor(x,y,method=spearman) cependant, lorsque j'utilise cette fonction j'obtiens le résultat NA.
    je ne comprends pas parce que je l'ai déjà utilisée pour deux autres variables (sous forme de vecteur) et j'obtiens là un résultat.
    Mes deux vecteurs ont la même longueur (350) vu que je viens de les plotter.

    Pouvez-vous m'aider ?
    Merci !

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut
    Bonjour,

    Il y a probablement des NA dans tes données.
    A voir ce code exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x <- c(1,2,3,NA,5,NA)
    y <- c(1,NA,3,4,5,NA)
    cor(x,y,method="spearman")
     
    [1] NA
    Les NA doivent être gérées en amont, c'est un travail important de la préparation des données.
    A toi de choisir ce que tu en fais derrière. Suppression des observations si elles ne sont pas pertinentes, au prix d'inclure un biais dans l'analyse ? Imputer selon un modèle de régression fait à la volée (à partir des valeurs non NA de l'autre variable) ?

    C'est important de se renseigner sur cette partie, ça jouera forcément sur la qualité de ton analyse.



    Pour te permettre d'appréhender le sujet, voici une fonction que j'utilise de mon côté pour visualiser les NA, s'appuyant sur le package VIM :

    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
    install.packages("VIM")
    library(VIM)
     
    #### Visualisation des valeurs manquantes ####
     
    vizualizeNA <- function(dta){
      aggr(dta, bars = F  # Barres à droite masquées
           , numbers=T # Afficher nombre de NA
           , prop = F # Afficher en nombre et pas en %
           , combined = T  # Afficher en un seul graphique
      ) 
    }
     
    ana <- data.frame(x=x, y=y)
     
    vizualizeNA(ana)
    La fonction te renvoie un graphique avec les variables en colonnes, et le nombre d'observations par cas.
    Tu peux donc y lire :
    • 3 observations n'ont pas de NA pour x et y
    • 1 observation a une NA pour x, pas pour y
    • 1 observation a une NA pour y, pas pour x
    • 1 observation a des NA pour x et y



    Bon courage

    Emmanuel

  3. #3
    Futur Membre du Club
    Homme Profil pro
    étudiant en bioinformatique
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : étudiant en bioinformatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour Emmanuel,
    Tout d'abord merci pour ta réponse ! Cependant je ne pense pas avoir de NA dans mes valeurs, du coup je ne comprends toujours pas.

    cor(agebionontumor,agechrononontumor, method="pearson") me renvoie NA

    alors que mes vecteurs, agebionontumor et agechrononontumor ont bien la même taille et ne contiennent pas de NA :
    Nom : Capture1.PNG
Affichages : 172
Taille : 76,3 Ko
    Nom : Capture2.PNG
Affichages : 162
Taille : 20,6 Ko

    Merci d'avance

  4. #4
    Futur Membre du Club
    Homme Profil pro
    étudiant en bioinformatique
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : étudiant en bioinformatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Je me suis dit que p-e les types des données n'étaient pas les mêmes, visiblement ce n'est pas le cas non plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typeof(agechronotumor)
    # [1] "double"
    typeof(agechrononontumor)
    # [1] "double"
    typeof(agechrononontumor[1])
    # [1] "double"
    typeof(agebionontumor[1])
    # [1] "double"
     
    cor(agebionontumor[1],agechrononontumor[1], method="pearson")
    # [1] NA
    Je ne comprends pas pourquoi là non plus ça ne marche pas, mais visiblement ce n'est pas un problème de valeurs manquantes du coup...

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut
    Hello,

    Pour le coup avec ta dernière ligne, c'est normal que tu aies un NA, car tu calcules la corrélation entre deux chiffres (et non deux vecteurs). C'est à dire pour une seule observation. Il n'y a donc pas de corrélation

    En effet tu n'as pas l'air d'avoir de NA selon tes PJ.

    Tu utilisais bien la fonction ainsi, sans les [1] ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cor(agebionontumor, agechrononontumor, method="spearman")
    Si oui, par acquis de conscience, peux-tu rajouter le paramètre qui permet de ne prendre que les observations complètes ? Tu as toujours NA ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cor(agebionontumor, agechrononontumor, method="spearman", use = "complete.obs")

  6. #6
    Futur Membre du Club
    Homme Profil pro
    étudiant en bioinformatique
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : étudiant en bioinformatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Rebonjour Emmanuel & merci encore pour ta disponibilité !
    Les noms de variable ont un peu changé, j'ai remodelé mon script pour plus de clarté mais ce sont bien les mêmes objets !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cor(df_nontumor$RNAAGE,df_nontumor$CHRONOAGE,method="spearman")
    # [1] NA
    cor(df_nontumor$RNAAGE,df_nontumor$CHRONOAGE,method="spearman",use = "complete.obs")
    # [1] 0.3433414
    Du coup ça marche, mais je ne comprends pas d'où vient l'erreur à la base. Surtout que je fais d'autres corrélations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cor(df_tumor$RNAAGE,df_tumor$CHRONOAGE,method="spearman")
    # [1] 0.7786244
    cor(df_tumor$RNAAGE,df_nontumorpartiel$RNAAGE,method="spearman")
    # [1] 0.2982473
    pour des variables qui sont obtenues à partir des mêmes fichiers et de manière identiques et où il n'y a pas de problème !

    Merci encore

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut
    Oups, je viens de voir un truc qui m'avait échappé à la première lecture.
    Regarde la 3e ligne de ta seconde PJ.
    Tu as bien un NA vers le milieu

    D'où l'importance du script pour visualiser les NA que je t'ai donné dans mon premier message, ça permet de ne pas se fier à l’œil.

    Content que tu puisses avancer en tout cas. Bonne journée

  8. #8
    Futur Membre du Club
    Homme Profil pro
    étudiant en bioinformatique
    Inscrit en
    Mai 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : étudiant en bioinformatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Ah bah oui....... effectivement.

    Merci beaucoup Emmanuel, je te dois une fière chandelle

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

Discussions similaires

  1. Coefficient de corrélation (Spearman) sur modèle GEE
    Par thillou dans le forum SAS STAT
    Réponses: 0
    Dernier message: 16/07/2015, 17h01
  2. Coefficient de corrélation
    Par oceanediana dans le forum Access
    Réponses: 7
    Dernier message: 26/07/2006, 07h03
  3. UPDATE avec corrélation?
    Par JFDelges dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2006, 15h01
  4. tri par corrélation entre chaînes de caractères
    Par petitmic dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/09/2005, 15h15
  5. corrélation
    Par sole dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 08/09/2005, 14h12

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