病原体在均质中的传播人口

塞巴斯蒂安·勒基姆

2024-02-09

诺索伊可以适应广泛的流行病学传输场景。因此依赖于许多参数,这些参数需要为要模拟的正确场景。本教程旨在说明如何设置诺索伊一个简单病原体的模拟在没有结构的人群中传播。我们将呈现两种情况,首先是单宿主,然后是双宿主病原体。

设置模拟

包装器函数nosoiSim公司接受所有参数在本教程中,它将被传递给模拟器单一无(对于“单主机,无结构”)。我们就这样开始通过提供选项type=“单个”popStructure=“无”要设置分析:

SimulationSingle仿真<- nosoiSim公司(类型=“单身”,pop结构=“无”, ...)

此模拟类型需要几个参数或选项运行,即:

所有的参数*元素提供个性化级别要考虑的参数,而时间部门*元件通知模拟器“绝对”模拟时间是否应该应予以考虑。

一般参数

长度.sim,最大受影响初始化个人是定义模拟:

在这里,我们将从1个人开始运行一个模拟最多1000名感染者,最多300次天。

SimulationSingle仿真<- nosoiSim公司(类型=“单身”,pop结构=“无”,
                             长度.sim=300,最大受影响=1000,初始化个人=1, ...)

核心功能

核心功能p退出,n联系pTrans公司每个都遵循相同的原则设置.

为了适应不同的情况,它们可以是恒定的,时间相关(使用自感染以来的相对时间t吨对于每个人或“绝对”时间压力时间模拟),甚至单独参数化,以包括一些个体宿主水平的随机性。

在任何情况下,提供的函数与中的所有其他核心函数一样诺索伊,必须表示为时间的函数t吨,即使不使用时间计算概率。

如果函数使用基于个人的参数,则必须在函数列表中指定(调用参数.退出,param.n联系人参数.Trans)(参见开始). 如果没有基于个人的参数,然后将这些列表设置为不适用.

请记住p退出pTrans公司不得不返回概率(即介于0和1之间的数字),而n联系应返回自然数(正整数或零)。

几个参数,如感染后的时间、“绝对值”模拟时间和基于个人的参数可以组合在同一功能中。

无论如何,感染后的时间和“绝对”时间应始终由指定t吨预时间分别是。它们还必须按以下顺序使用:(1)t吨; (2)预时间(3)基于个体的参数。这是正确解析函数所必需的诺索伊.

p退出,参数.退出timeDep.退出

  • p退出是第一个必需的基本参数提供主机离开模拟的每日概率(或治愈、死亡等)。
  • 参数.退出是需要的函数列表单独参数化p退出(请参见开始). 每个函数的名称列表中必须与要采样的参数的名称匹配p退出.
  • timeDep.退出允许p退出成为取决于模拟的“绝对”时间,以说明例如,对于季节性或其他外部时间相关协变量。违约,timeDep.退出设置为错误的.

n联系,param.n联系人时间部门联系人

  • n联系表示数字(表示为正数整数)受感染的宿主可以接触的潜在传染病每单位时间的遭遇。在每个时间点将为模拟中的每个活动主机确定。的数量联系人(即函数的输出)必须是整数,并且可以设置为零。
  • param.n联系人是需要的函数列表单独参数化n联系(请参见开始). 每个函数的名称列表中必须与要采样的参数的名称匹配n联系.
  • 时间部门联系人允许n联系成为取决于模拟的“绝对”时间,以说明例如,对于季节性或其他外部时间相关协变量。违约,时间部门联系人设置为错误的.

pTrans公司,参数.Trans时间Dep.pTrans

  • pTrans公司是传输过程的核心表示随着时间的推移传播的概率(当接触发生)。
  • 参数.Trans是需要的函数列表单独参数化pTrans公司(请参见开始). 每个函数的名称列表中必须与要采样的参数的名称匹配pTrans公司.
  • 时间Dep.pTrans允许pTrans公司成为取决于模拟的“绝对”时间,以说明例如,对于季节性或其他外部时间相关协变量。违约,时间Dep.pTrans设置为错误的.

其他

