Les posteurs les plus actifs de la semaine
zouzou
 
niaboc
 
Eric Wajnberg
 
lenny868
 
RapidosFlash
 
Volivoile
 
Nik
 
Florent Aubry
 
c@ssoulet
 


LM pour expliquer deux variables quantitatives ?

Aller en bas

LM pour expliquer deux variables quantitatives ?

Message par lenny868 le Ven 7 Sep 2018 - 20:03

Bonjour,

J'espère avoir votre avis concernant ma démarche : Je souhaite expliquer mes deux variables 'conform ' et 'n_conform' (conformité et non conformité à un comportement prédit) par les deux vairable 'Type_space' et 'Longueur'.

voici mon dataset :

Code:
mat=structure(list(Sample = c(4L, 13L, 28L, 37L, 40L, 1L, 10L, 22L,
31L, 7L, 16L, 19L, 25L, 34L, 5L, 14L, 29L, 38L, 41L, 2L, 11L,
23L, 32L, 8L, 17L, 20L, 26L, 35L, 6L, 15L, 30L, 39L, 42L, 3L,
12L, 24L, 33L, 9L, 18L, 21L, 27L, 36L), Type_space = structure(c(3L,
3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L,
3L, 3L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("21500", "20900",
"22000"), class = "factor"), conform = c(11, 6, 11, 12, 22, 16,
6, 17, 20, 14, 19, 11, 7, 4, 9, 7, 9, 15, 14, 2, 2, 17, 9, 0,
8, 2, 10, 5, 18, 9, 15, 17, 16, 16, 10, 24, 12, 13, 18, 16, 12,
14), n_conform = c(7, 3, 2, 4, 2, 5, 2, 8, 2, 4, 4, 5, 1, 2,
0, 1, 1, 0, 3, 3, 5, 0, 1, 10, 1, 4, 1, 2, 0, 4, 1, 1, 3, 3,
1, 0, 2, 3, 3, 2, 0, 1), Longueur = structure(c(1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L), .Label = c("C", "L"), class = "factor")), .Names = c("Sample",
"Type_space", "conform", "n_conform", "Longueur"), class = "data.frame", row.names = c(NA,
42L))

Je pensais à une regression linéaire :

Code:
a1 <- lm(cbind(conform, n_conform) ~  Longueur+ Type_space  , data = mat)
> summary(a1)
Response conform :

Call:
lm(formula = conform ~ Longueur + Type_space, data = mat)

Residuals:
     Min       1Q   Median       3Q      Max
-10.1905  -3.3405   0.1036   3.7720  11.8095

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)       13.369      2.090   6.397 1.63e-07 ***
LongueurL         -1.179      1.890  -0.623    0.537    
Type_space20900   -2.383      2.237  -1.066    0.293    
Type_space8800     0.150      2.237   0.067    0.947    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 5.775 on 38 degrees of freedom
Multiple R-squared:  0.05361,   Adjusted R-squared:  -0.02111
F-statistic: 0.7175 on 3 and 38 DF,  p-value: 0.5477


Response n_conform :

Call:
lm(formula = n_conform ~ Longueur + Type_space, data = mat)

Residuals:
    Min      1Q  Median      3Q     Max
-2.9619 -1.3190 -0.4524  0.8810  7.6810

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)       3.7619     0.7675   4.901 1.81e-05 ***
LongueurL        -1.6429     0.6942  -2.366   0.0232 *  
Type_space20900   0.2000     0.8214   0.243   0.8089    
Type_space8800   -0.5333     0.8214  -0.649   0.5201    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.121 on 38 degrees of freedom
Multiple R-squared:  0.147,     Adjusted R-squared:  0.07967
F-statistic: 2.183 on 3 and 38 DF,  p-value: 0.1059


Est-ce la meilleure alternative ? Je vois qu'en fait, R, établit deux modèles, un premier avec 'conform' et un autre avec 'n_conform'.

Dans la mesure ou je n'ai qu'un seul p-value signification pour 'n_conform ' , Longueur = L. Puis je déduire la relation entre les deux variables à travers l'Estimate ? l'Estimate est négatif, cela veut dire que pour les 'LongueurL', 'n_conform' diminue . Est-ce correct ?

Merci d'avance de votre aide.
Lenny

lenny868

Nombre de messages : 43
Date d'inscription : 16/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: LM pour expliquer deux variables quantitatives ?

Message par Eric Wajnberg le Sam 8 Sep 2018 - 6:10

Je n'ai pas compris. Vous voulez expliiquer vos deux variables conform' et 'n_conform' séparement, ou bien expliquer la proportion de conform et n_conform ? La syntaxe que vous utilisez semble indiquer que vous voulez traiter ces deux variables séparément. Cependant, il semble s’agir de comptages (Poisson) or les régressions que vous utilisez sont faites pour modéliser des variables ayant une distribution normale. Vos modèles sont donc très probablement faux.

Dans le second cas, il faut vous orienter vers une régression logistique:

Code:
> a1 <- glm(cbind(conform, n_conform) ~  Longueur+ Type_space, family=binomial,data = mat)
> anova(a1,test="Chisq")
Analysis of Deviance Table

Model: binomial, link: logit

Response: cbind(conform, n_conform)

Terms added sequentially (first to last)


           Df Deviance Resid. Df Resid. Dev Pr(>Chi)  
NULL                          41     120.17          
Longueur    1   5.3785        40     114.80  0.02039 *
Type_space  2   4.1535        38     110.64  0.12533  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Vous avez globalement un effet longueur, et c'est tout.

