従属変数が非正規分布である回帰データをシミュレートします


8

回帰分析の場合、データ生成プロセスを理解して、使用した方法がどのように機能するかを確認すると便利な場合があります。単純な線形回帰でこれを行うのはかなり簡単ですが、従属変数が特定の分布に従う必要がある場合は、これは当てはまりません。

単純な線形回帰を考えます。

N    <- 100
x    <- rnorm(N)
beta <- 3 + 0.4*rnorm(N)
y    <- 1 + x * beta + .75*rnorm(N)

同じアプローチを使用する方法はありますがy、通常とは異なる方法があると思いますか?

回答:


10

私があなたの質問を正しく理解していれば、これはとても簡単です。エラーをどの分布にするかを決定し、対応するランダム生成関数を使用するだけです。

1

コードを変更する例を次に示します。

set.seed(5840)  # this makes the example exactly reproducible
N      <- 100
x      <- rnorm(N)
beta   <- 0.4
errors <- rlnorm(N, meanlog=0, sdlog=1)
errors <- -1*errors   # this makes them left skewed
errors <- errors - 1  # this centers the error distribution on 0
y      <- 1 + x*beta + errors

ここに画像の説明を入力してください

XYε


更新: 以下は、エラーがWeibullとして分布する右に歪んだバージョンです。

set.seed(5840)  # this makes the example exactly reproducible
N      <- 100
x      <- rnorm(N)
beta   <- 0.4
errors <- rweibull(N, shape=1.5, scale=1)
# errors <- -1*errors   # this makes them left skewed
errors <- errors - factorial(1/1.5)  # this centers the error distribution on 0
y      <- 1 + x*beta + errors

-1*errorsE[W]=(1/shape)!01 + x*beta

ここに画像の説明を入力してください

rnorm()rexp()μ+1/λmean(errors)


関係のない最後のコメント: 質問のサンプルコードはやや混乱しています(つまり、問題はありません)。のでrnorm(N)でデータを生成mean=0し、sd=1デフォルトでは、0.4*rnorm(N)生成されますrnorm(N, mean=0, sd=0.4)。後者の定式化を使用すると、コード(およびおそらくあなたの考え)がより明確になります。また、コードがbeta混乱しているようです。私たちは一般的に考えますβ確率変数ではなく、パラメーターとしての回帰型モデル。つまり、データ生成プロセスの動作を制御するのは未知の定数ですが、プロセスの確率的性質はエラーによってカプセル化されます。これは、マルチレベルモデルで作業しているときの考え方ではなく、コードは標準回帰モデルとマルチレベル回帰モデルのコードの中間にあるようです。ベータを個別に指定することは、コードの概念的な明確性を維持するための良いアイデアですが、標準の回帰モデルの場合、各ベータに単一の番号を割り当てるだけです(例:)beta0 <- 1; beta1 <- .04


具体的には、回答に感謝します。応答時間データをシミュレートする必要があります。応答時間は通常、正確に歪んでおり、Ex-GaussianまたはWeibullのようにほぼ分布しています。
2014年

私はそのような例を考え上げますが、ゆがめられるのはエラーです。Yの周辺分布は偶発的です。また、応答時間データは右に歪んでいる必要があり(いくつかの長いRT、ただし堅固な床)、左に歪んでいる(小さい値に向かって)べきではありません。
ガン-モニカ

はい、右に曲がっています。質問で誤って「左に曲がっています」と書きました。
2014年

1
あなたの広範な答えをありがとう。実際、私はマルチレベルモデルのデータをシミュレーションしています。コードを使用して、単純な線形回帰シナリオにそれを採用しました。
2014年

もう1つの質問:上記のような回帰モデルを使用して反復測定データをシミュレートし、反復測定に(球形性を考慮して)特定の相関構造を持たせる方法を知っていますか?たとえば、データ生成プロセスで治療条件間の相関関係がわかっている必要がある3つの治療条件のそれぞれで20件の試行を提供するN人の被験者がいるとします。
初心者2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.