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

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

    Informations forums :
    Inscription : avril 2018
    Messages : 38
    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 habitué
    Homme Profil pro
    Data scientist
    Inscrit en
    février 2017
    Messages
    79
    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 : 79
    Points : 148
    Points
    148

    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 confirmé
    Homme Profil pro
    Chercheur
    Inscrit en
    décembre 2015
    Messages
    201
    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 : 201
    Points : 486
    Points
    486

    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.

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