test unilatéral - fonction glht {multcomp}

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Pauline Bonaventure
Messages : 2
Enregistré le : 15 Juin 2022, 05:11

test unilatéral - fonction glht {multcomp}

Messagepar Pauline Bonaventure » 16 Juin 2022, 01:14

Bonjour,

Je vous prie de bien vouloir m'excuser par avance si cette question est stupide. Je suis novice dans l'utilisation de R. J'ai des difficultés à comprendre comment sont fixées les hypothèses alternatives dans la fonction glht du package multcomp. Je me sers d'un tutoriel trouvé sur le site https://delladata.fr pour expliquer mon problème :

Code : Tout sélectionner

library(tidyverse)
library(car)
library(Rmisc)
library(multcomp)

N1 <- 9
Tension <-rep(c("L", "M", "H"), each=2*N1)
Wool <- rep(rep(c("A", "B"),each= N1),3)
set.seed(42)
L_A<- rnorm(N1,12,1)
L_B <- rnorm(N1,9,1)
M_A <- rnorm(N1,7,1)
M_B <- rnorm(N1,10,1)
H_A <- rnorm(N1,8.5,1)
H_B <- rnorm(N1,7,1)
Usure <- c(L_A, L_B, M_A, M_B, H_A, H_B)
mydata <- data.frame(Usure, Tension, Wool)
mydata$Tension <- as.factor(mydata$Tension)
mydata$Tension <- factor(mydata$Tension, levels=c("L", "M", "H"))


ggplot(mydata, aes(x=Tension, y=Usure, colour=Wool, fill=Wool))+
  geom_point(position=position_jitterdodge(dodge.width=0.7), size=2) +
  geom_boxplot(alpha=0.5, position = position_dodge(width=0.8), fatten=NULL)+
  scale_colour_manual(values=c(c("#1E90FF", "#D02090", "#FFFFFF")))+ scale_fill_manual(values=c("#1E90FF", "#D02090", "#FFFFFF"))+
  stat_summary(fun.y = mean, geom = "errorbar", aes(ymax = ..y.., ymin = ..y..), width=0.65,size = 1.5, linetype = "solid",position = position_dodge(width=0.7))+
  ylab("Usure")+
  theme_classic()


A titre d'exemple, on peut faire l'hypothèse que l'usure d'un fil de la laine A avec une tension faible est supérieure à celle de la laine B avec la même tension (H1 : L_A > L_B). est-ce bien cela ?

Ce que je ne comprends, c'est comment interpréter les résultats que j'obtiens lorsque je fais un test de tukey unilatéral :

Code : Tout sélectionner

mydata$grp <- interaction(mydata$Tension, mydata$Wool, sep="_")

mod1 <- lm(Usure~Tension * Wool, contrasts=list(Tension=contr.sum, Wool=contr.sum), data=mydata)


library(car)
Anova(mod1, type=3)


mod_grp <- lm(Usure~grp, data=mydata)
Anova(mod_grp)

library(multcomp)

mc_tukey <- glht(mod_grp, linfct=mcp(grp="Tukey"),alternative="greater")
summary(mc_tukey)



J'obtiens :

Code : Tout sélectionner

    Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Tukey Contrasts


Fit: lm(formula = Usure ~ grp, data = mydata)

Linear Hypotheses:
               Estimate Std. Error t value  Pr(>t)   
M_A - L_A <= 0  -5.7215     0.5289 -10.817 1.00000   
H_A - L_A <= 0  -4.7268     0.5289  -8.936 1.00000   
L_B - L_A <= 0  -3.6792     0.5289  -6.956 1.00000   
M_B - L_A <= 0  -2.7894     0.5289  -5.274 1.00000   
H_B - L_A <= 0  -5.2766     0.5289  -9.976 1.00000   
H_A - M_A <= 0   0.9948     0.5289   1.881 0.27984   
L_B - M_A <= 0   2.0424     0.5289   3.861 0.00225 **
M_B - M_A <= 0   2.9322     0.5289   5.544 < 0.001 ***
H_B - M_A <= 0   0.4449     0.5289   0.841 0.84648   
L_B - H_A <= 0   1.0476     0.5289   1.981 0.23698   
M_B - H_A <= 0   1.9374     0.5289   3.663 0.00415 **
H_B - H_A <= 0  -0.5498     0.5289  -1.039 1.00000   
M_B - L_B <= 0   0.8898     0.5289   1.682 0.37908   
H_B - L_B <= 0  -1.5974     0.5289  -3.020 1.00000   
H_B - M_B <= 0  -2.4872     0.5289  -4.702 1.00000   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)


Si je reprends mon exemple "L_B - L_A", ce que je comprends (mais mal), c'est qu'on rejette H0.
et à l'inverse avec l'autre test unilatéral :

Code : Tout sélectionner

 mc_tukey <- glht(mod_grp, linfct=mcp(grp="Tukey"),alternative="less")
summary(mc_tukey)

    Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Tukey Contrasts


Fit: lm(formula = Usure ~ grp, data = mydata)

Linear Hypotheses:
               Estimate Std. Error t value Pr(<t)   
M_A - L_A >= 0  -5.7215     0.5289 -10.817 <0.001 ***
H_A - L_A >= 0  -4.7268     0.5289  -8.936 <0.001 ***
L_B - L_A >= 0  -3.6792     0.5289  -6.956 <0.001 ***
M_B - L_A >= 0  -2.7894     0.5289  -5.274 <0.001 ***
H_B - L_A >= 0  -5.2766     0.5289  -9.976 <0.001 ***
H_A - M_A >= 0   0.9948     0.5289   1.881 1.0000   
L_B - M_A >= 0   2.0424     0.5289   3.861 1.0000   
M_B - M_A >= 0   2.9322     0.5289   5.544 1.0000   
H_B - M_A >= 0   0.4449     0.5289   0.841 1.0000   
L_B - H_A >= 0   1.0476     0.5289   1.981 1.0000   
M_B - H_A >= 0   1.9374     0.5289   3.663 1.0000   
H_B - H_A >= 0  -0.5498     0.5289  -1.039 0.7513   
M_B - L_B >= 0   0.8898     0.5289   1.682 1.0000   
H_B - L_B >= 0  -1.5974     0.5289  -3.020 0.0244 * 
H_B - M_B >= 0  -2.4872     0.5289  -4.702 <0.001 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)



et ici, on a une p-value inférieure à notre seuil de significativité, avec H1 "L_B - L_A >= 0" et une t-value négative.
Je me doute bien que mon interprétation est fausse mais je tourne en rond.

Pourriez-vous m'aider ?

Par avance, je vous remercie.

Bonne journée,

Pauline

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: test unilatéral - fonction glht {multcomp}

Messagepar Logez Maxime » 16 Juin 2022, 13:27

Bonjour,

La question tourne plus autour de la logique des tests statistiques que du logiciel en lui même.
Tu as vu que selon l'argument que tu spécifies les sorties ne sont pas les mêmes LB - LA > 0 ou LB - LA <0 parce que l'hypothèse alternative n'est pas la même.
Il te faut plutôt t'orienter vers un forum de statistique ou de documents tel quel les statistiques pour les statophobes.

Cordialement,
Maxime

Pauline Bonaventure
Messages : 2
Enregistré le : 15 Juin 2022, 05:11

Re: test unilatéral - fonction glht {multcomp}

Messagepar Pauline Bonaventure » 17 Juin 2022, 04:39

Bonjour,

Ok, merci beaucoup,

Cordialement,

Pauline


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité