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