Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在deSolve中改变参数值的运行模拟_R - Fatal编程技术网

R 在deSolve中改变参数值的运行模拟

R 在deSolve中改变参数值的运行模拟,r,R,我试图弄清楚如何在使用deSolve时运行不同参数值的模拟。我对R非常陌生,很难排除我遇到的错误。我创建了一组非常简单的微分方程,并试图从参数的均匀分布中运行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

我试图弄清楚如何在使用deSolve时运行不同参数值的模拟。我对R非常陌生,很难排除我遇到的错误。我创建了一组非常简单的微分方程,并试图从参数的均匀分布中运行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)

sir您的代码有各种各样的错误。我在我的评论中注意到的更多。
R代码中一个非常典型的错误:使用
plist[i]
来使用
plist
的行
i
。您应该使用
plist[i,]

尝试一下你的东西:

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]]
库(deSolve)

先生,您没有显示所有代码。如错误消息所示,您尚未在函数中为参数
beta1
赋值。您应该插入一行作为
beta1
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]]