1

私は R 用の GillespieSSA パッケージを使用しています。これにより、確率的シミュレーションの単一のインスタンスを簡単かつ迅速に呼び出すことができます。しかし、単一の実現は非常に有用ではありません。偶然などから生じる変動性を調べたいと思います。非常に基本的なモデルを検討してください。

library(GillespieSSA)
x0 <- c(S=499, I=1, R=0)
a <- c("0.001*{S}*{I}","0.1*{I}")
nu <- matrix(c(-1,0,
               +1,-1,
               0, +1),nrow=3,byrow=T)
out <- ssa(x0, a, nu, tf=100)

これにより、非常に複雑なリストが作成されます。その興味深い部分はout$data.

私の質問は、インスタンスの 1 回の呼び出しで out$data を取得し、関数の呼び出しを示す変数でタグ付けし、そのデータを古いデータに追加して、終わり。したがって、大まかな疑似 R では、次のようになります。

nruns <- 10
for (i in 1:nruns){
   out <- ssa(x0, a, nu, tf=100)
   data <- out$data
   run <- rep(i,times=length[data[,2]))
   data <- cbind(data,run)

しかし、各時間ステップでデータが上書きされていない場合。私は近づいているように感じますが、今週いくつかの言語の間を飛び回ったので、私の R ループ fu は、すでに弱いので、失敗しています。

4

1 に答える 1

2

あなたのことを正しく理解できたかどうかわかりません。次のようなことをしたいですか?

out <- lapply(X=1:10,FUN=function(x) ssa(x0, a, nu, tf=100)$data)

これは 10 回の実行を行い、結果のデータ リストをリストに入れます。次に、たとえば、 を使用して 2 回目の実行からのデータにアクセスできますout[[2]]

于 2012-10-12T08:36:09.007 に答える