假设我有一个数据帧,比如
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 是否可以任意选择值?
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)