如何找到具有非线性阈值的异常值
How to find outliers with non-linear threshold
假设我有一个数据框,例如
x <- round(runif(1000,-5,5), 2)
y <- round(runif(1000,0,5), 2)
z <- sprintf("%s%05d", "A", seq.int(1000))
df <- data.frame(x, y, z)
我如何找到哪个数据点(z 列中点的名称)是非线性阈值的异常值,如下所示
y = a/(|x|-c)
其中 a
和 c
是我可以任意选择的值?
|x|是 x
的模数
如评论中所述,您可以为此创建一个简短的函数:
find_outliers = function(df, a, c){
y_threshold = a/(abs(df$x)-c)
return(df$z[df$y>y_threshold])
}
a=1
c=0.1
find_outliers(df,a,c)
假设我有一个数据框,例如
x <- round(runif(1000,-5,5), 2)
y <- round(runif(1000,0,5), 2)
z <- sprintf("%s%05d", "A", seq.int(1000))
df <- data.frame(x, y, z)
我如何找到哪个数据点(z 列中点的名称)是非线性阈值的异常值,如下所示
y = a/(|x|-c)
其中 a
和 c
是我可以任意选择的值?
|x|是 x
的模数如评论中所述,您可以为此创建一个简短的函数:
find_outliers = function(df, a, c){
y_threshold = a/(abs(df$x)-c)
return(df$z[df$y>y_threshold])
}
a=1
c=0.1
find_outliers(df,a,c)