Arabuluculuk modeline uyacak şekilde veri simülasyonu


9

Belirli bir uyumlulaştırma modeliyle tutarlı verileri simüle etmek için bir prosedür bulmakla ilgileniyorum. Barron ve Kenny'nin (1986) ilk önce özetlediği ve Judd, Yzerbyt ve Muller (2013) gibi başka yerlerde açıklanan arabuluculuk modellerinin test edilmesine yönelik genel doğrusal yapısal denklem modeli çerçevesine göre , sonucu için arabuluculuk modelleri , arabulucu \ newcommand {\ med} {\ rm med} \ med ve öngörücü X ve aşağıdaki üç regresyon denklemine tabidir: \ 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 {hizalama}YmedX

(1)Y=b11+b12X+e1(2)med=b21+b22X+e2(3)Y=b31+b32X+b32med+e3
Dolaylı etkisi ya da arabuluculuk etkisi X ile Y arasında med ya olarak tanımlanabilir b22b32 olarak, eşdeğer ya da b12-b32 . Eski arabuluculuk testi çerçevesi altında, arabuluculuk denklem 1'de b12 , denklem b22 ve denklem 3'te b_ {32} test edilerek oluşturulmuştur b32.

Şimdiye kadar, aşağıdaki kod gibi, içinde kullanılan çeşitli regresyon katsayılarının değerleri ile tutarlı med ve Y değerlerini simüle etmeye çalıştım :YrnormR

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)

Bununla birlikte, bu yaklaşımı kullanarak regresyon denklemi 1'de ( ve arasında basit bir iki değişkenli ilişkiyi modeller) ve arasında bir ilişki bırakmadığım için 2 ve 3 denklemlerini kullanarak sırayla ve üretmek yeterli değildir. . Bu önemlidir, çünkü yukarıda tarif ettiğim gibi dolaylı (yani, arabuluculuk) etkisinin bir tanımı .medYXYXYb12-b32

Herkes R, , ve değişkenlerini oluşturmak için 1, 2 ve 3 denklemlerini kullanarak ayarladığım kısıtlamaları karşılayan bir prosedür bulmama yardımcı olabilir mi?XmedY

Yanıtlar:


4

Bu oldukça basittir. Yaklaşımınızı kullanarak ve arasında bir ilişkinizin olmamasının nedeni koddur: xy

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

dahil edilmiş olsa bile ve arasında bir ilişki istiyorsanız (yani, kısmi arabuluculuk istiyorsunuz ), bunun yerine için sıfırdan farklı bir değer kullanırsınız. Örneğin, yukarıdaki kodu aşağıdaki kodla değiştirebilirsiniz: xymedb32

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

Bu nedenle, olarak değiştirildi ile . (Tabii ki, başka bir spesifik değer muhtemelen daha alakalı olurdu, durumunuza bağlı olarak , başımın üstünden seçtim .) b32033


Düzenleme:
marjinal ilişkisi önemli olmadığı için, bu sadece istatistiksel gücün bir işlevidir . nedensel kuvveti tamamen orijinal kurulumunuzda üzerinden geçtiğinden , aksi takdirde alabileceğinizden daha düşük bir güce sahipsiniz. Bununla birlikte, etki bir anlamda hala gerçek . Orijinal kodunuzu çalıştırdığımda ( tekrar başımın üstünden aldığım bir değer olarak tohumu ayarladıktan sonra ), önemli bir etki elde ettim: 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 

...

Daha fazla güç elde etmek için, artırabilir kullandığınız ya (yani kullanılmasının daha küçük hata değerlerini kullanmak daha az varsayılan dışında değerler içinde çağrılar). N-sd=1rnorm()


gung, cevabın için teşekkürler. Sanırım sorum biraz belirsiz olabilir. İstediğim model 3'te x ve y arasındaki ilişki değil (yaptığınız şey), ancak model 1'de (Y = b11 + b12 * X + e1). Bu konudaki sorumu netleştirdim.
Patrick S. Forscher

Düzenleme için teşekkürler. B12 katsayısı için popülasyon etkisinin boyutunu doğrudan belirlemek mümkün müdür?
Patrick S. Forscher

Bu noktada sorunuz ne olacaktır: arasındaki nüfus korelasyonu nedir x & yGenel olarak. Acaba bunun en iyi yeni soru olarak sorulup sorulmayacağını merak ediyorum, çünkü başımın tepesinden emin değilim. En basit durumda, 3 değişkenin tümü (x, med, y) normal olarak dağıtılır ve ilişki b / t x & ybir tam daha sonra aracılıkρx,y=ρx,med*ρmed,y. Ancak, dağılımlar normal değilse daha karmaşıktır (ör.x eşit frekanslarıdır -.5 & +.5) veya w / daha karmaşık arabuluculuk durumları.
gung - Monica'yı eski durumuna getirin

0

İşte Caron & Valois'te (2018) basit arabuluculuğun nasıl modelleneceğine dair bir makale : R kodu var

  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))

Sadece belirtmelisin n (örnek boyutu), bir, b ve c'(Doğrudan etki). Buradaki avantaj, standart katsayıları modellemeniz ve böylece etki boyutlarını bilmenizdir. Ayrıca standart dışı hale getirme, Baron & Kenny, Sobel ve Bca bootstrapini taşıma kodunu da içeriyorlardı.

Referanslar

Caron, P.-O. ve Valois, P. (2018). Basit arabuluculuk analizinin hesaplamalı bir tanımı. Psikoloji için Sayısal Yöntemler, 14, 147-158. doi: 10,20982 / tqmp.14.2.p147

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.