나는 나이 - 계층화 된 SEIR 모델을 코딩하려고합니다. 즉, 미분 방정식에서 나는 20 개의 연령대에 걸친 베타 * (비율 감염) * (수의 영향을 받기 쉬운)의 합계 인 대량 행동을위한 매개 변수를 가지고 있습니다. 전송 계수 (베타)는 접촉 행렬로부터 계산됩니다. 접촉 행렬은 연령 클래스 (행 = 사람 i, 열 = 사람 j)를 나타내는 20 개의 열과 행을 가지며 모든 연령대의 두 사람 사이의 접촉 확률을 포함합니다. 나는 그것을 설계하고 R로 읽어 들였다. 내 문제는 내가 어떻게 내 매개 변수 내에서 행렬을 사용할 수 있는지 모르겠다. 내가 너무 많이와 바보 전에를 사용할 수있는 경우deSolve 패키지의 매개 변수에 행렬이 포함될 수 있습니까?
Error in beta * S : non-numeric argument to binary operator
, 내가 알고 싶습니다 : 행렬의/I가이 오류 때문에 작동하지 않는 썼다 아래이 코드는, 저는 믿습니다 이 행렬을이 모델의 매개 변수로 사용하십시오. $ beta.V20을 통해 ....
$beta.V1
[1] 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04
[12] 4e-04 4e-04 8e-03 8e-03 8e-03 8e-03 8e-03 8e-03 8e-03
$beta.V2
[1] 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04 4e-04
[12] 4e-04 4e-04 8e-03 8e-03 8e-03 8e-03 8e-03 8e-03 8e-03
: 나는 매개 변수를 인쇄하는 경우
mat <-as.matrix(read.csv("H:/IBS 796R/contactmatrix.csv", header=F))
times <- seq(0,20,by=1/52)
parameters <- c(mu=0,v=1/75,N=1,p=0,delta=2.4,beta=mat*0.04,sigma=1/8,gamma=1/15)
xstart <- c(S=0.06,E=0,I=0.001,R=0)
SEIR0 <- function(t,x,parameters){
S=x[1]
E=x[2]
I=x[3]
R=x[4]
with(as.list(parameters), {
dS=v*S -beta*S*I/N -delta*S
dE=beta*S*1/N -E*(sigma+delta)
dI=sigma*E -I*(gamma+delta)
dR=gamma*I-delta*R
res=c(dS,dE,dI,dR)
list(res)
})
}
out <- as.data.frame(lsoda(xstart,times,SEIR0,parameters))
또한,이 모습 베타입니다. 그래서 저는 20 개의 벡터를 만들고 20 개의 인자를 가진다고 생각합니다 ... 각각이 원래의 행렬 'mat'에 상수 0.04를 곱한 행이라고 생각합니까? 그러나, "매개 변수"밖에서 매트 * 0.04를 곱하면 예상되는 행렬을 얻습니다. 저는 deSolve를 사용하여 이러한 방정식을 실현하는 방법과 조금 어려움을 겪고 있으며 가능한지 여부에 대한 조언을 주시면 감사하겠습니다. 미리 감사드립니다.