Как использовать NetLogo, чтобы найти квартиль или квинтиль? - PullRequest
0 голосов
/ 29 января 2019

Итак, у меня есть набор значений, и мне нужно найти самый низкий или более высокий квартиль.Я знаю, что есть функция для нахождения медианного значения, но как лучше пойти глубже?

1 Ответ

0 голосов
/ 29 января 2019

Сколько у вас значений?Если их не так много, вы можете написать свою собственную функцию.Вот что я сделал ниже.Он сортирует значения, затем считает по соответствующему проценту и возвращает отчет, интерполируя при необходимости.Код представляет собой законченную модель, поэтому вы можете попробовать его.

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.

...