私は、多くの場合、いくつかの統計モデルをテストするために乱数ベクトルの任意の数の列を作成するにはどうすればよいですか?
sample_size = 10^4
my_data <- data.frame(x1 = runif(sample_size, 0,3), x2 = runif(sample_size, 0,3), x3 = runif(sample_size, 0,3), x4 = runif(sample_size, 0,3))
のようなものを記述する必要があります。例えば、my_data
ので
error <- rnorm(sample_size, 0, 0.1)
y <- with(my_data, 2*x1+0.1*(x2 + x3 + x4)) + error
my_model <- lm(y ~ ., data = my_data)
がlm
への入力として使用され、それはデータ・フレーム(またはリスト)でなければなりません。
これを行うには、runif
を4回呼び出すのが正しい方法か、より良い解決策があるのだろうかと思います。試しました
my_data <- matrix(4*runif(sample_size, 0,3), sample_size, 4, dimnames = list(NULL, paste0("x", 1:4)))
my_data <- as.data.frame(my_data)
しかし、私にはわかりにくいようです。
'as.data.frame(replicate(4、runif(sample_size、0、3)))'。あなたはそれを行列として残す方が良いかもしれませんが。 – Gregor
@Gregor 'replicate'は素晴らしいですが、私はそれを考えませんでした。私は 'my_data'が線形回帰のプレディクタを格納する必要があるので、データフレームである必要があります。これを明らかにするために質問を編集します。 – DeltaIV
唯一の違いは、必要なコードが 'as.data.frame'でラップされているかどうかという点で、あなたの質問を複雑にする必要はありません。私はあなたの質問を "ランダムベクトルの任意の数の列を作成するにはどうすればいいですか?"そうである限り、質問は非具体的かつおそらく意見に基づいている。 – Gregor