2017-02-02 6 views
0

deSolveの使用中にさまざまなパラメータ値をシミュレーションする方法を理解しようとしています。私はRに非常に新しいですし、私が得ているエラーのトラブルシューティングが難しいです。私は非常に単純な微分方程式を作成し、私のパラメータの一様分布からforループサンプリングを実行しようとしています。シミュレーションでさまざまなパラメータ値を実行する

マイモデル:forループで

sir <- function(time, state, parameters) { 

with(as.list(c(state, parameters)), { 

dS <- -beta1 * (S * I)/N 
dI <- beta1 * (S * I)/N - gamma1 * I 
dR <-     gamma1 * I 

return(list(c(dS, dI, dR))) 
}) 
} 
init  <- c(S = 99999, I = 1, R = 0) 

試み:、私は非常にあなたが提供することができます任意の助けに感謝

Error in eval(expr, envir, enclos) : object 'beta1' not found

outlist <- list() 
plist <- cbind(beta1 = runif(30, min = .1, max = .9), 
      gamma1 = runif(30, min = .1, max = .9)) 
for(i in 1:nrow(plist)) 
outlist[[i]] <- ode(y = init, times = times, func = sir, parms = plist[i]) 
plot(out, outlist) 

私は、次のエラーを取得しています

+1

あなたのコードをすべて表示しているわけではありません。エラーメッセージに示されているように、関数内のパラメータ 'beta1'に値を割り当てていません。関数には、 'with'の前に' beta1 < - parameter [1] 'として行を挿入する必要があります。 'gamma1'と' N'と同様です。オブジェクト 'times'と' N'はどこにありますか?そして 'for'ループの本体の周りに' {'と'} 'が必要です。また欠落している。そして今私はあきらめる。 – Bhas

答えて

0

あなたのコードにはあらゆる種類のエラーがあります。さらに私は私のコメントで指摘した。 Rコードの典型的なエラー:plist[i]を使用して、iの行をplistにします。 plist[i,]を使用してください。それは、変数outに割り当てると、継続するのはあなた次第です

library(deSolve) 

sir <- function(time, state, parameters) { 

    beta1 <- parameters[1] 
    gamma1 <- parameters[2] 
    with(as.list(c(state, parameters)), { 

    dS <- -beta1 * (S * I)/N 
    dI <- beta1 * (S * I)/N - gamma1 * I 
    dR <-     gamma1 * I 
    return(list(c(dS, dI, dR))) 
    }) 
} 

init <- c(S = 99999, I = 1, R = 0) 
times <- seq(1,5,.5) # trial 
N <- 10000000 # having a guess 
outlist <- list() 
plist <- cbind(beta1 = runif(30, min = .1, max = .9), 
      gamma1 = runif(30, min = .1, max = .9)) 

plist[c(1,2)] 
for(i in 1:nrow(plist)) { 
    outlist[[i]] <- ode(y = init, times = times, func = sir, parms = plist[i,]) 
} 

# just display the first item 
outlist[[1]] 

は自分のもので、外出先を持ちます。