gpt4 book ai didi

r - 使用 R 找到包含数组中 90% 值的最小区间的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-04 12:16:12 25 4
gpt4 key购买 nike

我得到了 1 到 4 之间的数字数组,但通常它们的最小值和最大值之间的差异不会超过 0.5。每个元素之间的差异不小于 0.1。我想找到包含至少 90%(或其他指定比率)元素的最小边距。

即给定数组

c(1, 1.9, 2, 2, 2, 2, 2.1, 2.2, 2.3, 2.3)

我希望我的函数返回 .4,因为 2.3 - 1.9 = .4 < 2.3 - 1 = 1.3。详情:

  • 2.3 - 1.9 来自 90% 长度的子向量,从 1.9 开始一直运行到末尾
  • 2.3 - 1 来自 90% 长度的子向量,从 1 开始,到第一个 2.3 结束

我尝试构建该函数几次,但它一直变得过于复杂,我想知道是否有一种我没有考虑过的简单方法。

编辑:它必须能够满足偏斜分布。自从我不断重构以来,我没有任何完整的代码示例,但我会做一些东西并发布它。

Edit2:我无法提供任何我想输入函数的数组示例,但这里有一个用于生成类似值的函数。不落在 1 到 4 范围内并不重要,只要它有效。

x = round(rbeta(20,5,2)*100)/10

最佳答案

最简单的方法是通过测试包括 90% 在内的所有可能范围来进行暴力破解。为此,我们计算出有多少项,以及范围因此可以从哪些索引开始,并计算每个项的差异,然后计算其中的最小值。

x <- c(1, 1.9, 2, 2, 2, 2, 2.1, 2.2, 2.3, 2.3)
n <- ceiling(length(x)*0.9) # get the number of terms needed to include 90%
k <- 1 : (length(x) - n + 1) # get the possible indices the range can start at
x <- sort(x) # need them sorted...
d <- x[k + n - 1] - x[k] # get the difference starting at each range
min(d) # get the smallest difference

关于r - 使用 R 找到包含数组中 90% 值的最小区间的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57082315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com