Simulation de données pour s'adapter à un modèle de médiation

9

Je souhaite trouver une procédure pour simuler des données cohérentes avec un modèle de médiation spécifié. Selon le cadre général du modèle d'équation structurelle linéaire pour tester les modèles de médiation décrit pour la première fois par Barron et Kenny (1986) et décrit ailleurs comme Judd, Yzerbyt et Muller (2013) , modèles de médiation pour le résultat , mediator \ newcommand {\ med} {\ rm med} \ med et le prédicteur X et sont régis par les trois équations de régression suivantes: \ begin {align} Y & = b_ {11} + b_ {12} X + e_1 \ tag {1} \\ \ med & = b_ {21} + b_ {22} X + e_2 \ tag {2} \\ Y & = b_ {31} + b_ {32} X + b_ {32} \ med + e_3 \ tag {3} \ end {aligner}YmedX

(1)Y=b11+b12X+e1(2)med=b21+b22X+e2(3)Y=b31+b32X+b32med+e3
L'effet indirect ou l'effet de médiation de X sur Y à med peut être défini comme b22b32 ou, de manière équivalente, comme b12b32 . Dans l'ancien cadre des tests de médiation, la médiation était établie en testant b12 dans l'équation 1, b22 dans l'équation 2 et b32 dans l'équation 3.

Jusqu'à présent, j'ai tenté de simuler des valeurs de med et Y qui sont cohérentes avec les valeurs des différents coefficients de régression utilisant rnormin R, comme le code ci-dessous:

x   <- rep(c(-.5, .5), 50)
med <- 4 + .7 * x + rnorm(100, sd = 1) 

# Check the relationship between x and med
mod <- lm(med ~ x)
summary(mod)

y <- 2.5 + 0 * x + .4 * med + rnorm(100, sd = 1)

# Check the relationships between x, med, and y
mod <- lm(y ~ x + med)
summary(mod)

# Check the relationship between x and y -- not present
mod <- lm(y ~ x)
summary(mod)

Cependant, il semble que la génération séquentielle de et utilisant les équations 2 et 3 ne soit pas suffisante, car il me reste sans relation entre et dans l'équation de régression 1 (qui modélise une relation bivariée simple entre et ) en utilisant cette approche . Ceci est important car une définition de l'effet indirect (c'est-à-dire la médiation) est , comme je le décris ci-dessus.medYXYXYb12b32

Quelqu'un peut-il m'aider à trouver une procédure dans R pour générer des variables , et qui satisfont les contraintes que j'ai définies à l'aide des équations 1, 2 et 3?XmedY

Patrick S. Forscher
la source

Réponses:

4

C'est assez simple. La raison pour laquelle vous n'avez aucune relation entre et utilisant votre approche est à cause du code: xy

y <- 2.5 + 0 * x + .4 * med + rnorm(100, sd = 1)

Si vous voulez une relation entre et même lorsque est inclus (c'est-à-dire que vous voulez une médiation partielle ), vous utiliserez simplement une valeur non nulle pour place. Par exemple, vous pouvez remplacer le code suivant par ce qui précède: xymedb32

y <- 2.5 + 3 * x + .4 * med + rnorm(100, sd = 1)

Ainsi, est passé de à . (Bien sûr, une autre valeur spécifique serait probablement plus pertinente, selon votre situation, je viens d'en choisir du haut de ma tête.) b32033


Edit:
En ce qui concerne la relation marginale étant non significative, c'est juste une fonction de la puissance statistique . Étant donné que la force causale de est entièrement transmise par dans votre configuration d'origine, votre puissance est inférieure à ce que vous pourriez autrement. Néanmoins, l'effet est toujours réel dans un certain sens. Lorsque j'ai exécuté votre code d'origine (après avoir défini la valeur de départ en utilisant une valeur que je viens à nouveau de retirer du haut de ma tête), j'ai eu un effet significatif: xyxmed90

set.seed(90)
x <- rep(c(-.5, .5), 50)
med <- 4 + .7 * x + rnorm(100, sd = 1) 

# Check the relationship between x and med
mod <- lm(med ~ x)
summary(mod)

y <- 2.5 + 0 * x + .4 * med + rnorm(100, sd = 1)

# Check the relationships between x, med, and y
mod <- lm(y ~ x + med)
summary(mod)

# Check the relationship between x and y -- not present
mod <- lm(y ~ x)
summary(mod)

...
Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   3.8491     0.1151  33.431   <2e-16 ***
x             0.5315     0.2303   2.308   0.0231 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

...

Pour obtenir plus de puissance, vous pouvez augmenter le vous utilisez ou utiliser des valeurs d'erreur plus petites (c'est-à-dire utiliser des valeurs inférieures à la valeur par défaut dans les appels). Nsd=1rnorm()

gung - Réintégrer Monica
la source
gung, merci pour votre réponse. Je suppose que ma question pourrait être un peu ambiguë. Ce que je veux, ce n'est pas une relation entre x et y dans le modèle 3 (c'est ce que vous avez fait), mais dans le modèle 1 (Y = b11 + b12 * X + e1). J'ai clarifié ma question à cet effet.
Patrick S.Forscher
Merci pour l'édition. Est-il possible de spécifier directement la taille de l'effet de population pour le coefficient b12?
Patrick S.Forscher
Votre question à ce stade est ce qui serait: quelle est la corrélation de population entre & en général. Je me demande si cela pourrait être mieux posé comme une nouvelle question, car je ne suis pas sûr du haut de ma tête. Dans le cas le plus simple, où les 3 variables ( , , ) sont normalement distribuées, et la relation b / t & est entièrement médiée, alors . Cependant, il est plus complexe si les distributions ne sont pas normales (par exemple, votre est des fréquences égales de & ), ou des situations w / médiationnels plus complexes.xyxmedyxyρx,y=ρx,medρmed,yx.5+.5
gung - Rétablir Monica
0

Voici un article sur la façon de modéliser la médiation simple dans Caron & Valois (2018) : Il existe un code R

  x <- rnorm(n)
  em <- sqrt(1-a^2)
  m <- a*x + em*rnorm(n)
  ey2 <- sqrt(ey)
  y <- cp*x + b*m + ey2*rnorm(n)
  data <- as.data.frame(cbind(x, m, y))

Il suffit de spécifier (la taille de l'échantillon), , et (effet direct). L'avantage ici est que vous modéliserez des coefficients standardisés afin de connaître leurs tailles d'effet. Ils comprenaient également du code pour normaliser, porter le bootstrap Baron & Kenny, Sobel et Bca.nabc

Références

Caron, P.-O., et Valois, P. (2018). Une description informatique de l'analyse de médiation simple. The Quantitative Methods for Psychology, 14, 147-158. doi: 10.20982 / tqmp.14.2.p147

POC
la source