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 :

Extraire une pvalue d'un lm


Sujet :

R

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 37
    Points : 34
    Points
    34
    Par défaut Extraire une pvalue d'un lm
    Bonsoir à tous,

    Je cherchais à extraire une p.value d'un summary d'une régression linéaire. Je n'y suis pas arrivée et j'ai donc cherché sur le net et je suis tombée sur cette réponse de Manoir en 2009 sur votre site bien-aimé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Regression=lm(Tableau3$Temps~Tableau3[,colonne_calcium3], data=Tableau3)
    summary(Regression)
    Réponse de la machine :
    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
    Call:
    lm(formula = Tableau3$Temps ~ Tableau3[, colonne_calcium3], data = Tableau3)
     
    Residuals:
        Min      1Q  Median      3Q     Max 
    -22.754 -12.063  -2.205  11.370  23.462 
     
    Coefficients:
                                  Estimate Std. Error t value Pr(>|t|)
    (Intercept)                  1.023e+02  6.834e+01   1.497    0.144
    Tableau3[, colonne_calcium3] 5.000e-05  9.221e-05   0.542    0.591
     
    Residual standard error: 14.43 on 33 degrees of freedom
    Multiple R-squared: 0.008832,	Adjusted R-squared: -0.0212 
    F-statistic: 0.294 on 1 and 33 DF,  p-value: 0.5913
    OK selon les conseils de Manoir, j'ai effectué la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    summary(Regression)[[4]][,4]
    Réponse de la machine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                     (Intercept) Tableau3[, colonne_calcium3] 
                       0.1438024                    0.5912872

    Donc oh miracle ça marche, j'arrive à extraire les p.value de mon lm.
    Mais pour mourir moins bête, je voudrais comprendre parce que là, les doubles crochets autour du 4 me laissent perplexe/dubitative.
    Je ne comprends pas le détail de la commande "summary(Regression)[[4]][,4]", et plus précisément que précisent les [[4]][,4] ?
    Parle-t-il de lignes ? de colonnes ? qu'est-ce que c'est que ces doubles crochets ??
    Merci d'avance pour les éclaircissements !
    Bonne soirée !

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 339
    Points
    339
    Par défaut
    Hello,

    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
     
    > data(cars)
    > mod <- lm(dist~speed,cars)
    > smod <- summary(mod) 
     
    ## Dans ce code, 'smod' est un object de classe 'summary.lm' mais aussi de mode 'list' 
    > mode(smod)
    [1] "list"
    > class(smod)
    [1] "summary.lm"
     
    ## il est toujours possible d'obtenir les champs de la list:
    > names(smod)
     [1] "call"          "terms"         "residuals"     "coefficients" 
     [5] "aliased"       "sigma"         "df"            "r.squared"    
     [9] "adj.r.squared" "fstatistic"    "cov.unscaled"
     
    ## Vous pouvez récupérer les différentes valeurs du summary via les champs de la liste 'smod', par exemple:
    > smod$coefficients
                  Estimate Std. Error   t value     Pr(>|t|)
    (Intercept) -17.579095  6.7584402 -2.601058 1.231882e-02
    speed         3.932409  0.4155128  9.463990 1.489836e-12
    Donc dans le code "summary(Regression)[[4]]", il prend la 4ième valeur de la liste (qui est le terme "coefficients") -- et "summary(Regression)[[4]][,4]" signifie qu'il prend la 4ième colonne des coefficients (donc c'est les p-valeurs des coefficients)

    A++

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    Merci beaucoup Hoccha.

    Alors là je suis perdue. Plusieurs questions :

    Qu'est-ce que veut dire "object de classe 'summary.lm' "?
    Pour moi, un objet a des dimensions et est soit un dataframe ou un vecteur ou... mais que veut dire un objet de classe 'summary.lm' ? summary.lm est une classe ? je ne comprends pas ...

    De même, que veut dire "de mode 'list' " ? Est-ce que ça veut dire que l'objet est une liste donc un vecteur (1, n) ?

    De plus (eh oui ça fait beaucoup de questions), je ne vois la p.value dans "names(smod)" ? il faut la chercher dans quel champ ?

    et enfin si on met comme tu me le dis "smod$coefficients", comment lui demander de nous sortir uniquement les Pr(>|t|) ?
    J'ai essayé plein de trucs genre:
    smod$coefficients$Pr(>|t|) ... mais ça ne marche pas.

    Pfiou ça en fait des questions à cette heure tardive.
    Si tu as le courage d'y répondre, merci d'avance

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Quelques réponses en vrac :

    • "summary.lm" est bien une classe : dans l'exemple donné par hoccha, l'objet "smod" correspond au "summary" (résumé des principaux éléments) d'un objet (l'objet "mod") de type "lm" (modèle linéaire)

    • "smod" est une liste : ce n'est pas la même chose qu'un vecteur. En reprenant l'exemple de hoccha :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      names(smod)
       [1] "call"          "terms"         "residuals"     "coefficients" 
       [5] "aliased"       "sigma"         "df"            "r.squared"    
       [9] "adj.r.squared" "fstatistic"    "cov.unscaled" 
       
      smod$coefficients
                    Estimate Std. Error   t value     Pr(>|t|)
      (Intercept) -17.579095  6.7584402 -2.601058 1.231882e-02
      speed         3.932409  0.4155128  9.463990 1.489836e-12
       
       smod[[4]]
                    Estimate Std. Error   t value     Pr(>|t|)
      (Intercept) -17.579095  6.7584402 -2.601058 1.231882e-02
      speed         3.932409  0.4155128  9.463990 1.489836e-12
      Les coefficients du modèle linéaire sont stockés dans le 4ème élément de la liste "smod", auquel tu peux accéder soit par son nom : "coefficients", soit par son numéro "smod[[4]]".
      Je te conseille d'aller jeter un oeil du côté des docs R pour revoir un peu les différents types d'éléments dans R (http://r.developpez.com/)

    • pour accéder à la p-value uniquement (en reprenant l'exemple de hoccha) : smod$coefficients[,4]


    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    Merci à tous les deux,

    J'ai mis deux jours à intégrer et à digérer (pas entièrement d'ailleurs) !!
    En effet, par cet exemple je me rends compte que j'ai des lacunes dans des concepts de R.
    Je ne comprends pas la différence entre un mode et une classe !
    Est-ce que vous pourriez éclairer ma lanterne ou me dire où je peux avoir de la doc simple sur ce topic?
    Merci beaucoup !!
    A bientôt

    Cha.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 125
    Points : 339
    Points
    339
    Par défaut
    Bonjour,

    Les notions de mode et class sont déjà des notions avancées et il est difficile de faire un cours de R dans un forum
    Remarque: il n'est pas nécessaire de comprendre ces notions pour déjà bien utiliser R!
    Brièvement on peut dire -- sans trop se tromper -- que la notion de mode définit comment la variable est physiquement sauvée dans la mémoire. Et les class sont utilisées dans R pour le polymorphisme (par exemple, le comportement des fonctions print et plot dépendent de la class) et l'héritage (une même variable peut avoir plusieurs class et l'ordre des class permet de simuler la notion d'héritage).
    Mais encore une fois,... si vous ne comprenez pas... c'est pas grave... R s'occupe de tout pour vous , c'est normalement transparent pour l'utilisateur lambda.

    Bonne continuation!

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    Salut à tous,

    Merci beaucoup pour cette réponse.
    Vous êtes géniaux !!
    A bientôt!

    Cha.

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

Discussions similaires

  1. [RegEx] [Script]Extraire une url
    Par Hell dans le forum Langage
    Réponses: 9
    Dernier message: 17/10/2004, 15h11
  2. Scripts : Extraire une ligne
    Par nemohck dans le forum Linux
    Réponses: 7
    Dernier message: 03/11/2003, 20h40
  3. extraire une portion audio d'une vidéo
    Par Brunoo dans le forum DirectX
    Réponses: 2
    Dernier message: 16/06/2003, 10h29
  4. Extraire une séquence d'un fichier MPEG
    Par enzosp dans le forum DirectX
    Réponses: 2
    Dernier message: 24/02/2003, 11h30
  5. Réponses: 2
    Dernier message: 10/07/2002, 11h51

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