如何测试死亡率是否正确

How to test if mortality rate is correct

这个问题与我前段时间问过的有关。

我正在尝试在 NetLogo 中创建人口。因此,我试图从死亡率开始。但是,我不确定如何测试我的代码是否有效。最老的垂死海龟的年龄似乎还不错,但是当我打印平均死亡年龄时,它太高了,我不知道如何解决。

模型可用here

问题可能是我计算的死亡概率是这样的:

  if (gender = "female") [
    let die-val mortality-female age ; mortality prob included for the age of the turtle
    if (die-val >= random-float 1)[
       set prob-die? true
    ]
  ]

看起来你的代码运行良好,但你的实现可能 unrealistic.Your 海龟最终都会死亡,并且因为你的死亡率随着年龄的增长而增加,所以你的年长海龟对死亡年龄的贡献要大得多名单比年轻的海龟。例如,在 运行 直到所有海龟都达到 90 岁之后,仍然有 52 只海龟还活着——所以所有这些海龟(超过一半)都会将他们的晚年贡献给 death-ages 列表。因此,您的 death-ages 列表严重左偏,类似于:

超过 100 次重复的平均 death-age 约为 90.5 年。我认为这是由于你的老化过程——尝试只让你的乌龟年龄增加 1 而不是 5——看看这是否会产生更像你期望的输出。它会立即改变分布,使其看起来更正常,100 次重复的平均 death-age 约为 81.2 年:

编辑:

您可以使用具有如下设置的绘图小部件快速设置直方图:

注意代码

if length death-ages > 0 [
   set-plot-x-range ( min death-ages - 5 ) ( max death-ages + 5)
]

包含在内是因为自动缩放不适用于直方图的 x 尺度。您可以在 "Plot update commands" 字段中排除该代码,并根据需要手动设置 x 最小值和最大值,但是您会错过任何在您选择的 x 最大值之后死亡的海龟。

您还需要将笔设置从线条更改为条形 - 单击笔字段右侧的铅笔图标打开下面的菜单,然后从 [=45] select "Bar" =] 下拉菜单。另请注意,我已将 "Interval" 设置为 5 以获得如上所示的图。