我目前正在尝试以一种非常简单的方式删除R中的异常值。我知道您可以为此自己创建函数,但是我想在此简单代码上输入一些信息,为什么它似乎不起作用?
outliers <- boxplot(okt$pris)$out
okt_no_out <- okt[-c(outliers),]
boxplot(okt_no_out$pris)
第一行创建带有异常值的向量,第二行创建一个新的数据框,忽略该向量中的值。但是...当我检查新数据框时,仅删除了750个离群值中的约400个?
向量离群值包含大约750行,但是这样做时,只移除了其中的一半...。
这些简单的代码行是否应该以一种非常方便的方式消除异常值?
boxplot$out
返回异常值,而不是异常值。okt[-c(outliers),]
删除数据序列中的随机点也是如此,其中一些是离群值,而另一些则不是。
您能做的是使用箱线图统计信息中的输出来检索上下晶须的末端,然后使用这些值过滤数据集。请参阅以下示例:
#test data
testdata<-iris$Sepal.Width
#return boxplot object
b<-boxplot(testdata)
#find extremes from the boxplot's stats output
lowerwhisker<-b$stats[1]
upperwhisker<-b$stats[5]
#remove the extremes
testdata<-testdata[testdata>lowerwhisker & testdata<upperwhisker]
#replot
b<-boxplot(testdata)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句