Simulando dados para ajustar um modelo de mediação

9

Estou interessado em encontrar um procedimento para simular dados que sejam consistentes com um modelo de mediação especificado. De acordo com a estrutura geral do modelo de equações estruturais lineares para testar modelos de mediação, primeiro descritos por Barron e Kenny (1986) e descritos em outros lugares como Judd, Yzerbyt e Muller (2013) , modelos de mediação para o resultado , mediador \ newcommand {\ med} {\ rm med} \ med e o preditor X e são governados pelas três equações de regressão a seguir: \ 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 {alinhar}YmedX

(1)Y=b11+b12X+e1(2)med=b21+b22X+e2(3)Y=b31+b32X+b32med+e3
O efeito indireto ou efeito de mediação de X em Y a med pode ser definido como b22b32 ou, equivalentemente, como b12b32 . Sob a antiga estrutura de teste para mediação, a mediação foi estabelecida testando b12 na equação 1, b22 na equação 2 e b32 na equação 3.

Até agora, tentei simular valores de med e Y que são consistentes com os valores dos vários coeficientes de regressão usando rnormin R, como o código abaixo:

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)

No entanto, parece que gerar seqüencialmente e usando as equações 2 e 3 não é suficiente, uma vez que não tenho relação entre e na equação de regressão 1 (que modela uma relação bivariada simples entre e ) usando essa abordagem . Isso é importante porque uma definição do efeito indireto (mediação) é , como descrevi acima.medYXYXYb12b32

Alguém pode me ajudar a encontrar um procedimento em R para gerar variáveis , e que atendam às restrições definidas por meio das equações 1, 2 e 3?XmedY

Patrick S. Forscher
fonte

Respostas:

4

Isso é bem direto. A razão pela qual você não tem relação entre e usando sua abordagem é por causa do código: xy

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

Se você deseja alguma relação entre e mesmo quando está incluído (ou seja, você deseja mediação parcial ), basta usar um valor diferente de zero para . Por exemplo, você pode substituir o seguinte código pelo acima: xymedb32

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

Assim, foi alterado de para . (É claro que algum outro valor específico provavelmente seria mais relevante, dependendo da sua situação, eu acabei tirar da cabeça.) b32033


Edit:
Com relação ao relacionamento marginal não ser significativo, isso é apenas uma função do poder estatístico . Como a força causal de é transmitida inteiramente através de em sua configuração original, você tem uma potência menor do que poderia de outra forma. No entanto, o efeito ainda é real em algum sentido. Quando executei seu código original (depois de definir a semente usando como um valor que acabei de tirar da cabeça), obtive um efeito significativo: 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 

...

Para obter mais energia, você pode aumentar o que está usando ou usar valores de erro menores (ou seja, use valores menores que o padrão nas chamadas). Nsd=1rnorm()

- Reinstate Monica
fonte
Obrigado por sua resposta. Suponho que minha pergunta possa ser um pouco ambígua. O que eu quero não é uma relação entre x e y no modelo 3 (que é o que você fez), mas no modelo 1 (Y = b11 + b12 * X + e1). Esclarei minha pergunta nesse sentido.
Patrick S. Forscher 10/10
Obrigado pela edição. É possível especificar diretamente o tamanho do efeito da população para o coeficiente b12?
Patrick S. Forscher 10/10
Sua pergunta neste momento é o que seria: qual é a correlação da população entre e em geral. Gostaria de saber se isso pode ser melhor formulado como uma nova pergunta, pois não tenho certeza do que estou pensando. No caso mais simples, onde todas as 3 variáveis ​​( , , ) são normalmente distribuídas e o relacionamento b / t e é totalmente mediado, então . No entanto, é mais complexo se as distribuições não forem normais (por exemplo, seu é frequências iguais de e ), ou com situações de mediação mais complexas.xyxmedyxyρx,y=ρx,medρmed,yx.5+.5
gung - Restabelece Monica
0

Aqui está um artigo sobre como modelar a mediação simples em Caron & Valois (2018) : O código 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))

Você apenas tem que especificar (tamanho da amostra), , e (efeito direto). A vantagem aqui é que você modelará coeficientes padronizados para conhecer seus tamanhos de efeito. Eles também incluíam código para padronizar, transportar as botas Baron & Kenny, Sobel e Bca.nabc

Referências

Caron, P.-O., & Valois, P. (2018). Uma descrição computacional da análise de mediação simples. The Quantitative Methods for Psychology, 14, 147-158. doi: 10.20982 / tqmp.14.2.p147

POC
fonte