HTH, Eric.


Dernière édition par Eric Wajnberg le Lun 10 Sep 2018 - 10:08, édité 2 fois
avatar
Eric Wajnberg

Nombre de messages : 980
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: LM pour expliquer deux variables quantitatives ?

Message par lenny868 le Sam 8 Sep 2018 - 6:44

Bonjour,

Merci pour ce retour. Justement je cherche à expliquer la proportion de conform et n_conform. Pour le GLM (family=binomial), il est correct de garder ces donnes (conform et n_conform) sous forme de comptage  ? Je croyais qu'il fallait les convertir en variables binaires si on veut utiliser cette syntaxe.

De plus, est-ce qu'il existe un test additionnel pour affiner la direction de cette relation ?

Une autre question me vient à l'esprit, pourquoi n'est-il pas possible d'utiliser une manova à deux facteurs dans ce cas ?
Code:
a1 <- manova(cbind(conform, n_conform) ~  Longueur+ Type_space,data = mat)

Merci encore,

Lenny

lenny868

Nombre de messages : 43
Date d'inscription : 16/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: LM pour expliquer deux variables quantitatives ?

Message par Eric Wajnberg le Sam 8 Sep 2018 - 7:18

1) On peut ajuster une régression logistique avec les deux syntaxes, celle que j'utilise ici, ou avec des données en 0/1. C'est équivalent (sous R).

2) Une régression logistique n'est rien moins qu'un régression et avec summary() on peut récupérer les pentes estimées.

Code:
summary(a1)

Call:
glm(formula = cbind(conform, n_conform) ~ Longueur + Type_space,
    family = binomial, data = mat)

Deviance Residuals:
    Min       1Q   Median       3Q      Max  
-5.7902  -0.5955   0.2491   1.0095   2.7323  

Coefficients:
                Estimate Std. Error z value Pr(>|z|)    
(Intercept)       1.2758     0.2239   5.699 1.21e-08 ***
LongueurL         0.5063     0.2163   2.341   0.0192 *  
Type_space20900  -0.3129     0.2618  -1.195   0.2320    
Type_space22000   0.2074     0.2741   0.757   0.4493    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 120.17  on 41  degrees of freedom
Residual deviance: 110.64  on 38  degrees of freedom
AIC: 205.45

Number of Fisher Scoring iterations: 4
Et l'on constate que la pente associée à longeur est positive. Une augmentation de la longueur correspond à une augmentation de (du logit de) la proportion de conform.

3) La manova que vous utilisez est - une fois encore - un modèle gaussien. Or ici vous êtes dans un modèle de pourcentages (binomial). Comme les régressions simples que vous faisiez, le modèle est très probablement faux.

HTH, Eric.
avatar
Eric Wajnberg

Nombre de messages : 980
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: LM pour expliquer deux variables quantitatives ?

Message par lenny868 le Sam 8 Sep 2018 - 7:32

Super, Merci beaucoup.

Afin de ne plus tomber dans la même problématique, comment vérifier la normalité ? (désolée de revenir aux bases)

J'ai effectué
Code:
qqnorm( y = normal.data$conform )
hist( x = normal.data$conform )

Visuellement je dirais que c'est une distribution normale. Est-ce la bonne méthode ? Comment me prendre pour me décider à chaque fois ?

Merci d'avance,

Lenny

lenny868

Nombre de messages : 43
Date d'inscription : 16/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: LM pour expliquer deux variables quantitatives ?

Message par Eric Wajnberg le Sam 8 Sep 2018 - 14:44

conform est un comptage. Par définition, ca suit une loi de Poisson. (conform)/(conform+n_conform) est un pourcentage. Par définition, ca suit une loi binomiale. Même si ces deux lois convergent vers des lois normales dans certains cas particuliers, il est inutile de s'interroger ici. On part respectivement sur une loi de Poisson ou une loi Binomial, et un GLM sait gérer ceci très bien.

HTH, Eric.


Dernière édition par Eric Wajnberg le Lun 10 Sep 2018 - 4:36, édité 1 fois
avatar
Eric Wajnberg

Nombre de messages : 980
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: LM pour expliquer deux variables quantitatives ?

Message par lenny868 le Dim 9 Sep 2018 - 17:52

Ok très bien. Merci encore.

Que fait-on lorsque on a une p-value significative est un estimate par exemple de -0.05. Comment cela prend sens si l'effet de l'estimate est très diminuée ?

Lenny

lenny868

Nombre de messages : 43
Date d'inscription : 16/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: LM pour expliquer deux variables quantitatives ?

Message par Eric Wajnberg le Lun 10 Sep 2018 - 4:41

lenny868 a écrit:Ok très bien. Merci encore.

Que fait-on lorsque on a une p-value significative est un estimate par exemple de -0.05. Comment cela prend sens si l'effet de l'estimate est très diminuée ?

Lenny
Votre question n'est pas compréhensible (relisez-vous !). Que veut dire "l'effet de l'estimate est très diminuée". Diminué par rapport à quoi ? Etc.

Si vous obtenez une pente de -0.05 après un ajustement, et que cette estimation correspond à une p-value inférieure à 0.05, c'est juste que cette pente est différente de zéro. Une valeur de -0.05, ça peut-être énorme, tout dépend de la question posée, de l'unité de la variable associée, etc.

HTH, Eric.
avatar
Eric Wajnberg

Nombre de messages : 980
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: LM pour expliquer deux variables quantitatives ?

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum