deSolve 包参数可以包含矩阵吗?

2023-11-29

我正在尝试编写一个按年龄分层的 SEIR 模型;也就是说,在我的微分方程中,我有一个群体行动参数,它是 20 个年龄段的 beta*(感染比例)*(易感人数)的总和。传输系数(β)是根据接触矩阵计算得出的。接触矩阵有 20 列和行,代表年龄类别(行=人 i,列=人 j),并且包含任何年龄类别的两个人之间接触的概率。我设计了它并将其读入 R。我的问题是我不知道如何(或是否)可以在 deSolve 的参数中使用矩阵。我写的下面的代码不起作用,我相信因为矩阵/我收到此错误:

Error in beta * S : non-numeric argument to binary operator

在我过多地愚弄它之前,我想知道是否可以使用这样的矩阵作为该模型的参数。

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))

另外,如果我打印参数,测试版就是这样的:

$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

....通过 $beta.V20。所以我认为它创建了 20 个向量,每个向量都有 20 个参数...我认为每个向量都是原始矩阵“mat”的一行乘以常数 0.04?然而,当我在“参数”之外乘以 mat*0.04 时,我得到了预期的矩阵。我在如何使用 deSolve 实现这些方程方面遇到了一些困难,并且非常感谢任何关于是否可能的建议。提前致谢。


错误发生在这一行:

dS=v*S -beta*S*I/N -delta*S

non-numeric argument to binary operator意味着您尝试将函数(例如)乘以数字。您可以通过以下方式重现它I*1

