S-Plusで大規模なモンテカルロシミュレーションを実行するときはいつでも、それが完了するのを待つ間、私はいつもあごひげを生やしてしまいます。
Rでモンテカルロシミュレーションを実行するための最良のトリックは何ですか?分散方式でプロセスを実行する良い例はありますか?
S-Plusで大規模なモンテカルロシミュレーションを実行するときはいつでも、それが完了するのを待つ間、私はいつもあごひげを生やしてしまいます。
Rでモンテカルロシミュレーションを実行するための最良のトリックは何ですか?分散方式でプロセスを実行する良い例はありますか?
ベクトルを事前に割り当ててください!
> nsims <- 10000
> n <- 100
>
> system.time({
res <- NULL
for (i in 1:nsims) {
res <- c(res,mean(rnorm(n)))
}
})
user system elapsed
0.761 0.015 0.783
>
> system.time({
res <- rep(NA, nsims)
for (i in 1:nsims) {
res[i] <- mean(rnorm(n))
}
})
user system elapsed
0.485 0.001 0.488
>
Latin Hypercube Sampling は簡単に適用でき、結果に大きな影響を与えます。基本的に、一様分布からラテン ハイパーキューブ サンプルを取得し (たとえば、lhs パッケージの randomLHS() を使用)、これを qnorm(uniformsample) を使用して目的の分布に変換します。