从分位数函数确定元素时如何找到元素索引?
How to find element index when element is determined from quantile function?
当使用 quantile()
确定元素时,如何找到元素的索引?
来自 similar question 的 match()
和 which()
解决方案不起作用(它们 return NA),我认为它们不起作用是因为舍入问题。
如果两个索引的分位数结果是averaged/interpolated,我可以指定是否取lower/higher索引吗?我的数据 x
将始终排序。
示例数据集(显然这里的 0 和 1 分位数只是最小值和最大值,它们只是为了完整性检查而显示)
x <- c(0.000000e+00,9.771228e-09,5.864592e-06,3.474925e-04,9.083242e-04,2.458036e-02)
quantile(x, probs = c(0, 0.5, 1))
0% 50% 100%
0.0000000000 0.0001766785 0.0245803600
如何找到这些分位数的索引?此处,索引为 1,??,6
。
我想中位数是两个指数的平均值,所以我可以具体说明它 return 是第一个还是第二个指数?
使用findInterval
?
x <- c(0.000000e+00, 9.771228e-09, 5.864592e-06, 3.474925e-04,
9.083242e-04,2.458036e-02)
findInterval(quantile(x, probs = c(0, 0.5, 1)), x)
#[1] 1 3 6
您可能想要 type=4
,它使用经验 cdf 的线性插值(即考虑实际中位数)。
x <- c(0.000000e+00,9.771228e-09,5.864592e-06,3.474925e-04,9.083242e-04,2.458036e-02)
(q <- quantile(x, probs=c(0, 0.5, 1), type=4))
# 0% 50% 100%
# 0.000000e+00 5.864592e-06 2.458036e-02
match(q, x)
# [1] 1 3 6
x[match(q, x)]
# [1] 0.000000e+00 5.864592e-06 2.458036e-02
其他示例:
set.seed(42)
x <- runif(1e3)
(q <- quantile(x, probs=c(0, 0.5, 1), type=4))
# 0% 50% 100%
# 0.0002388966 0.4803101290 0.9984908344
match(q, x)
# [1] 92 174 917
x[match(q, x)]
# [1] 0.0002388966 0.4803101290 0.9984908344
当使用 quantile()
确定元素时,如何找到元素的索引?
来自 similar question 的 match()
和 which()
解决方案不起作用(它们 return NA),我认为它们不起作用是因为舍入问题。
如果两个索引的分位数结果是averaged/interpolated,我可以指定是否取lower/higher索引吗?我的数据 x
将始终排序。
示例数据集(显然这里的 0 和 1 分位数只是最小值和最大值,它们只是为了完整性检查而显示)
x <- c(0.000000e+00,9.771228e-09,5.864592e-06,3.474925e-04,9.083242e-04,2.458036e-02)
quantile(x, probs = c(0, 0.5, 1))
0% 50% 100%
0.0000000000 0.0001766785 0.0245803600
如何找到这些分位数的索引?此处,索引为 1,??,6
。
我想中位数是两个指数的平均值,所以我可以具体说明它 return 是第一个还是第二个指数?
使用findInterval
?
x <- c(0.000000e+00, 9.771228e-09, 5.864592e-06, 3.474925e-04,
9.083242e-04,2.458036e-02)
findInterval(quantile(x, probs = c(0, 0.5, 1)), x)
#[1] 1 3 6
您可能想要 type=4
,它使用经验 cdf 的线性插值(即考虑实际中位数)。
x <- c(0.000000e+00,9.771228e-09,5.864592e-06,3.474925e-04,9.083242e-04,2.458036e-02)
(q <- quantile(x, probs=c(0, 0.5, 1), type=4))
# 0% 50% 100%
# 0.000000e+00 5.864592e-06 2.458036e-02
match(q, x)
# [1] 1 3 6
x[match(q, x)]
# [1] 0.000000e+00 5.864592e-06 2.458036e-02
其他示例:
set.seed(42)
x <- runif(1e3)
(q <- quantile(x, probs=c(0, 0.5, 1), type=4))
# 0% 50% 100%
# 0.0002388966 0.4803101290 0.9984908344
match(q, x)
# [1] 92 174 917
x[match(q, x)]
# [1] 0.0002388966 0.4803101290 0.9984908344