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:

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:

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:
# 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.
# 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:
# 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:
# 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é.
# 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:
library(car)
library(interactions)
Puis, importons nos données:
df <- read.csv("numeric-moderation.csv")
Nous devons ensuite centrer nos prédicteurs numériques:
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.
m <- lm(score ~ predicteur_1.c * predicteur_2.c, data=df)
Nous pouvons maintenant visualiser nos données dans un diagramme:
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"
)

Nous devons maintenant vérifier les suppositions de notre modération:
par(mfrow=c(1,1))
plot(m)
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é:
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:
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:
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.