R中的异常值截止值
Outlier cutoff in R
我正在尝试切断数据框变量的异常值,但它没有按预期执行:
outlier_cutoff1 <- quantile(myd$nov, 0.75) + 1.5 * IQR(myd$nov)
index_outlier1 <- which(myd$nov > outlier_cutoff1)
mydnov <- myd[-index_outlier1, ]
此代码不会给出错误但不会更改离群值。
这里不需要which
查看您的代码,我认为您可以使用以下方法删除“异常值”:
outlier_cutoff1 <- quantile(myd$nov, 0.75) + 1.5 * IQR(myd$nov)
index_outlier1 <- (myd$nov > outlier_cutoff1)
mydnov <- myd[-index_outlier1, ]
这是一个可验证的可重现示例(使用向量)。
set.seed(123)
nov <- rnorm(500)
outlier_cutoff1 <- quantile(nov, 0.75) + 1.5 * IQR(nov)
#This is 2.574977
index_outlier1 <- nov > outlier_cutoff1
#This returns a logical vector inticating when each value is greater than 2.574977
mydnov <- nov[-index_outlier1]
length(nov) #500
length(mydnov) #499, one was removed
我想这就是您要找的。让我知道它适用于 you.I 如果没有可重现的示例就无法完全测试。
myd_wo_outliers <- subset(myd, myd$nov > (Q[1] - 1.5*iqr) & myd$nov < (Q[2]+1.5*iqr))
查看此 page 了解更多详情。
我正在尝试切断数据框变量的异常值,但它没有按预期执行:
outlier_cutoff1 <- quantile(myd$nov, 0.75) + 1.5 * IQR(myd$nov)
index_outlier1 <- which(myd$nov > outlier_cutoff1)
mydnov <- myd[-index_outlier1, ]
此代码不会给出错误但不会更改离群值。
这里不需要which
查看您的代码,我认为您可以使用以下方法删除“异常值”:
outlier_cutoff1 <- quantile(myd$nov, 0.75) + 1.5 * IQR(myd$nov)
index_outlier1 <- (myd$nov > outlier_cutoff1)
mydnov <- myd[-index_outlier1, ]
这是一个可验证的可重现示例(使用向量)。
set.seed(123)
nov <- rnorm(500)
outlier_cutoff1 <- quantile(nov, 0.75) + 1.5 * IQR(nov)
#This is 2.574977
index_outlier1 <- nov > outlier_cutoff1
#This returns a logical vector inticating when each value is greater than 2.574977
mydnov <- nov[-index_outlier1]
length(nov) #500
length(mydnov) #499, one was removed
我想这就是您要找的。让我知道它适用于 you.I 如果没有可重现的示例就无法完全测试。
myd_wo_outliers <- subset(myd, myd$nov > (Q[1] - 1.5*iqr) & myd$nov < (Q[2]+1.5*iqr))
查看此 page 了解更多详情。