7

mediate パッケージを使用して、R でメディエーション分析を実行しようとしています。これを行う方法に関するドキュメントを見て、R が提供する例を読みました (つまり、既に "example(mediate)" を実行しました)。それにもかかわらず、最も単純なメディエーションを実行することはできません。理想的には、Preacher & Hayes (2004) のようなブートストラップ手順を実行したいと考えています。

実行しようとしているコードは次のとおりです。

model.m <- lm(desirdata1$zpers1 ~ desirdata1$zdesir1 + desirdata1$age)
model.y <- lm(desirdata1$zpers1 ~ desirdata1$age)
age1test <- mediate(model.m, model.y,treat="age", mediator="zdesir1",
                    boot=TRUE, sims=50)

desirdataデータセットは、治療はage、結果はzpers1、メディエータは "zdesir1" と呼ばれることに注意してください。これを実行すると、次のエラーが表示されます。

Error in `[.data.frame`(m.data, , treat) : undefined columns selected

変数(具体的には治療変数)が存在しないと主張しているようです。ただし、names(desirdata) を実行すると、変数が存在し、他のすべての変数と同様に正しく名前が付けられていることが示されます。最初の 2 つのモデル (model.m と model.y) は正常に実行され、出力は期待どおりに見えます。実行できないのは仲介モデルだけです。私が知る限り、タイプミスはしておらず、これを 100 回チェックしました。

考え?

4

5 に答える 5

2

ドキュメントの例を読むとmodel.m、メディエーター モデルの結果は、メインの回帰オブジェクトの結果とは異なりますmodel.y。背景とどのような種類のデータを説明していないため、これを確信するのは難しいですが、次のように入力するつもりだったのだろうかと思います。

model.m <- lm(zdesir1 ~  age, data=desirdata1)
model.y <- lm(zpers1 ~ age, , data=desirdata1 )
age1test <- mediate(model.m, model.y,treat="age", mediator="zdesir1",
                    boot=TRUE, sims=50)

formulaオブジェクトを使用してキャストしdataます。これは、ベクトルを指定しただけで一部の回帰関数が機能しなくなるためです。誤字脱字も見やすくなります。

于 2012-09-18T21:59:24.997 に答える
1

MBESS パッケージを試してください。説教者はそれを推奨し、調停機能を使用するだけです。ブートストラップが必要な場合は、bootstrap=TRUE になっていることを確認してください。B はブートストラップの数です。

mediation(x, mediator, dv, S = NULL, N = NULL, x.location.S = NULL,
mediator.location.S = NULL, dv.location.S = NULL, mean.x = NULL,
mean.m = NULL, mean.dv = NULL, conf.level = 0.95,
bootstrap = FALSE, B = 1000, which.boot="both", save.bs.replicates=FALSE)
于 2012-09-19T05:59:34.150 に答える
0

シミュレートされたデータで同じ問題に遭遇したので、デバッグ (仲介) を実行し、問題の場所を見つけました。コードの [treat="age", mediator="zdesir1"] 部分に問題があると思います。データを添付すれば、その問題に遭遇することはありません。または、問題を解決する [treat="desirdata1$age", mediator="desirdata1$zdesir1"] を使用できます。

于 2013-01-11T00:29:40.577 に答える
0

これを試してください:

model.m <- lm(zdesir1 ~ age, data=desirdata1)
model.y <- lm(zpers1 ~ age + zdesir1, data=desirdata1)
age1test <- mediate(model.m, model.y,treat="age", mediator="zdesir1",
                    boot=TRUE, sims=50)

簡単にするために、メディエーター モデル (model.m) はメディエーターを結果として持つ必要があります。

于 2013-06-07T07:17:50.750 に答える