【问题标题】:Alternate way to remove outliers in R在 R 中删除异常值的替代方法
【发布时间】:2020-08-04 16:11:36
【问题描述】:

我希望在 k 表示聚类后删除聚类中的异常数据点,并在 R 中使用这种方式:-

1.)绘制图形:-

plot(sort(df[[1]]$var))
plot(sort(df[[2]]$var))

2.)从图表中查看异常值(在我的情况下为极端)数据点。

rownames(df[[1]])<-1:nrow(df[[1]])
rownames(df[[2]])<-1:nrow(df[[2]])

3.)转到view(df[[1]]),view(df[[2]]) 按降序对var 进行排序,并记下那些作为异常数据点的行索引号,然后从df[[1]] ,df[[2]] 中删除这些行

df[[1]]<-df[[1]][-c(200,320,216),]
df[[2]]<-df[[2]][-c(7000,1200,2320),]

df 是一个包含 3 个元素的列表,df[[1]] 访问第一个元素/簇

还有其他简单有效的方法可以达到同样的效果吗?

【问题讨论】:

  • 请考虑MCVE这可能会有所帮助:stackoverflow.com/questions/5963269/…
  • 看看?boxplot.stats,它将识别向量中的统计异常值。
  • 我只想删除按变量var 的降序排序的列表的前 n(n) 行。

标签: r dataframe cluster-analysis k-means outliers


【解决方案1】:

您需要包含一个简短、可重复的示例,说明您想要什么以及您尝试过什么。也就是说,如果我猜对了您想要什么,以下内容可能会给您一些提示。请注意,您可以通过 CI 或其他方式获取最小/最大切割值。

a <- 1:40
b <- a[a %in% 4:35] # Define outliers as <= 4 or >= 35
b
length(b) # Note there are no NAs using this approach

基本上在相关离群值处截断离群值,并将剩余元素绘制成图表。

【讨论】:

  • 我已经给出了我正在遵循的方法。我想知道有一种有效的方法来做到这一点。
  • 只有在绘制图表后我才能知道我的异常值。从那里说我识别了 3 个异常值点,我转到 df 并按 var 的 desc 顺序排序,然后删除第一个3 行
  • 必须计算异常切点,而不是目测。 R 有多种计算方法,具体取决于您的具体分析。
  • “Extreme”是一个统计概念,需要对其进行量化才能具有统计意义。它不能以草率、眼球的方式完成。
  • 所以plot(sort(df[[1]]$var)) 将给出sort(df[[1]]$var vs Index.It 鞋子偏离主要趋势(或远离其他数据点)的点。这些是我想要删除的。当我按 df 降序排序时,我会了解图表中显示的数据并因此删除它们。
猜你喜欢
  • 2012-08-11
  • 2018-10-03
  • 2021-08-31
  • 2017-09-25
  • 2019-04-11
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
相关资源
最近更新 更多