【问题标题】:Outlier detection depending on group异常值检测取决于组
【发布时间】:2022-10-08 18:03:24
【问题描述】:

我有一个数据集(新美国) 像这样:

   |  PRICE |   CITY   |    STATE      |
   |--------|--------- |---------------|
   | 950000 | Dorado   | Puerto Rico   |
   | 785442 | Amherst  | Massachusetts |
   | 547478 | Chicopee | Massachusetts |
   | 400000 | Hamden   | Connecticut   |

以及 +300,00 额外行报告不同城市和州的房价。 我运行以下 R 代码:

new_america %>% 
      ggplot(aes(x = state, y = price, fill = state)) +
      geom_boxplot()

并意识到df充满了异常值。 我试图根据公寓所在的州(甚至城市)比较并最终检测异常值,以免比较价格范围不同的州(我认为比较佛蒙特州是不正确的纽约价格)

我该如何解决?

【问题讨论】:

  • 这根本不是一个编程问题。什么是“异常值”以及您应该如何处理它都是理论上的。将佛蒙特州的价格与纽约的价格进行比较有什么意义?如果您排除纽约市,“纽约价格”是什么意思?如果您的数据“充满异常值”,它们真的是异常值吗?
  • 您可以尝试在 stats.stackexchange 上询问,但他们也无法为您提供帮助,除非您可以更具体一些。你的目标是什么?您打算使用什么方法?您的数据是个别房屋的价格,还是已经以某种方式汇总?你看过类似分析的例子吗? (是有原因的房屋价值中位数不是平均房屋价值是一个普遍报道的统计数据……)

标签: r data-cleaning outliers


【解决方案1】:

每当您在箱线图中将多个点绘制为“异常值”时,您都必须质疑这是否是数据分布极值的准确表示。考虑diamonds 数据集。在制作按价格切割钻石的箱线图时,您会得到非常相似的结果:

#### Load Library ####
library(tidyverse)

#### Boxplot ####
diamonds %>% 
  ggplot(aes(x=cut,
             y=price))+
  geom_boxplot()

现在,如果您要制作相同数据的散点图,它将如下所示:

您现在可以看到,这些都不是异常值。虽然分布在价格底部的权重更大,但该数据中有几个高价项目在箱线图中被标记为异常值。如果您要删除所有这些值,您将丢失大量数据,并因此丢失许多关于切割钻石价格的宝贵见解。

【讨论】:

    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 2021-11-06
    • 2020-04-03
    • 2016-02-28
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多