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 :

LM et Anova : différence et test


Sujet :

R

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suède

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2018
    Messages : 40
    Points : 23
    Points
    23
    Par défaut LM et Anova : différence et test
    Bonjour

    J'ai un jeu de données où je cherche à expliquer une variable (meilleurs temps) par rapport à plusieurs (sexe, genotype, année de naissance, pays,...).
    J'ai réalisé une régression linéaire multiple puis une anova.
    J'ai du mal à expliquer certains résultats :
    - Pourquoi dans le test lm pour mes années de naissance certaines sont significatives et la plupart non alors que dans l'anova qui est la variable complète, la variable ne l'est pas ?
    - Pourquoi le sexe (mis sous forme S pour jument et H pour hongre) ne présente aucune significativité dans la régression linéaire alors que la variable l'est dans l'anova ?

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Call:
    lm(formula = besttime ~ sex + birthyear + nbpartant + country + 
        genotype.1, data = test)
     
    Residuals:
        Min      1Q  Median      3Q     Max 
    -4.9446 -0.9851 -0.0194  1.0113  4.2586 
     
    Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
    (Intercept)   77.263500   0.866684  89.148  < 2e-16 ***
    sexS           0.488079   0.652567   0.748  0.45539    
    sexV           0.395414   0.660082   0.599  0.54984    
    birthyear2004 -0.144891   0.538829  -0.269  0.78829    
    birthyear2005 -0.298223   0.493057  -0.605  0.54598    
    birthyear2006 -0.438454   0.528276  -0.830  0.40756    
    birthyear2007 -0.297719   0.565162  -0.527  0.59894    
    birthyear2008 -0.418721   0.539245  -0.776  0.43839    
    birthyear2009 -0.655917   0.496589  -1.321  0.18809    
    birthyear2010 -1.281097   0.599536  -2.137  0.03385 *  
    birthyear2011 -0.838719   0.501435  -1.673  0.09599 .  
    birthyear2012 -1.198756   0.573675  -2.090  0.03794 *  
    birthyear2013 -1.668117   0.500936  -3.330  0.00104 ** 
    birthyear2014 -1.527220   0.737456  -2.071  0.03967 *  
    nbpartant     -0.061971   0.005196 -11.926  < 2e-16 ***
    countrySE      0.469868   0.284815   1.650  0.10059    
    genotype.1AG   0.363107   0.374454   0.970  0.33339    
    genotype.1GG   0.097949   0.382520   0.256  0.79817    
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
     
    Residual standard error: 1.708 on 197 degrees of freedom
    Multiple R-squared:  0.4543,	Adjusted R-squared:  0.4072 
    F-statistic: 9.646 on 17 and 197 DF,  p-value: < 2.2e-16
     
    anova(lm)
    Analysis of Variance Table
     
    Response: besttime
                Df Sum Sq Mean Sq  F value  Pr(>F)    
    sex          2  22.03   11.02   3.7777 0.02455 *  
    birthyear   11  34.21    3.11   1.0664 0.39033    
    nbpartant    1 410.02  410.02 140.6104 < 2e-16 ***
    country      1   7.43    7.43   2.5469 0.11212    
    genotype.1   2   4.46    2.23   0.7653 0.46659    
    Residuals  197 574.46    2.92                     
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

    Je commence à m'emmeler les pinceaux entre le test lm et l'anova . Si quelqu'un pouvait m'aider quand à l'interpretation des résultats. Je sais que mon R2 n'est pas élevé et le modèle d'un faible niveau mais il s'agit du meilleur que j'ai pu obtenir avec ces variables.
    Merci.

    Bonne journée !

  2. #2
    Membre averti
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Points : 343
    Points
    343
    Par défaut
    Bonjour,

    Peux-tu faire un plot s'il te plait de tes données ? pour pouvoir analyser un peu les données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    par(mfrow = c(2,3))
    plot(besttime ~ sex + birthyear + nbpartant + country +genotype.1, data = test)
    Je commencerai avec la variable sexe. J'imagine que ta variable sexe contient 3 modalités { "S", "H" , "V" } ( une variable qualitative ).

    Quand on veut modéliser en fonction d'une variable qualitative le modèle s'écrit sous la forme : besttime = B0 + B1 * 1{ sex = S"} + B2 * 1{sex = "V"} + e / 1 est la fonction indicatrice c'est à dire elle prend 1 quand l'évènement se réalise et 0 sinon. et en garde toujours une variable comme référence. D'une autre façon de voir des choses c'est comme si la modalité devient une variable.

    Concernant les test. dans le premier test. En test la significativité du coefficient B0 , B1 , .... c'est à dire en se pose la question est-ce que le coefficient est significativement différent de 0 ou pas. est donc modalité par modalité. dans le test anova( lm() ou glm ) On test le lien entre la variable à expliquer et la variable explicative.

    par exemple dans ta variable bithyear qui est considéré par le modèle comme variable qualitative et donc chaque année seule comme variable est au globale n'est pas signifiante mais avec le test des coefficients en remarque qu'il y a des années à partir de 2010 ça devient significative ( attention ici c'est un test sur le coefficient B ) . solution transformer la variable en quantitative ou regrouper les modalités.

    J'espère que c'est clair.

  3. #3
    Membre éclairé
    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
    Points : 793
    Points
    793
    Par défaut
    1) Les premiers résultats que tu présentes proviennent de la fonction 'summary' qui te donnes la significativité des différents coefficients estimés pris individuellement.
    - Si un facteur à N niveaux, il y a N-1 coefficients estimés car ces coefficients sont des contrastes et il y a plusieurs manières de définir les contrastes. Par défaut R utilise ce qu'il appelle le 'contraste treatment' qui n'est pas formellement un contraste mais est souvent utilisé. Pour expliquer son fonctionnement, soit un facteur F à 3 niveaux N1, N2 et N3, ce contraste conduit à estimer une valeur à l'origine qui sera le coefficient de N1 et deux coefficients N2 - N1 et N3 - N1. D'où 2 degrés de liberté. Un véritable contraste comme contr.sum calculerait comme valeur à l'origine la moyenne (N1 + N2 + N3) / et deux coefficients (2 N1 - N2 - N3) / 3 et (-N1 + 2N2 - N3) /3. On peut facilement vérifier que dans les deux cas, il est facile de calculer les coefficients de N1, N2 et N3. La fonction 'summary' donne la valeur de ces coefficients estimés par les contrastes.
    - La fonction 'summary' donne la significativité des coefficients pris individuellement sans considération des corrélations avec les autres contrastes. Par exemple, on trouvera des résultats de significativité différents entre le résultat de 'summary' avec le contraste treatment et le résultat du test post-hoc de Dunnett qui corrige des comparaisons multiples, c'est-à-dire des corrélations entre coefficients, et dont le but est d'estimer la significativié des différences entre un niveau donné et un niveau de référence.
    - Donc le résultat de 'summary' est de peu d'intérêt sauf :
    . pour des facteurs qui sont globalement significatifs et cela est vérifié par la table d'Anova. En effet, un facteur peut ne pas être significatif même si un coefficient l'est.
    . si les variables explicatives sont peu corrélées entre elles. Cela peut en première intention être vérifié par la valeur du 'variance inflation factor' (cf. fonction 'vif').
    . pour donner une idée de l'adéquation du modèle grâce à la valeur du R2 ajusté. En effet, le R2 augmente en fonction du nombre de degrés de liberté (par exemple, si on fait une régression sur dix points, un ajustement avec un polynôme de degré 9 conduira à un R2 de 100%) tandis que le R2 ajusté tient compte de la dimension de l'échantillon. Dans l'exemple que j'ai donné, il commencera à croitre avec le degré du polynôme et va décroitre à partir d'une certaine valeur. Cela signifie, qu'au delà de cette valeur, on a un sur-ajustement.

    2) La fonction 'anova' donne la significativité de la variable explicative ou de l'interaction, c'est-à-dire dit si cette variable peut être retenue comme expliquant les données ou non. Cependant, cela n'est pas si simple que cela. Cette fonction 'anova' est basée sur la somme des carrés de type I, c'est-à-dire qu'elle estime la significativité de la première variable puis celle de la seconde sur ce qui n'est pas expliqué par la première, de la troisième sur ce qui n'est pas expliqué par les deux premières... Elle teste donc l'introduction séquentielle des variables. On peut vérifier que généralement, lm( Y ~ F1 * F2, et lm( Y ~ F2 * F1 ne conduisent pas à la même table d'Anova. Il est donc préférable d'utiliser la fonction Anova (avec un A majuscule) du package car. Par défaut, elle utilise la somme des carrés de type II. On peut vérifier que pour F1, elle donnera comme significativité la première ligne de la première formulation, pour F2, la première ligne de la seconde formulation et pour l'interaction, on retrouve la même dans les trois cas. Cela permet de conclure que F1 et/ou F2 ont une influence globalement sur le résultat. De même, une interaction peut être significative sans qu'un des deux facteur le soit. Par contre, si aucun l'est, elle ne sera pas significative. La somme des carrés de type III est surtout à utiliser si les groupes ne sont pas équilibrés.

    3) Une fois la table d'Anova exploitée, il faut alors faire des tests post-hoc (cf. package emmeans ou multcomp) uniquement sue les variables significatives. Il est évident que plus le R2 ajusté est faible, moins les résultat sont crédibles car cela signifie qu'on ne prend pas en compte soit le fait qu'il existe des variables significatives plus pertinentes (modèle, peu pertinent), soit que les données sont de mauvaises qualité.

    J'espère que ma réponse t'aidera à exploiter tes données.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suède

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2018
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Bonjour
    merci beaucoup pour ton explication
    Elle m' a bien aidé a comprendre mes résultats et la différence entre les deux tests.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suède

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2018
    Messages : 40
    Points : 23
    Points
    23
    Par défaut En complément
    merci j'ai tout a fait compris cependant j'ai une question qui me vient

    pourquoi la variole sexe est elle significative dans l'anova et pas dans la regression linéaire
    Je comprend que pour les années seules certaines sont significative mais pas pourquoi la variable sexe l'est mais pas un sexe particulier

    Merci

  6. #6
    Membre éclairé
    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
    Points : 793
    Points
    793
    Par défaut
    pourquoi la variole sexe est elle significative dans l'anova et pas dans la regression linéaire
    1) Il n'y a pas une régression linéaire et une anova, il y a juste une application du modèle linéaire défini par la formule aux données. C'est le rôle de la fonction lm (linear model) qui choisi entre une régression linéaire (ou polynomiale), une Anova ou une Ancova en fonction du type des prédicteurs (respectivement quantitatifs appelés aussi régresseurs, qualitatifs appelés aussi facteurs et mélange de deux types). L'application de la fonction anova permet de tester la significativité des prédicteurs avec les limites que j'ai précédemment indiqués. La fonction summary donne des renseignements supplémentaires comme le R2 ou le R2 ajusté, ainsi que la valeur des coefficients calculés par lm (cf. mon explication précédente).
    2) Le résultat de la fonction anova nous dit deux choses : i) que la variable sexe a deux degrés de liberté donc que c'est un facteur à 3 niveaux ; ii) que cette variable a un rôle significatif à 5% dans la détermination de la variable dépendante.
    3) Cette fonction nous dit en plus que seule la variable sexe et la variable nbpartant jouent un rôle, cette dernière ajoutant de l'information par rapport à celle apportée par la variable sexe. La variable birthday n'est pas significative. Il faut donc l'oublier et il n'y a pas lieu d'essayer d'interpréter les coefficients birthdayXXXX donnés par summary. Le faire est une erreur.
    4) Comme je l'ai expliqué précédemment, summary donne les valeurs des coefficients calculés par le contraste utilisé. Celui-ci est par défaut pour R le contraste contr.treatment. De ce fait, les deux coefficients appelés sexS et sexV sont les différences entre la valeur associée respectivement au sexe S et au sexe V avec celle associée au premier niveau du facteur sexe. Ce sont ces différences qui ne sont pas significatives.

    Donc comme je l'ai précédemment mentionné il est préférable d'utiliser la fonction Anova du package car. Des grosses différences de résultats entre l'application de cette fonction et ceux de la fonction anova peuvent être interprétées comme pointant l'existence probable d'interactions entre prédicteurs, interactions qui ne sont pas modélisées. Ensuite utiliser les fonctions des packages multcomp ou emmeans (tests post-hoc) pour rechercher les niveaux qui diffèrent des autres.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/02/2016, 14h08
  2. Réponses: 1
    Dernier message: 06/10/2012, 12h49
  3. [BO XIr2] Tests sur des différences entre dates
    Par Enthau dans le forum Deski
    Réponses: 4
    Dernier message: 27/07/2007, 10h49
  4. différence entre test et réalité
    Par Pallas4 dans le forum Flash
    Réponses: 6
    Dernier message: 17/08/2006, 12h45
  5. [Tests] Différence entre JUnit et Cactus ?
    Par pamic dans le forum Tests et Performance
    Réponses: 13
    Dernier message: 25/08/2005, 10h20

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