前缀host允许您定义第一个字符表示主机的唯一ID。它后面将跟一个连字符和一个唯一的数字。默认情况下,前缀host“H”代表“主机”。

打印.进度允许您获得一些信息在屏幕上打印有关运行中的模拟的信息。它会的打印内容间隔打印.step默认情况下,打印.进度使用激活打印步骤=10(您可以更改此频率),但您可能希望通过设置将其停用print.progress=错误.

双主机

在双主机模拟的情况下nosoiSim公司必须为每种主机类型指定,指定人A类B类.包装器函数nosoiSim公司然后将接受所有的参数在本教程中,传递给模拟器dual无(用于“双主机,无结构”)。因此,我们首先提供选项type=“双重”popStructure=“无”要设置分析:

仿真双通道<- nosoiSim公司(类型=“双重”,pop结构=“无”, ...)

与相同单一无,此函数需要几个能够运行的参数或选项,即:

如您所见,主机类型相关参数现在由指定后缀.A型.B类.

两者都有最大影响。A类最大感染。B类用于设置模拟大小的上限。启动在模拟中,您必须至少提供一个启动主机A类B类在里面init.individuals。A类init.individuals。B类分别是。如果您想启动仅使用一个主机进行模拟,然后初始化个人属于另一个可以设置为0。

正在运行诺索伊

单个主机

我们在这里对单个主机进行了非常简单的模拟病菌。

p退出

对于p退出,我们选择一个常量值,即0.08,即受感染的主机有8%的机会离开每个单元的模拟时间:

p_退出_fct<- 功能(吨){返回(0.08)}

记住p退出,就像其他核心功能一样作为的功能t吨,即使t吨未使用。p退出在这里是常量,对于模拟的“绝对”时间也不适用于基于个人的参数。所以param.pExit=不适用、和timeDep.pExit=假.

n联系

对于n联系,我们选择一个常量函数从正态分布中提取值意思是=0.5和标准偏差=1,四舍五入,取其绝对值:

n_触点= 功能(吨){防抱死制动系统((rnorm公司(1,0.5,1),0))}

The distribution ofn联系如下所示:

在每个时间步长并且对于每个感染的宿主,n联系将重新绘制。记住n联系,和另一个一样核心功能必须是t吨,即使t吨未使用。n联系是常量在这里,模拟的“绝对”时间和基于个性化的参数。所以param.nContact=NA、和timeDep.nContact=假.

pTrans公司

我们选择pTrans公司以阈值函数的形式:在初次感染后的一定时间内,宿主会不传播(我们称之为潜伏期t_incub公司)、和之后,它将以一定的(恒定的)概率发射(我们称之为p_最大值). 此功能依赖于自宿主感染以来的时间t吨:

p_Trans_fct<- 功能(t,p_max,t_incub){
    如果(t)<t_incub){p=0}
    如果(t)>=t_incub){p=p_最大值}
    返回(p)
}

因为每个宿主都不同(生物和非生物略有不同因素),您可以期望每个主机在感染动态,因此传播概率超过时间。因此,t_incub公司p_最大值将进行采样根据特定的分布分别为每台主机分配。t_incub公司将从以下正态分布中取样\(平均值\)=7和\(sd\)=1,而最大值(_max)从具有形状参数的beta分布中采样\(\阿尔法\)=5和\(测试版)= 2:

t_incub_fct<- 功能(x){rnorm公司(x,平均值= 7,标准偏差=1)}
p_最大值<- 功能(x){罗贝塔(x,形状1= 5,形状2=2)}

注意这里t_incub公司p_最大值的功能x个而不是t吨(它们不是核心功能,但基于个人参数),以及x个进入函数作为要绘制的绘图数。

综上所述pTrans公司对于的子集人口中的200人将如下所示:

pTrans公司不依赖于模拟,所以timeDep.pTrans=假然而,由于我们使用基于个人的参数,我们必须提供一个参数.Trans作为函数列表。每个名称此列表中的元素应该与核心元素具有相同的名称函数(此处pTrans公司)用作参数,例如:

t_incub_fct<- 功能(x){rnorm公司(x,平均值= 7,标准偏差=1)}
p_最大值<- 功能(x){罗贝塔(x,形状1= 5,形状2=2)}

参数_事务= 列表(p_最大值=p_max_fct,t_incub公司=t_incub_fct)

正在运行

一次nosoiSim公司设置完成后,您可以运行模拟(这里的“种子”确保您将获得与中相同的结果本教程):

图书馆(无)

#p退出
p_退出_fct<- 功能(吨){返回(0.08)}

#n联系
n_触点= 功能(吨){防抱死制动系统((rnorm公司(1,0.5,1),0))}

#pTrans公司
p_Trans_fct<- 功能(t,p_max,t_incub){
    如果(t)<t_incub){p=0}
    如果(t)>=t_incub){p=p_最大值}
    返回(p)
}
 
t_incub_fct<- 功能(x){rnorm公司(x,平均值= 7,标准偏差=1)}
p_最大值<- 功能(x){罗贝塔(x,形状1= 5,形状2=2)}

参数_传输= 列表(p_最大值=p_max_fct,t_incub公司=t_incub_fct)

#开始模拟------------------------------------

设置种子(805)
SimulationSingle仿真<- nosoiSim公司(类型=“单身”,pop结构=“无”,
                             长度.sim=100,最大受影响=100,初始化个人=1,
                             n联系=n_contact_fct,
                             param.n联系人=不适用,
                             时间部门联系人=错误的,
                             p退出=p_退出_,
                             参数.退出=不适用,
                             timeDep.退出=错误的,
                             pTrans公司=p_Trans_fct,
                             参数.Trans=参数_事务,
                             时间Dep.pTrans=错误的,
                             前缀host=“H”,
                             打印.进度=错误的)
#>开始模拟
#>正在初始化。。。正在运行。。。
#>已完成。
#>模拟已经运行了40个时间单位,总共有111台主机被感染。

模拟完成后,它会报告时间单位的数量对其运行了模拟(40),并且受感染的宿主(111)。请注意,模拟在此之前已停止到达长度.sim当它穿过最大受影响阈值设置为100。

双主机

设置双主机模拟类似于单主机上述版本,但必须为这两个版本提供每个参数主机。这里,我们为主机A选择与单个相同的参数/上面只有主机。主机B的参数略有不同:

p退出。B类

对于p退出。B类,我们选择的值取决于模拟的“绝对”时间,例如周期性气候条件(温度)。在这种情况下,函数的参数应该t吨预时间模拟),顺序如下:

p_退出_fctB<- 功能(t,预时间){((预时间/(2*圆周率*10))+1)/16}#对于周期函数

的值p退出。B类跨越模拟如下:

p退出。B类取决于模拟的绝对值时间,别忘了设定timeDep.退出。B类真的。由于没有基于个人的参数,param.p退出。B=不适用.

联系。B类

对于联系。B类,我们选择一个常量函数从提供的可能值范围中抽取一个值,每个值都有一个一定概率:

n_contact_fct。B类= 功能(吨){样品(c(c)(0,1,2),1,问题=c(c)(0.6,0.3,0.1))}

The distribution of联系。B类如下所示:

每一次,对于每一个受感染的宿主,联系。B类重新绘制。记住联系。B类像其他人一样核心功能必须是t吨,即使t吨未使用。联系。B类是常量在这里,模拟的“绝对”时间和基于个性化的参数。所以param.n联系人。B=不适用,timeDep.n联系人。B=错误.

p事务处理。B类

我们选择p事务处理。B类以高斯函数的形式。它将在以下时间点(平均值)达到最大值最初感染,随后会减少,直到达到0:

p_Trans_fct。B类<- 功能(t,最长时间){
  数据形式(t,平均值=最长时间,标准偏差=2)*5
}

因为每个宿主都不同(生物和非生物略有不同因素),您可以期望每个主机在感染动态,因此传播概率超过时间。因此,最长时间将对每个主机进行采样根据一定的分布分别。最长时间将从参数的正态分布中采样\(平均值\)=5和\(sd\)= 1:

最大时间<- 功能(x){rnorm公司(x,平均值= 5,标准偏差=1)}

再次注意这里最长时间是的函数x个而不是t吨(不是核心功能,但个性化参数),以及x个进入函数为要绘制的绘图数量。