Error in I * 1 : non-numeric argument to binary operator`

在这里,R 无法找到 beta ,而 beta 被解释为数学的特殊函数,因此出现错误。 您需要将参数定义为

# a list 
list(mu=0,v=1/75,N=1,p=0,delta=2.4,beta=mat*0.04,sigma=1/8,gamma=1/15)

and

 ## you get a vector mu,N,p,delta,beta1,bet2,...  
c(mu=0,v=1/75,N=1,p=0,delta=2.4,beta=mat*0.04,sigma=1/8,gamma=1/15)

我认为你甚至可以将你的函数重写为:

SEIR0 <- function(t,x,parameters){
  with(as.list(c(parameters, x)), {
    dS = v*S -beta*S*I/N -delta*S    ## matrix
    dE = beta*S*1/N -E*(sigma+delta) ## matrix
    dI = sigma*E -I*(gamma+delta)
    dR = gamma*I-delta*R
    res = c(dS,dE,dI,dR)
    list(res)                        ## different of the structure of xstart
  })
}

这将纠正上述问题,但 ODE 将不起作用,因为 SEIR0 返回的导数数量必须等于初始条件的长度xstart向量(此处为 4)。

我建议例如:

  res <- c(dS=mean(dS),dE=mean(dE),dI=dI,dR=dR)
  list(res)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

deSolve 包参数可以包含矩阵吗? 的相关文章

  • ggplot 图例标签内的希腊字母、符号和换行符

    我在尝试着 有换行符 自动或强制 对齐文本 左对齐或左右对齐 有希腊字母和百分号 在 gglot 图例标签内 我尝试了几种方法 但我似乎无法将我读到的所有技巧结合起来 我可以通过插入来换行 n进入标签 但这似乎不适用于希腊字母 不适用于图例
  • 如何有效地将多个光栅 (.tif) 文件导入 R

    我是 R 新手 尤其是在空间数据方面 我正在尝试找到一种方法来有效地将多个 600 单波段栅格 tif 文件导入到 R 中 所有文件都存储在同一文件夹中 不确定这是否重要 但请注意 在我的 Mac 和 Windows 并行 VM 上的文件夹
  • R闪亮:使用闪亮的JS从数据表中获取信息

    我想读出所有列名称以及它们在数据表中显示的顺序 由于不同的原因 我无法使用 stateSave 等选项 我对 JS 没有什么把握 但我确信用它可以完成 所以我需要你帮助我 我尝试过类似的代码片段 datatable data callbac
  • 如何从连接矩阵绘制图像?

    我想编写一个脚本来从连接矩阵创建图像 基本上 只要矩阵中有 1 我就希望该区域在图像中被着色 对于例如 我使用 Photoshop 创建了这张图像 但我有一个很大的数据集 所以我必须自动化这个过程 如果有人能指出我正确的方向 那将非常有帮助
  • 改进R中从google获取股票新闻数据的功能

    我已经编写了一个函数来从 Google 获取和解析给定股票代码的新闻数据 但我确信有一些方法可以改进它 对于初学者来说 我的函数返回一个 GMT 时区的对象 而不是用户当前的时区 如果传递的数字大于 299 它就会失败 可能是因为 goog
  • 删除缺失的数据值

    我删除了原始帖子 以便能够发布更大版本的数据集 实际上总共有 418 行 这是我正在进行的生存分析的数据 第一列是 ID 号 其他列标记为 V2 V20 有很多缺失的数据 用 表示 我用coxph 函数来获取以下内容 Saves survi
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • 根据 row_number() 过滤 data.frame

    更新 自从提出这个问题以来 dplyr 已经更新 现在按照 OP 的要求执行 我正在尝试获取第二行到第七行data frame using dplyr 我正在这样做 require dplyr df lt data frame id 1 1
  • R参考类问题

    我正在尝试在 R 中创建一个简单的参考类 这是我的代码 R 初学者 MyClass lt setRefClass MyClass fields list a numeric b numeric methods list initialize
  • 在 R 中使用逻辑 grep 抓取文本

    下午好 谢谢你帮我解答这个问题 我有兴趣抓取一组超过 5000 个 URL 的列表 我使用 lapply 和 readLines 使用下面的示例代码提取这些网页的文本 multipleURL lt c http dailymed nlm n
  • 函数“[<-”将_替换_一个元素,但不会追加_元素_

    我在使用时注意到以下几点 lt 我成功于替换元素但不位于追加向量的一个元素 例子 VarX lt integer VarX 1 lt 11 lt VarX 2 22 VarX 1 11 Expected the value of VarX
  • 在 Lavaan 生长曲线模型中提取个体轨迹

    我已经使用 R 的 Lavaan 包中的 Growth 函数成功地对一项研究的纵向数据进行了建模 我找不到任何关于如何提取每个参与者的预测轨迹的记录 我只能找到整个组的预测轨迹 在摘要输出的 拦截 部分下给出 使用 lavPredict m
  • 如果条目出现次数少于 x 则删除数据框中的行

    我有以下数据框 称之为 df 它是由三个向量组成的数据框 姓名 年龄 和 邮政编码 df Name Age ZipCode 1 Joe 16 60559 2 Jim 20 60637 3 Bob 64 94127 4 Joe 23 9412
  • 如何绘制每条线之间具有特定距离的图形

    实际上 我尝试绘制一个图形 但它将所有列 线 放在一起并显示 因此它不具有代表性 我尝试制作模拟数据并向您展示我如何绘制它 并向您展示我想要的内容 我不知道如何制作像下面所示的示例的数据 但我在这里做了什么 set seed 1 M lt
  • numpy python 中的“AttributeError:'matrix'对象没有属性'strftime'”错误

    我有一个维度为 72000 1 的矩阵 该矩阵涉及时间戳 我想使用 strftime 如下所示 strftime d m y 为了得到像这样的输出 11 03 02 我有这样一个矩阵 M np matrix timestamps 我使用了
  • 读取R中打开的Excel文件

    有没有办法将打开的Excel文件读入R 当Excel中打开一个excel文件时 Excel会对文件加锁 比如R中的read方法无法访问该文件 你能绕过这个锁吗 Thanks 编辑 这发生在带有原始 Excel 的 Windows 下 发生错
  • 当有很多列时,使用 readr::read_csv() 导入数据时覆盖列类型

    我正在尝试使用 R 中的 readr read csv 读取 csv 文件 我导入的 csv 文件大约有 150 列 我只包含示例的前几列 我希望将第二列从默认类型 我执行 read csv 时为日期 覆盖为字符或其他日期格式 GIS Jo
  • 无法部署 ShinyApp:readTableHeader 在“raw”上发现不完整的最后一行(使用默认值:en_US)

    我已经拼命尝试部署我的闪亮应用程序大约一周了 但不幸的是我无法停止收到以下消息 Warning message Error detecting locale Error in read table file file header head
  • 不同 R/lme4 版本的单一拟合结果不匹配

    我试图将 R 版本 3 5 3 lme4 1 1 18 1 的随机效应估计与 R 版本 4 1 1 lme4 1 1 27 1 相匹配 然而 当存在奇异拟合时 这两个版本之间的随机效应存在微小差异 我对奇点警告很满意 但令人费解的是不同版本
  • 通过使用 navbarPanel() 并隐藏导航栏构建多页闪亮应用程序用户端(在 ui.R 中)?

    我想构建一个多页闪亮应用程序 我可以在其中控制用户可以看到哪个页面 迪安 阿塔利确实这个演示应用程序中有类似的东西 https github com daattali advanced shiny tree master multiple

随机推荐

  • Pandas 0.20.2 to_sql() 使用 MySQL

    我正在尝试将数据帧写入 MySQL 表 但得到了 111 Connection refused error 我在这里遵循了已接受的答案 使用 SQLAlchemy to sql 使用 pandas 写入 MySQL 数据库 答案的代码 im
  • python Spyder 不导入 numpy

    我正在使用 python Spyder 2 2 5 和 Windows 7 python 2 7 编写脚本 一开始我尝试了所有的导入方式 from numpy import or import numpy and also import n
  • 以类名作为返回类型的方法

    我是 C 或任何类型的编程语言的新手 当我看到c 中的代码时 我发现这里有很多混乱 我想从这里澄清其中之一 方法的常见结构是
  • 从 VBA 运行 python 脚本

    设想 我正在尝试从 Excel 中的 vba 代码运行 python 脚本 代码运行没有错误 但没有产生任何结果 VBA 中的代码 Private Sub CommandButton1 Click Dim Ret Val Dim args
  • 尝试将数据附加到子值时应用程序崩溃

    我正在按照 firebase 中所示的说明进行操作 但即使在确保文本条目的类型为字符串之后 我仍然遇到崩溃 这是错误 由于未捕获的异常 InvalidPathValidation 而终止应用程序 原因 child 必须是非空字符串且不包含
  • Java 并发递增值

    我一直在读关于volatile and synchronized但我一直在困惑中摸不着头脑 我希望有人能帮助我解决问题 private HashMap
  • ALTER TABLE 脚本中的 MySQL 变量

    您好以下过程必须将所有约束从一个表移至另一个表 但是我在应删除约束时遇到了一些困难 问题 如何在下面的行中使用变量 ALTER TABLE var referenced table name DROP FOREIGN KEY var con
  • R:将日期从每日转换为每周并绘制它们

    我正在尝试学习如何处理时间序列数据 我创建了一些虚假的每日数据 尝试按周聚合它 然后绘制它 set seed 123 library xts library ggplot2 date decision made seq as Date 20
  • setf 在函数中不起作用

    我在脚本中定义了一个特殊变量 unsorted list 和一个用于重置此变量的函数 defparameter unsorted lst nil defun reset to unsorted list setf unsorted lst
  • 将 .tar.gz 文件的内容从网站读取到 python 3.x 对象中

    我是Python新手 当尝试将 tar gz 文件的内容读入 python 时 我无法弄清楚我做错了什么 我想要阅读的 tar 文件托管在以下网址 ftp ftp ncbi nlm nih gov pub pmc b0 ac Breast
  • 目录的平均和最大大小

    我有一个目录和一堆子目录 如下所示 目录1 sub dir1 sub dir2 sub dir3 sub dir4 sub dir5 等等 数百个 如何查明子目录的平均大小是多少 如何找到子目录的最大大小是多少 全部使用 Unix 命令 T
  • 让输入按钮像 一样运行,无需使用 JavaScript

    我知道我可以分配一个onclick采取行动
  • 获取文件夹中最近更新的文件的 filemtime

    我有一个包含 4 个文件的文件夹 我想提取最近一个文件的最后修改时间 可能并不总是相同 有没有好的方法可以做到这一点 Use a 目录迭代器找到文件 然后简单地比较它们的修改时间 这应该这样做 iterator new DirectoryI
  • 在 apache 中运行 Node.js?

    我们在一台机器上安装了 Apache Web 服务器 该机器还使用 Perl 提供页面服务 对于一个项目 我决定使用 Node js 而不是 Perl Ruby 只是想知道是否可以使用 Apache 作为我的网络服务器 因此它为页面提供服务
  • 在 Qt 中使用 aar 库

    是否可以在 Qt 应用程序中使用 Android Studio 库 aar 文件 问题是 我想用 Qt 实现一个移动应用程序 但只有一个 Android Studio 库 是否可以将该库包含在 Qt 项目中或者让我为其编写一个包装类 如果我
  • 使用 maven-rpm-plugin 如何替换类似于程序集插件的文件中的文本

    我有一个 Maven 项目 我在其中创建了两个包装 一种是 tar gz 文件 针对某些目标 以及针对可以使用 RPM 的 Linux 目标的 RPM 我使用 maven assembly plugin 作为 tar gz 文件 我使用 m
  • 是否需要在@interface中声明ivars来匹配属性? [复制]

    这个问题在这里已经有答案了 可能的重复 Objective C 2 0 中的属性和实例变量 我对这两个代码段感到困惑 First h interface Student NSObject property nonautomic copy N
  • mySQL 返回每个类别的前 5 名

    我希望能够为每个菜单返回 5 个菜单项 我已经尝试过这几个脚本但没有运气 这是表格 menus menuid int profileName varchar 35 menuitems itemid int name varchar 40 这
  • 容器中的文本字段 - 键盘隐藏文本

    我在底部的容器 VBox 中有一个 TextField 当我选择文本字段输入一些文本时 它会隐藏在键盘后面 iPhone 我把 VBox 放在 ScrollPane 中 但还是一样 我可以以某种方式让键盘获得其高度吗 如何放置键盘未覆盖的文
  • deSolve 包参数可以包含矩阵吗?

    我正在尝试编写一个按年龄分层的 SEIR 模型 也就是说 在我的微分方程中 我有一个群体行动参数 它是 20 个年龄段的 beta 感染比例 易感人数 的总和 传输系数 是根据接触矩阵计算得出的 接触矩阵有 20 列和行 代表年龄类别 行