talla tabla peso percentiles percentil para niƱos frecuencias deciles datos cuartiles como calculo calcular agrupados ruby ruby-on-rails-3 algorithm math

tabla - Calcular el percentil 95 en Ruby?



como calcular percentiles en excel (3)

Percentil basado en cuenta de artículos

a = [1,2,3,4,5,6,10,11,12,13,14,15,20,30,40,50,60,61,91,99,120] def percentile_by_count(array,percentile) count = (array.length * (1.0-percentile)).floor array.sort[-count..-1] end # 80th percentile (21 items*80% == 16.8 items are below; pick the top 4) p percentile_by_count(a,0.8) #=> [61, 91, 99, 120]

Percentil basado en rango de valores

def percentile_by_value(array,percentile) min, max = array.minmax range = max - min min_value = (max-min)*percentile + min array.select{ |v| v >= min_value } end # 80th percentile (119 * 80% = 95.2; pick values above this) p percentile_by_value(a,0.8) #=> [99, 120]

Curiosamente, la función PERCENTILE de Excel devuelve 60 como el primer valor para el percentil 80. Si desea que se incluya este resultado, si desea que se incluya un elemento que se encuentra en la cúspide del límite, cambie el .floor arriba a .ceil .

Esta pregunta aquí no parece ayudar: Cálculo de percentiles (Ruby)

Me gustaría calcular el percentil 95 (o, de hecho, cualquier otro percentil deseado) a partir de una serie de números. En última instancia, esto se aplicará en Rails para calcular la distribución en una gran cantidad de registros.

Pero, si puedo determinar cómo determinar con precisión un percentil dado a partir de una serie de números, puedo tomarlo desde allí.

Francamente, me sorprende que no haya podido encontrar algún tipo de gema que tenga tales funciones, no la he encontrado todavía.

La ayuda es muy apreciada.


Si desea replicar la función PERCENTILE de Excel, intente lo siguiente:

def percentile(values, percentile) values_sorted = values.sort k = (percentile*(values_sorted.length-1)+1).floor - 1 f = (percentile*(values_sorted.length-1)+1).modulo(1) return values_sorted[k] + (f * (values_sorted[k+1] - values_sorted[k])) end values = [1, 2, 3, 4] p = 0.95 puts percentile(values, p) #=> 3.85

La fórmula se basa en el método CUARTIDO, que en realidad es solo un percentil específico: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q103493 .


Si estás interesado en una gema existente, entonces la gema descriptive_statistics es la mejor que he encontrado hasta ahora para la función percentile .

Sesión IRB

> require ''descriptive_statistics'' => true irb(main):009:0> data = [1, 2, 3, 4] => [1, 2, 3, 4] irb(main):010:0> data.percentile(95) => 3.8499999999999996 irb(main):011:0> data.percentile(95).round(2) => 3.85

Buena parte de la gema es su forma elegante de describir "Quiero el percentil 95 de los datos".