Rで多変量の結果をシミュレートする方法は?


10

ほとんどの状況では、ような1つの結果/応答変数のみを扱います。ただし、一部のシナリオ、特に臨床データでは、結果変数は高次元/多変量になる可能性があります。など、含ま、と変数を、これらの結果は、すべて相関しています。治療を受けることを表す場合(はい/いいえ)、Rでこのタイプのデータをどのようにシミュレートできますか?Y = β X + ε Y Y 1 Y 2 Y 3、Xy=a+bバツ+εY=βバツ+εYY1Y2Y3バツ

実際の例では、各患者は2種類のバイパス手術のいずれかを受け取り、研究者はバイパス手術後に痛み、腫れ、疲労などについて各患者を測定します(各症状の発生率は0〜10)。私は結果(症状の重症度)が多変量正常であると「想定」しています。この実例が私の質問を明確にしてくれることを願っています。よろしくお願いします。


はどのような分布がありますか?それは通常の多変量だ場合は、Rのmnormtライブラリを見てY
— マクロ

「多変量データ」は多くの根拠をカバーしているため、この質問はかなり広範です。どのような具体的なアプリケーションを考えていますか?
— whuber

実際に役立つ例を追加しましたが、これは参考になるはずです。感謝
— Tu.2

回答:


9

多変量正規値をでシミュレートしmvtnorm::rmvnormます。これは、パラメーターのベクトルを指定できる一変量乱数ジェネレーターのようには機能しないようですが、この制限は簡単に回避できます。

たとえば、モデルを考えてみましょう

E(y1、y2、y3)=(−1+バツ、2バツ、1−3バツ)

ここで、には多変量正規分布があり、Var (y i)= 1、Cov (y 1、y 2)= Cov (y 2、y 3)= 0.5、Cov (y 1、y 3)= 0です。この共分散行列をRで指定してみましょう。yVar(y私)=1Cov(y1、y2)=Cov(y2、y3)=0.5Cov(y1、y3)=0

sigma <- matrix(c(1,   0.5, 0,  
                  0.5, 1,   0.5,
                  0,   0.5, 1  ), 3, 3)

実験のために、を1から10まで変化させ、毎回3回の複製を行うことにより、このモデルのデータを生成してみましょう。定数項も含める必要があります。バツ110

data <- cbind(rep(1,10*3), rep(1:10,3))

モデルは平均を決定します:

beta <- matrix(c(-1,1,  0,2,  1,-3), 2, 3)
means <- data %*% beta

複数の多変量結果を生成するための回避策は以下を使用することapplyです:

library(mvtnorm) # Contains rmvnorm
sample <- t(apply(means, 1, function(m) rmvnorm(1, mean=m, sigma=sigma)))

2

ベイジアンネットワーク(BN)は、説明するコンテキストで一般的に使用されます。生成モデル、BNは、前処理)、あなたの場合には1とサブグループすることができ、あなたのドメイン変数間の統計的依存関係を表すために、2)治療、および3)治療後の変数を可能にします。既存の患者データでモデルをトレーニングし、特定の患者の証拠を入力(観測値を入力)して、観測値が他の変数(結果としてラベル付けされた変数、つまり治療後の変数を含む)にどのように影響するかを調査できます。

巧妙なトリックの1つは、さまざまな治療タイプが結果変数に及ぼす影響を実際に評価できることです。これは介入と呼ばれます。興味があれば、関連する論文をこちらに掲載しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.