2

でメディエーション分析を実行するときに、変数名の順列を含むデータ フレームの行をループするにはどうすればよいlavaanですか?

var1var2var3、 の4 つの変数があるとしvar4ます。

df<- data.frame(var1 = rnorm(100), 
                var2 = rnorm(100), 
                var3 = rnorm(100),
                var4 = rnorm(100))

I を使用しgtools::permutations()て、4 つの変数のすべての可能な順列を 3 つのセットに保存します。

permut <- 
  gtools::permutations(n = 4, r = 3, v = names(df), repeats.allowed = FALSE)

colnames(permut) <- c("Y", "X", "M")

> head(permut)
     Y      X      M     
[1,] "var1" "var2" "var3"
[2,] "var1" "var2" "var4"
[3,] "var1" "var3" "var2"
[4,] "var1" "var3" "var4"
[5,] "var1" "var4" "var2"
[6,] "var1" "var4" "var3"

次に、構文を使用してメディエーション モデルを設定します。ここで、 と の関係に対するメディエーションlavaan効果に関心があります。MXY

mod <- "
    M ~ a * X
    Y ~ c * X + b * M
    ind := a*b
    tot := c + (a*b)
    "

モデルを実行し、その結果を将来の検査のために保存したい:

library(lavaan)
library(dplyr)

#fit the model
fit <- sem(mod, df, se = "robust")

#save results
result <-
parameterestimates(fit) %>% filter(op != "~~")

ここでの私の質問はこれです:

の各行の変数名として使用するようにRに指示し、 からのデータと からのモデル構文を使用してモデルを適合させ、最終的にすべてのモデル適合の結果を保存する方法は?Y,X,Mpermutdfmod

上記のコードは、より複雑なモデルを同じ方法で実行するために使用したい最も単純なシナリオです。

さまざまな変数の線形モデルのループに関する回答を認識しています:可能なすべての組み合わせループ 、回帰モデル項の組み合わせのループ 、従属変数に対する各独立変数の線形回帰ループ、およびおそらく最も近いもの:参照変数の使用方法式の文字列で? 、しかし、それでも私は立ち往生しており、週末にこれを解決できません。

4

1 に答える 1