如何测试死亡率是否正确
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 以获得如上所示的图。
这个问题与我前段时间问过的
我正在尝试在 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 以获得如上所示的图。