加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 02:42:59 所属栏目:百科 来源:网络整理
导读:我有这个数组: [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? 维基百科链接解释得最好,但我基本上需要删除底部和前2
我有这个数组:

[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.0整除,当它不能被4整除时.

那我该怎么做呢?

解决方法

这是一个数组的部分解决方案,其中包含多个4的元素.当我弄明白时,我会把完整的元素放入.

arr = [288.563044,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读