Skip to content

Modération avec modérateur numérique

Introduction

La modération avec modérateur numérique permet de tester l'effet de prédicteurs qui sont modulés par une autre variable numérique.

Bases théoriques

Dans le cas de la modération avec un modérateur binaire, nous pouvions calculer une pente pour chaque modalité de la variable modératrice:

Modération avec modérateur binaire

Or, en présence d'un modérateur numérique, il existe une infinité de pentes calculables (on peut en calculer une lorsque z=0, lorsque z=0.1, lorsque z=0.02, etc). Pour tout de même pouvoir représenter nos pentes, nous utilisons les pentes simples: une pente pour la moyenne de la variable modératrice, l'une pour la moyenne + 1 écart-type et une autre pour la moyenne - 1 écart-type:

Modération avec modérateur numérique

Cette représentation permet d'avoir une idée de l'effet d'une augmentation ou de la diminution de la variable modératrice sur l'effet du prédicteur.

Application

Centrage des prédicteurs numériques

Avant de pouvoir calculer notre modération, il est nécessaire de centrer nos prédicteurs numériques (faire en sorte que leur moyenne soit égale à 0). Cela permet de rendre l'interprétation plus pertinente. Le centrage se fait de la façon suivante:

Syntaxe R
# Soit y la variable dépendante, x le prédicteur numérique à centrer
data$x.c <- scale(data$x, scale=FALSE)

Comment choisir le modérateur ?

En présence de prédicteurs numériques, il faut décider lequel est le modérateur de l'autre. Ce choix se fait sur des raisons conceptuelles.

Syntaxe R
# Soit y la variable dépendante, x1.c le prédicteur numérique centré
# et x2.c le modérateur numérique centré
m <- lm(data$y ~ data$x1.c*data$x2.c)
summary(m)

Si l'interaction est significative, il faut ensuite l'interpréter en calculant la valeur des pentes simples:

Syntaxe R
# Soit m le modèle de régression linéaire, x1.c le prédicteur numérique centré
# et x2.c le modérateur numérique centré
library(interactions)
sim_slopes(m1, pred=x1.c, modx=x2.c)

Conditions d'application

Conditions d'application

Les suppositions de la modération sont les mêmes,— indépendamment de si le modérateur est numérique ou binaire — soit :

  • La linéarité du modèle.
  • La distribution normale des résidus.
  • L'homoscédasticité (constance de la variance des résidus à tous les niveaux du prédicteur).
  • L'absence de valeurs extrêmes.
  • L'absence de multicolinéarité (absence de corrélation forte entre 2 prédicteurs ou plus).

Comme pour la régression simple, nous pouvons vérifier les 4 premières suppositions de la façon suivante:

Syntaxe R
# Soit m le modèle linéaire
par(mfrow=c(1,1))
plot(m)

Pour tester la multicolinéarité, nous utilisons le GVIF (Generalized Variance Inflation Factor):

Quelle valeur examiner ?

Dans un modèle contenant des termes d'interaction, il faut examiner la valeur de GVIF^(1/(2*Df)). Il s'agit de la valeur du GVIF ajusté aux degrés de liberté.

Syntaxe R
# Soit m le modèle linéaire
library(car)
vif(m, type="predictor")

Taille d'effet

Comme dans le cadre d'une régression multiple, nous utilisons le R2 ajusté pour déterminer la part de la variance qui peut être expliquée par l'ensemble de nos prédicteurs.

Exemple

Voici nos données et notre fichier d'analyse:

Fichiers
numeric-moderation.csv
numeric-moderation.R

Commençons par activer les librairies nécessaires dans R:

Activation des librairies
library(car)
library(interactions)

Puis, importons nos données:

Importation des données
df <- read.csv("numeric-moderation.csv")

Nous devons ensuite centrer nos prédicteurs numériques:

Centrage des prédicteurs
df$predicteur_1.c <- scale(df$predicteur_1, scale=FALSE)
df$predicteur_2.c <- scale(df$predicteur_2, scale=FALSE)

Réalisons maintenant notre modèle linéaire:

Note

Ici nous considérons que le prédicteur 2 est le modérateur. Nous souhaitons donc tester la façon dont il module l'effet du prédicteur 1 sur la variable dépendante.

Modération avec modérateur binaire
m <- lm(score ~ predicteur_1.c * predicteur_2.c, data=df)

Nous pouvons maintenant visualiser nos données dans un diagramme:

Graphique de la modération
interact_plot(
  m, pred=predicteur_1.c, 
  modx=predicteur_2.c, plot.points=TRUE, 
  interval=TRUE, y.label="Score",
  x.label="Prédicteur 1", 
  legend.main="Prédicteur 2\n(modérateur)",
  main.title="Modération avec modérateur numérique"
)

Représentation graphique de nos données


Nous devons maintenant vérifier les suppositions de notre modération:

Vérification des suppositions
par(mfrow=c(1,1))
plot(m)

Graphique des résidus par rapport aux valeurs ajustées

Graphique Q-Q

Graphique de localisation d'échelle

Graphique des résidus par rapport au levier

Le graphique de localisation d'échelle penche légèrement vers la gauche, mais il s'agit ici toutefois d'un résultat acceptable.

Puis nous testons notre modèle pour la multicolinéarité:

Generalized Variance Inflation Factor
vif(m, type="predictor")
GVIF Df GVIF^(1/(2*Df)) Interacts With Other Predictors
predicteur_1.c 1 3 1 predicteur_2.c --
predicteur_2.c 1 3 1 predicteur_1.c --

Les suppositions semblent être respectées. Nous pouvons donc interpréter nos résultats:

Interprétation des résultats
summary(m)
Estimate Std. Error t value p
(Intercept) 0.08553 0.04266 2.005 0.0455 *
predicteur_1.c 0.45079 0.08218 5.485 6.59e-08 ***
predicteur_2.c 0.86301 0.21362 4.040 6.19e-05 ***
predicteur_1.c:predicteur_2.c 4.24439 0.42774 9.923 <2e-16 ***
F-statistic p-value Multiple R2 Adjusted R2
48.67 < 2.2e-16 0.2274 0.2228

Nous voulons ensuite connaître les valeurs des pentes simples:

Calcul des pentes simples
sim_slopes(m, pred=predicteur_1.c, modx=predicteur_2.c)
Johnson-Neyman Interval
When predicteur_2.c is OUTSIDE the interval [-0.15, -0.07], the slope of predicteur_1.c is p < .05.
moderator Est. S.E. t val. p
predicteur_2.c = -2.005599e-01 (- 1 SD) -0.40 0.12 -3.48 0.00
predicteur_2.c = -1.776357e-16 (Mean) 0.45 0.08 5.49 0.00
predicteur_2.c = 2.005599e-01 (+ 1 SD) 1.30 0.12 10.64 0.00

Nous pouvons déduire de ces résultats que nos prédicteurs sont significatifs et qu'ils permettent d'expliquer ~22% de la variance des scores (F(3,496) = 48.67, p<.001, R2 = .223). Le prédicteur a un effet significatif sur le score (B = 0.45, p<.001) ainsi qu'un effet d'interaction avec le modérateur (B = 4.24, p<.001).

Si le modérateur prend des valeurs élevées, alors la connexion entre le prédicteur et le score est positive. Cependant, lorsque le prédicteur prend des valeurs faibles, alors la relation entre le prédicteur et le score devient négative.