总而言之,200子集的pTrans配置文件人口中的个体如下:

p事务处理。B类不依赖于“绝对”时间模拟结果,时间折旧.事务处理。B=错误然而,由于我们使用基于个人的参数,我们必须提供参数.Trans作为函数列表。每个名称列表中的元素应该与核心函数同名(此处p事务处理。B类)用作参数,如下所示:

最大时间<- 功能(x){rnorm公司(x,平均值= 5,标准偏差=1)}

参数_事务。B类= 列表(最长时间=最大时间)

正在运行

一次nosoiSim公司设置完成后,您可以运行模拟(这里的“种子”确保您将获得与中相同的结果本教程):

图书馆(无)

#主机A------------------------------------

#p退出
p_Exit_fct(退出)。A类<- 功能(吨){返回(0.08)}

#n联系
n_contact_fct。A类= 功能(吨){防抱死制动系统((rnorm公司(1,0.5,1),0))}

#pTrans公司
p_Trans_fct。A类<- 功能(t,p_max,t_incub){
    如果(t)<t_incub){p=0}
    如果(t)>=t_incub){p=p_最大值}
    返回(p)
}
 
t_incub_fct<- 功能(x){rnorm公司(x,平均值= 7,标准偏差=1)}
p_最大值<- 功能(x){罗贝塔(x,形状1= 5,形状2=2)}

参数_事务。A类= 列表(p_最大值=p_max_fct,t_incub公司=t_incub_fct)

#主机B------------------------------------

#p退出
p_退出_fct。B类<- 功能(t,预时效){((预时间/(2*圆周率*10))+1)/16}

#n联系
n_contact_fct。B类= 功能(吨){样品(c(c)(0,1,2),1,问题=c(c)(0.6,0.3,0.1))}

#pTrans公司
p_Trans_fct。B类<- 功能(t,最长时间){
  数据形式(t,平均值=最长时间,标准偏差=2)*5
}
 
最大时间<- 功能(x){rnorm公司(x,平均值= 5,标准偏差=1)}

参数_事务。B类= 列表(最长时间=最大时间)

#开始模拟------------------------------------

设置种子(606)
仿真双通道<- nosoiSim公司(类型=“双重”,pop结构=“无”,
                           长度.sim=100,
                           最大感染。A类=100,
                           最大感染。B类=100,
                           
                           init.individuals。A类=1,
                           init.individuals。B类=0,
                           
                           联系。A类=n_contact_fct。A、,
                           param.n联系人。A类=不适用,
                           时间部门联系人。A类=错误的,
                           p退出。一个=p_Exit_fct(退出)。A、,
                           param.p退出。A类=不适用,
                           timeDep.退出。A类=错误的,
                           p事务处理。A类=p_Trans_fct。A、,
                           参数.事务。A类=参数_事务。A、,
                           时间折旧.事务处理。A类=错误的,
                           前缀host。A类=“H”,
                           
                           联系。B类=n_contact_fct。B、,
                           param.n联系人。B类=不适用,
                           timeDep.n联系人。B类=错误的,
                           p退出。B类=p_Exit_fct(退出)。B、,
                           param.p退出。B类=不适用,
                           timeDep.退出。B类=真的,
                           p事务处理。B=p_Trans_fct。B、,
                           参数.pTrans。B=参数_事务。B、,
                           时间折旧.事务处理。B类=错误的,
                           前缀host。B类=“V”,
                           
                           打印.进度=错误的)
#>开始模拟
#>正在初始化。。。正在运行。。。
#>已完成。
#>该模拟已运行43个时间单位,共有101(a)和92(B)台主机被感染。

模拟完成后,它会报告时间单位的数量对其运行了模拟(43),以及受感染的宿主A(101)和宿主B(92)。请注意,模拟有到达之前停在这里长度.sim当它穿过时这个最大感染。A类阈值设置为100。

走得更远

要分析和可视化您的诺索伊模拟输出,你可以看看第页.

您可能还想通过添加一些结构(例如地理)到您的模拟。两个教程可以指导您了解如何设置此类结构化场景:

使用双主机类型模拟的实际示例人口结构也可用: