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 :

probleme avec le package infer


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut probleme avec le package infer
    bonjour,
    si je fais un test de student avec R base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t.test(qsec~vs, data = mtcars)
    j'obtiens le résultat attendu:
    Welch Two Sample t-test

    data: qsec by vs
    t = -5.9433, df = 24.648, p-value = 3.522e-06
    alternative hypothesis: true difference in means is not equal to 0
    95 percent confidence interval:
    -3.555083 -1.724282
    sample estimates:
    mean in group 0 mean in group 1
    16.69389 19.33357
    si je fais le même test avec le package infer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    library(infer)
    mtcars %>% t_test(qsec~vs)
    j'obtiens cette erreur:
    Error in t.test.formula(formula = formula, data = ., alternative = alternative, :
    grouping factor must have exactly 2 levels
    si quelqu'un a une explication je suis preneur
    merci
    pour info j' ai R version 3.5.3 64 bits et infer 0.40

  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,

    je n'ai pas réellement d'explication, il te faut d'une part transformer la colonne vs en facteur et ensuite spécifier l'ordre des modalités avec l’argument order, tel que spécifié dans l'aide ?t_test.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mtcars %>% mutate(vs = factor(vs)) %>% t_test(qsec ~ vs, order = c("1", "0"))
    cdlt

  3. #3
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    hello,

    je suis d'accord avec tototode sur le fait qu'il faut donner l'ordre.
    Pour l'explication je crois qu'on peut avoir une petite idée en regardant le code de la fonction

    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
     
    function (data, formula, order = NULL, alternative = "two_sided", 
        mu = 0, conf_int = TRUE, conf_level = 0.95, ...) 
    {
        check_conf_level(conf_level)
        if (alternative == "two_sided") {
            alternative <- "two.sided"
        }
        if (!is.null(f_rhs(formula))) {
            data[[as.character(f_rhs(formula))]] <- factor(data[[as.character(f_rhs(formula))]], 
                levels = c(order[1], order[2]))
            prelim <- data %>% stats::t.test(formula = formula, data = ., 
                alternative = alternative, mu = mu, conf.level = conf_level, 
                ...) %>% broom::glance()
        }
        else {
            data <- as.data.frame(data)
            prelim <- stats::t.test(x = data[[as.character(f_lhs(formula))]], 
                alternative = alternative, mu = mu, conf.level = conf_level, 
                ...) %>% broom::glance()
        }
    ......
    }
    Si tu transformes ou pas la colonne en facteur, la ligne suivante s'exécute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    data[[as.character(f_rhs(formula))]] <- factor(data[[as.character(f_rhs(formula))]], 
                levels = c(order[1], order[2]))
    Ta colonne est donc transformée en facteur ou réévaluée si elle était déjà un facteur.
    Si tu ne précises pas l'ordre (NULL par défault) alors order[1] comme order[2] sont NULL et donc tu obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    order <- NULL
    factor(mtcars[["vs"]], levels = c(order[1], order[2]))
     [1] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    [18] <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
    Levels:
    et le message d'erreur devient alors plus clair

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

    je ne suis pas complètement d'accord avec l'explication. Ce n'est pas une question de transformer ou non la variable en facteur, c'est que le code la transforme si la partie droite de la formule est non nulle :
    if (!is.null(f_rhs(formula))) {Comme c'est le cas ici alors oui le code va transformer vs en facteur et avoir besoin de l'ordre des modalités (levels).

    Si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mtcars %>% mutate(vs = factor(vs)) %>% t_test(qsec ~ vs)
    Error in t.test.formula(formula = formula, data = ., alternative = alternative,  : 
      grouping factor must have exactly 2 levels
    Tu as transformé vs en facteur avant et tu as le problème quand même parce que la formule à un terme à droite.
    A priori le problème se posera à chaque fois que tu auras deux groupes à tester avec cette fonction.

    cdlt

  5. #5
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    je n'ai pas dit que l'erreur venait du fait que la variable devait ou non être transformée en amont (ou je me suis mal exprimé) et je suis bien d'accord sur le fait qu'il faut donner l'ordre et que c'est l'unique chose à faire.

    j'ai dit que le fait de la transformer ou pas sans donner l'ordre conduisait à une expression pleine de NA et donc le message d'erreur. J'ai juste, à mon humble avis, expliqué d'où provenait l'erreur.

    Encore une fois, la solution est de préciser l'ordre non de transformer en facteur avant.

    Cordialement

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    merci,
    il fallait bien renseigner l'ordre (pas utile de transformer en facteur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mtcars %>% t_test(qsec ~ vs, order = c(1, 0))
    bonne journée

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

Discussions similaires

  1. probleme avec un package
    Par l_seringa dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 28/04/2008, 12h55
  2. Réponses: 0
    Dernier message: 17/09/2007, 15h21
  3. probleme avec l'importation du package netscape.javascript
    Par Jérémy Lefevre dans le forum Applets
    Réponses: 1
    Dernier message: 23/05/2007, 11h52
  4. Petit problemes de variables avec des Packages
    Par Invité dans le forum Modules
    Réponses: 4
    Dernier message: 02/08/2006, 17h08

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