【问题标题】:R finding relative maximum from outliersR从异常值中找到相对最大值
【发布时间】:2015-08-21 01:52:43
【问题描述】:

假设我有一个数字向量,我想为其找到一个通用的截止值。例如:

x <- c(35, 2, 3, 30, 1, 4, 33, 6, 36)

在这种情况下,我只想提取一个包含35, 30, 33, 36 的子集。在这种情况下,截止将在30 没有硬编码明确的截止,我希望我的代码适应不同的数字向量,以便找到该截止。

另一个例子是:

x <- c(1, 20, 42, 13, 118, 149, 130, 30, 11, 32, 120, 0.5, 0.03)

在这种情况下,一个合理的截止值应该在118 附近。

目前我正在对截止点进行硬编码,因为我正在处理简单的情况,但是我想让这个过程更加模块化,以适应更多变量向量。

【问题讨论】:

    标签: r outliers max


    【解决方案1】:

    你可以使用quantile函数

    cutoff <- function(y, prob=0.7) y[y > quantile(y, prob)]
    
    x <- c(35, 2, 3, 30, 1, 4, 33, 6, 36)
    cutoff(x)
    [1] 35 33 36
    
    x <- c(1, 20, 42, 13, 118, 149, 130, 30, 11, 32, 120, 0.5, 0.03)
    cutoff(x)
    [1] 118 149 130 120
    

    您可以根据需要定义不同的概率

    cutoff(x, 0.8)
    [1] 149 130 120
    

    【讨论】:

      猜你喜欢
      • 2020-10-27
      • 2012-12-28
      • 2022-07-19
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 2022-10-14
      • 2017-03-25
      • 1970-01-01
      相关资源
      最近更新 更多