ruby - 从 Ruby 数组计算四分位数平均值?

标签 ruby arrays math statistics

我有这个数组:

[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/

相关文章:

ruby - 太阳黑子/Solr : indexing a time field results in NumberFormatException

ruby - Acts_as_Inviteable 插件不在 Ruby on Rails 中发送邀请

ios - 如何从 swift 2.1 中的对象数组创建字典?

java - 太阳路径的计算

ruby-on-rails - 使用 Ruby 1.9.3 的 Windows 8 x64 上的 nokogiri gem 缺少 libxml2

javascript - 仅找到第一个匹配项并返回数组中的剩余字符

Java 无法在没有明显冗余类型转换的情况下正确推断流类型

haskell - 检查列表是否为回文的数学函数

java - 在 Java 中将 float 转换为 32 位定点数

ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant"