我想根据一个估计的繁殖数(R0)来估计一个攻击率(AR) (成为感染的种群的一部分)(一个感染个体在感染期间在易感人群中产生的次级病例的数量)。
S=exp(-R0(1-S)),与S的比例,仍然易感的人后,流行病已经烧毁。
感染后进行终生免疫,AR = 1-S。
我把R0放在一个由MonthYear (城市)组成的.csv表中,并希望计算每个月/城市的AR值。
我试过:
library(rootSolve)
f<- function(y,x){Tab$AR=1-(y-exp(-x*(1-y)))}
x=Tab$R0
solve(f)错误消息:
Error in as.vector(x, mode) :
cannot coerce type 'closure' to vector of type 'any'然后我试着
R0.vec = Tab$R0
AR.vec = numeric(length(R0.vec))
for(ii in 1:length(AR.vec)){
AR.vec[ii] = 1 -optimize(f=function(S){(S-exp(-R0.vec[ii]*(1-S)))},interval=c(0,1))$minimum
}
AR.fun.vec = approxfun(R0.vec,AR.vec)错误消息:
There were 50 or more warnings (use warnings() to see the first 50)
Warning messages:
1: In optimize(f = function(S) { ... : NA/Inf replaced by maximum positive value
2: In optimize(f = function(S) { ... : NA/Inf replaced by maximum positive value
3: In optimize(f = function(S) { ... : NA/Inf replaced by maximum positive value我希望任何关于这方面的建议都能得到我的ARs,因为这对我来说是全新的。提前感谢!
发布于 2018-07-09 06:24:34
感谢Karline Soetaert博士的回答
Sfun <- function(x, R0) return(x - exp(-R0*(1-x)))
require(rootSolve)
R0vec <- R0
result <- rep(0,times=length(R0vec))
for (i in 1:length(R0vec))
result[i] <- multiroot(f = Sfun, start = 0, positive = TRUE, R0 =
R0vec[i])$root
AR <- 1-result
Print(AR)`https://stackoverflow.com/questions/46923407
复制相似问题