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 :

Variable qualitative à plusieurs classes


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 51
    Par défaut Variable qualitative à plusieurs classes
    Bonjour,

    J'ai une variable à quatre classe (A, AB, A, O) ou (0,1,2,3) peu importe

    Je voudrais choisir une valeur de référence fictive, une valeur de référence qui soit une "moyenne" de l'ensemble de mes 4 classes.
    Et ainsi ne pas avoir à choisir une valeur de référence arbitraire (A,B,ABou O).

    Je voudrais fainsi faire en sorte que, lors d'une régression multilinéaire, on ne me donne pas que trois coefficients mais bien 4 coefficients propres à chaque classe.

    Est-ce que vous savez comment faire?

    Merci de vos réponses.

  2. #2
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Bonjour,

    M'est avis que tu vas devoir jouer avec les contrasts (et je dois bien avouer que je n'y ai pas compris grand chose dans le détail).

    Juste un petit exemple dans le cas d'une ANOVA
    1. tu peux te contenter d'enlever le terme l'intercept ()2nd lm) pour avoir une comparaison de tes facteurs par rapport à la moyenne (c'est du moins ce que j'ai lu) :
      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
      33
      34
      35
      36
      37
      38
      > d <- data.frame(y=rnorm(30), x=rep(c("a", "b", "c"), length=30))
      > summary(lm(y ~ x, data=d))
      
      Call:
      lm(formula = y ~ x, data = d)
      
      Residuals:
           Min       1Q   Median       3Q      Max 
      -1.81771 -0.55976  0.06581  0.75717  1.24735 
      
      Coefficients:
                  Estimate Std. Error t value Pr(>|t|)
      (Intercept)  0.22951    0.28027   0.819    0.420
      xb           0.15787    0.39636   0.398    0.694
      xc           0.01902    0.39636   0.048    0.962
      
      Residual standard error: 0.8863 on 27 degrees of freedom
      Multiple R-squared: 0.006955,	Adjusted R-squared: -0.0666 
      F-statistic: 0.09455 on 2 and 27 DF,  p-value: 0.91 
      
      > summary(lm(y ~ x -1, data=d))
      
      Call:
      lm(formula = y ~ x - 1, data = d)
      
      Residuals:
           Min       1Q   Median       3Q      Max 
      -1.81771 -0.55976  0.06581  0.75717  1.24735 
      
      Coefficients:
         Estimate Std. Error t value Pr(>|t|)
      xa   0.2295     0.2803   0.819    0.420
      xb   0.3874     0.2803   1.382    0.178
      xc   0.2485     0.2803   0.887    0.383
      
      Residual standard error: 0.8863 on 27 degrees of freedom
      Multiple R-squared: 0.1109,	Adjusted R-squared: 0.01209 
      F-statistic: 1.122 on 3 and 27 DF,  p-value: 0.3574
    2. ou tu peux changer le contraste du facteur (mais il ne te donnera que la moyenne et les coef des k-1 premiers facteur / rapport à celle-ci, le k-ième étant dépendent du reste)
      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
      > d$x <- C(d$x, sum)
      > summary(lm(y ~ x, data=d))
      
      Call:
      lm(formula = y ~ x, data = d)
      
      Residuals:
           Min       1Q   Median       3Q      Max 
      -1.81771 -0.55976  0.06581  0.75717  1.24735 
      
      Coefficients:
                  Estimate Std. Error t value Pr(>|t|)  
      (Intercept)  0.28847    0.16182   1.783   0.0859 .
      x1          -0.05896    0.22884  -0.258   0.7986  
      x2           0.09891    0.22884   0.432   0.6690  
      ---
      Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
      
      Residual standard error: 0.8863 on 27 degrees of freedom
      Multiple R-squared: 0.006955,	Adjusted R-squared: -0.0666 
      F-statistic: 0.09455 on 2 and 27 DF,  p-value: 0.91

    Maintenant, ce ne sont que des pistes, je risque d'être de peu d'aide pour le cas de modèles linéaires multiples.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 51
    Par défaut
    Normalement, il faudrait que j'arrive à obtenir à la fois un intercept et à la fois un coefficient pour chaque classe.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 51
    Par défaut
    En faisant contr.sum je passe en codage -1 , 1

    De ce fait mes intercepts et mes Betas sont bien calculés à partir d'une "référence fictive moyenne de l'ensemble des classes de ma variable qualitative".

    Cependant R continue à ne me donner les résultats que pour les n-1 classes.
    Ex : résultats que pour 3 classes sur variables qualitative à 4 classes.

    Pour avoir le Béta de cette quatrième classe, il suffit de le déduire des 3 autres,. la somme des n Bétas faisant 0.

    Par contre pour avoir le p et l'intercept, il faut effectuer un changement de codage de la varible afin que la classe qui nous intéresse apparraisse dans les résultats et que ce soit une autre classe qui soit manquante dans les résultats.

    Pour revenir en codage 0 , 1 : contr.treatment

    Ma question sur ce codage de variable qualitative et sur la notion de "référence fictive moyenne de l'ensemble des classes de ma variable qualitative" émanait du fait que je pensais qu'avec ce systeme cela changeait le résultat du calcul du score de propension. ce qui est faux, j'ai regardé avec les deux codages possibles (-1 , 1 ou 0 , 1) les résultats du calcul du score de propension sont bien identiques.

    Merci en tout cas

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

Discussions similaires

  1. Modifier variable entre plusieurs classes
    Par asallou dans le forum Débuter avec Java
    Réponses: 14
    Dernier message: 26/03/2013, 09h28
  2. Partager une variable entre plusieurs classes
    Par jasonpolakow dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/01/2011, 10h02
  3. utiliser les mêmes variable dans plusieurs class
    Par hterrolle dans le forum Langage
    Réponses: 2
    Dernier message: 16/11/2007, 21h11
  4. variable utilisée par plusieurs classes
    Par yasmine* dans le forum Langage
    Réponses: 9
    Dernier message: 08/02/2007, 15h44
  5. Utilisation de variables dans plusieurs classes
    Par dedeloux dans le forum Langage
    Réponses: 3
    Dernier message: 20/07/2005, 17h25

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