如何在NetLogo中在直方图上绘制分布曲线?

目标

我正在NetLogo中为蜜蜂中的食物交换编写一个简单的模型。我绘制了一个直方图以显示在每个刻度上具有不同食物量的蜜蜂的分布。现在,我想在每次运行模型时绘制一条覆盖直方图的正态分布曲线,即一条适合直方图条的曲线。我在此命令中使用了一支笔来绘制直方图:histogram [food] of turtles并且还编写了这样的函数来添加另一支笔:

to draw-PDF
  set-current-plot "OVERALL FOOD DISTRIBUTION"
  create-temporary-plot-pen "normal"
  set-plot-pen-color red
  plot-pen-down
  let distsd sqrt ( variance ([food] of turtles) )
  let distmean mean [food] of turtles
  let multconst Number_of_bees / distsd / sqrt(2 * pi)
  let expconst 2 * distsd ^ 2
  let b 0
  while [ b < Number_of_bees]
  [
    let f foodofeachbee b
    let exparg (- ((f - distmean) ^ 2)) / expconst
    let y multconst * exp(exparg)
    plotxy f  y ]
end

foodofeachbee是我单独定义的记者。但是运行此命令时,出现错误消息:“您的模型太大,无法运行!”

有什么建议么?

仁宝

您将需要针对特定​​变量等修改此代码,但是这里有一个完整的模型,该模型演示了如何执行我想做的事情。将此代码复制到空白模型中,histogram [ value ] of turtles并使用间隔为0.05的钢笔创建一个名为Test的绘图该代码添加了第二个笔,其pdf由变量的均值和方差构成,并根据海龟的数量进行了调整。

您正在尝试为每只蜜蜂构造一个值。pdf与单个蜜蜂无关,因此绘图程序可以完全忽略它们,除非提取平均值和方差所需的值。

turtles-own [value]

to testme
  clear-all
  create-turtles 100
  [ set value random-normal 0.5 0.1 ]
  plot-normalised
  reset-ticks
end

to plot-normalised
  let meanPlot mean [value] of turtles
  let varPlot variance [value] of turtles
  let mult (count turtles / 20)  / sqrt (2 * pi * varPlot)
  set-current-plot "Test"
  create-temporary-plot-pen "normal"
  set-plot-pen-color red
  plot-pen-down
  let stepper 0.025
  while [ stepper <= 1 ]
  [ plotxy stepper (mult * exp ( - ((stepper - meanPlot) ^ 2) / (2 * varPlot) ) )
    set stepper stepper + 0.05
  ]
end

基本上,此代码计算要绘制的变量的均值和方差,并将步进器的特定值(即x坐标)馈入正态分布pdf函数以计算图的y值。

对于代码,您要做的就是用要绘制的变量min来替换此代码执行的间隔[0,1] max在计算多重值时,您可以看到count turtles / 20这也需要替换。20是绘制间隔的长度(在这种情况下为1)除以每个直方图条的宽度(在这种情况下为0.05)。

因此,代码的最后一部分必须看起来像:

let mymin min [value] of turtles
let mymax max [value] of turtles
let stepper mymin + 0.025
while [ stepper <= mymax ]
[ plotxy stepper (mult * exp ( - ((stepper - meanPlot) ^ 2) / (2 * varPlot) ) )
  set stepper stepper + 0.05
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章