我有这个数组:
[288.563044, 329.835918, 578.622569, 712.359026, 866.614253, 890.066321, 1049.78037, 1070.29897, 2185.443662, 2492.245562, 4398.300227, 13953.264379]
如何计算 interquartile mean从这个?
那个维基百科链接解释得最好,但我基本上需要删除底部和顶部的 25%,只留下中间的 50%,我需要对其中的数字进行平均。
但这是假设数组项的数量可以被 4 整除。Here's how to calculate it当它不能被四整除时。
那么我该怎么做呢?
最佳答案
这是一个数组的部分解决方案,该数组的元素数量是 4 的倍数。我会在弄清楚后放上完整的。
arr = [288.563044, 329.835918, 578.622569, 712.359026, 866.614253, 890.066321, 1049.78037, 1070.29897, 2185.443662, 2492.245562, 4398.300227, 13953.264379].sort!
length = arr.size
mean = arr.sort[(length/4)..-(length/4+1)].inject(:+)/(length/2)
我认为这是一个更好的解决方案。
def interquartile_mean(array)
arr = array.sort
length = arr.size
quart = (length/4.0).floor
fraction = 1-((length/4.0)-quart)
new_arr = arr[quart..-(quart + 1)]
(fraction*(new_arr[0]+new_arr[-1]) + new_arr[1..-2].inject(:+))/(length/2.0)
end
关于ruby - 从 Ruby 数组计算四分位数平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8856716/