如何使用NetLogo查找四分位数或五分位数?

时间:2019-01-29 10:19:44

标签: netlogo

所以我有一组值,需要找到最低或较高的四分位数。我知道有一个函数可以找到中值,但是深入研究的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您拥有多少个值?如果没有太多,您可以编写自己的函数。这就是我下面所做的。它将对值进行排序,然后沿相关百分比计数并报告回来,并在必要时进行插值。该代码是完整的模型,因此您可以尝试一下。

turtles-own [test-value]

to setup
  clear-all
  create-turtles 150 [set test-value random-float 1]
  type "20%ile is " print calc-pct 20 [test-value] of turtles
end

to-report calc-pct [ #pct #vals ]
  let #listvals sort #vals
  let #pct-position #pct / 100 * length #vals
  ; find the ranks and values on either side of the desired percentile
  let #low-rank floor #pct-position
  let #low-val item #low-rank #listvals
  let #high-rank ceiling #pct-position
  let #high-val item #high-rank #listvals
  ; interpolate
  ifelse #high-rank = #low-rank
  [ report #low-val ]
  [ report #low-val + ((#pct-position - #low-rank) / (#high-rank - #low-rank)) * (#high-val - #low-val) ]
end

如果您有很多值,这将很慢。在这种情况下,最好使用R扩展名并在R中进行计算。