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 :

Remplacer un vecteur numeric en vecteur logique


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut Remplacer un vecteur numeric en vecteur logique
    Bonjour,
    Je souhaite comparer 2 moyennes pour les paramètres descriptifs de 2 populations
    j'arrive bien à le faire avec un test de student pour des paramètres continus comme l'age ou le poids
    mais le problème vient quand je souhaite comparer les genre,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     t.test(dataRB_Cock30$Gender,dataRB_CKDEPI30$Gender)
    Error in if (stderr < 10 * .Machine$double.eps * max(abs(mx), abs(my))) stop("data are essentially constant") : 
      missing value where TRUE/FALSE needed
    In addition: Warning messages:
    1: In mean.default(x) : argument is not numeric or logical: returning NA
    2: In var(x) :
      Calling var(x) on a factor x is deprecated and will become an error.
      Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.
    3: In mean.default(y) : argument is not numeric or logical: returning NA
    4: In var(y) :
      Calling var(x) on a factor x is deprecated and will become an error.
      Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.
    je crois que le problème vient du fait que les genres MALE/FEMALE sont en fait rentrés dans mon tableau comme des données numériques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mode(dataRB_Cock30$Gender)
    [1] "numeric"
    mais je n'arrive pas à les remplacer en mode logique ... si je fait ca,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    > as.logical(dataRB_Cock30$Gender)
    ça me met des NA partout

    help !
    merci
    Corentina

  2. #2
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Par défaut
    Bonjour,

    il y a deux problèmes, le premier est théorique, ça n'a pas de sens de comparer par un test t des variables qualitatives. Le deuxième c'est que tes genres sont probablement des facteurs et comme la fonction, le test, t est fait pour comparer les moyennes d'une variable numérique en fonction de 2 groupes, tu obtiens ton message d'erreur.
    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
    fac <-gl(2, 10, labels = c("MALE", "FEMALE"))
    f2 <- sample(c("MALE", "FEMALE"), 20, rep = T)
    f2 <- factor(f2)
    t.test(fac, f2)
    Error in if (stderr < 10 * .Machine$double.eps * max(abs(mx), abs(my))) stop("data are essentially constant") : 
      valeur manquante là où TRUE / FALSE est requis
    De plus : Warning messages:
    1: In mean.default(x) : argument is not numeric or logical: returning NA
    2: In var(x) :
      Calling var(x) on a factor x is deprecated and will become an error.
      Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.
    3: In mean.default(y) : argument is not numeric or logical: returning NA
    4: In var(y) :
      Calling var(x) on a factor x is deprecated and will become an error.
      Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.
     
    is.numeric(fac)
    [1] FALSE
    cdlt

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut
    Merci, je suis une très novice,
    un test chi 2 c mieux sur le plan théorique ? parceque en pratique ça donne le meme message d'erreur
    sinon c'est quoi le test à utiliser ?

  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
    Si tu cherches à vérifier que la proportion MALE/FEMALE est la même dans les deux tableaux, tu peux utiliser un test de proportions (voir prop.test)

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut
    Merci pour ton aide précieuse,
    mais mes 2 séries ne sont pas appariées

  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
    prop.test ne nécessite pas des échantillons appariées contrairement au test de McNemar. Une autre possibilité est d'utiliser la test du chi2 sur le tableau de contingence.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut
    r veut pas faire de prop.test car il n'y a pas le même nombre de valeurs dans chaque vecteur

  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
    L'aide en ligne de prop.test dit :
    Usage

    prop.test(x, n, p = NULL,
    alternative = c("two.sided", "less", "greater"),
    conf.level = 0.95, correct = TRUE)
    Arguments

    x a vector of counts of successes, a two-dimensional table (or matrix) with 2 columns, giving the counts of successes and failures, respectively.
    n a vector of counts of trials; ignored if x is a matrix or a table.
    et donne comme exemple :
    ## Data from Fleiss (1981), p. 139.
    ## H0: The null hypothesis is that the four populations from which
    ## the patients were drawn have the same true proportion of smokers.
    ## A: The alternative is that this proportion is different in at
    ## least one of the populations.

    smokers <- c( 83, 90, 129, 70 )
    patients <- c( 86, 93, 136, 82 )
    prop.test(smokers, patients)

    Tu dois donc calculer les valeurs à partir de tes données. Par exemple, x sera le tableau de contingence ayant comme colonnes les niveaux du facteur MALE/FEMALE et comme lignes les identifications des deux échantillons dataRB_Cock30 et dataRB_CKDEPI30. Voici un exemple de code pour comment faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    # Solution x = tableau de contingence, n ignoré
    z1 <- sample( c( "a", "b"), size=130, rep=TRUE)
    z2 <- sample( c( "a", "b"), size=80, rep=TRUE)
    t1 <- table( z1)
    t2 <- table( z2)
    m <- matrix( c( t1, t2), ncol=2, byrow=TRUE, dimnames=list( c( "z1", "z2"), c( "a", "b")))
    prop.test( m)
     
    # solution alternative : x = nombre de succès, n=nombre d'essais
    prop.test( m[,1], rowSums( m))
     
    # Utilisation du chi2
    chisq.test( m)

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut
    Merci beaucoup +++
    ça fonctionne !!
    mais pas pour tout ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > HTA_Cock30<-dataRB_Cock30$Arterial.hypertension[dataRB_Cock30$Arterial.hypertension!="NOT SPECIFIED"]
    > HTA_CKDEPI30<-dataRB_CKDEPI30$Arterial.hypertension[dataRB_CKDEPI30$Arterial.hypertension!="NOT SPECIFIED"]
    > THTA_Cock30<-table(HTA_Cock30)
    > THTA_CKDEPI30<-table(HTA_CKDEPI30)
    > MHTA<-matrix(c(THTA_Cock30,THTA_CKDEPI30),ncol=2,byrow=T,dimnames=list(c("HTA_Cock30","HTA_CKDEPI30"),c("Yes","No")))
    Error in matrix(c(THTA_Cock30, THTA_CKDEPI30), ncol = 2, byrow = T, dimnames = list(c("HTA_Cock30",  : 
      length of 'dimnames' [1] not equal to array extent
    > prop.test(MHTA)
    Error in is.table(x) : object 'MHTA' not found
    J'ai cru que le problème c’était les 3 occurences Yes/No/NOT SPECIFIED, mais ça change rien en les enlevant

  10. #10
    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
    Que donnent THTA_Cock30 et THTA_CKDEPI30 ? Au moins l'un des deux ne doit pas être de longueur 2 ("Yes", "No"). Il y a peut-être un problème de codage comme des oublis de majuscules en début de mot.

    N.B. : "NOT SPECIFIED" peut aussi être codé par la valeur spéciale NA.

Discussions similaires

  1. [Débutant] remplacer fausses valeurs dans des vecteurs
    Par aigle noir dans le forum MATLAB
    Réponses: 5
    Dernier message: 11/05/2015, 14h37
  2. [Défis][1] Vecteur colonne ou vecteur ligne ?
    Par Jerome Briot dans le forum Contribuez
    Réponses: 19
    Dernier message: 26/06/2012, 15h00
  3. vecteur d'un vecteur
    Par mimish dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2011, 17h17
  4. transformer un vecteur ligne en vecteur colonne
    Par samiov dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/03/2010, 09h42
  5. découper un vecteur en sous vecteur
    Par FstDsi dans le forum Débuter
    Réponses: 2
    Dernier message: 04/08/2009, 21h46

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