数据分析之 – 离群值(Outliers)

一:什么是Outliers

Outliers是统计学专业术语,是指相比一组数据中的其它数据的极限值

二:极限值意味什么

1. 决定哪些值是Outliers是一个主观行为,有一些基准数据来决定是否一个值是一个Outliers,这些基准是任意选择的,比如P<=0.5就是一个任意选择的基准

2. 一个基准是用BoxPlot来决定适度离群值(mild Outliers)和极限离群值(extreme Outliers),适度离群值是任何值1.5倍大于基于剩下所有的值的IQR,极限离群值是任何值3倍大于剩下所有的值的IQR,IQR(Interquartile Range)代表四分位数间距,是这些值中的50%中间值,分别是Q1-25%, Median-50%,Q3-75%, IQR=Q3-Q1

三:使用Box Plot来发现Outliers

一个典型的Box Plot是基于以下五个值计算而来的

a. 一组样本的最小值

b. 一组样本的最大值

c. 一组样本的中值

d. 下四分位数(Lower Quartile / Q1)

e. 上四分位数(Upper Quartile / Q3)

根据这五个值构建出来基本的Box Plot,某些图形软件还会显示平均值,IQR= Q3 – Q1

显然超出上下四分位数的值可以看做为Outliers。我们通过眼睛就可以很好的观察到这些Outliers值的点。

一个显示适度和极限Outliers值的Box plot显示如下:

四:示例说明及JfreeChart的实现

假设一组数据为:2,4,6,8,12,14,16,18,20,25,45

中值 Median = 14

Q1-下四分位数(11 * 0.25 = 3) = 7

Q3-上四分位数(11 * 0.75 = 9) =19

IQR(Q3 – Q1) = 12

1.5 * IQR = 18

最小值(6 – 1.5 * IQR)= 2

最大值(20 + 1.5 * IQR)= 25

很显然值45是一个适度Outliers

对比的一组数据为:2,4,6,8,12,14,16,18,20,25,26

从图上可以看出Series0的数据存在Outliers,一个红色三角形已经表明

同样Series1的数据是一组非常好的数据,没有Outliers.

下面是Java源代码:

package com.dataanalysis.plots;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.BoxAndWhiskerToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BoxAndWhiskerRenderer;
import org.jfree.data.statistics.BoxAndWhiskerCategoryDataset;
import org.jfree.data.statistics.DefaultBoxAndWhiskerCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class BoxAndWhiskerDemo extends ApplicationFrame {/*** */private static final long serialVersionUID = -3205574763811416266L;/*** Creates a new demo.** @param title  the frame title.*/public BoxAndWhiskerDemo(final String title) {super(title);final BoxAndWhiskerCategoryDataset dataset = createSampleDataset();final CategoryAxis xAxis = new CategoryAxis("Type");final NumberAxis yAxis = new NumberAxis("Value");yAxis.setAutoRangeIncludesZero(false);final BoxAndWhiskerRenderer renderer = new BoxAndWhiskerRenderer();renderer.setFillBox(false);renderer.setToolTipGenerator(new BoxAndWhiskerToolTipGenerator());final CategoryPlot plot = new CategoryPlot(dataset, xAxis, yAxis, renderer);final JFreeChart chart = new JFreeChart("Box-and-Whisker Demo",new Font("SansSerif", Font.BOLD, 14),plot,true);final ChartPanel chartPanel = new ChartPanel(chart);chartPanel.setPreferredSize(new java.awt.Dimension(450, 270));setContentPane(chartPanel);}/*** Creates a sample dataset.* * @return A sample dataset.*/private BoxAndWhiskerCategoryDataset createSampleDataset() {final int seriesCount = 2;final int categoryCount = 4;double[] data = null;final DefaultBoxAndWhiskerCategoryDataset dataset = new DefaultBoxAndWhiskerCategoryDataset();for (int i = 0; i < seriesCount; i++) {if(i == 0) {data = new double[]{2,4,6,8,12,14,16,18,20,25,45};} else {data = new double[]{2,4,6,8,12,14,16,18,20,25,26};}for (int j = 0; j < categoryCount; j++) {final List list = new ArrayList();for (int k = 0; k < data.length; k++) {list.add(new Double(data[k]));}dataset.add(list, "Series " + i, " Type " + j);}}return dataset;}/*** For testing from the command line.** @param args  ignored.*/public static void main(final String[] args) {final BoxAndWhiskerDemo demo = new BoxAndWhiskerDemo("Box-and-Whisker Chart Demo");demo.pack();RefineryUtilities.centerFrameOnScreen(demo);demo.setVisible(true);}
}

转载于:https://my.oschina.net/abcijkxyz/blog/721123

【gloomyfish】数据分析之 – 离群值(Outliers) BoxPlot相关推荐

  1. java boxplot_【gloomyfish】数据分析之 – 离群值(Outliers) BoxPlot

    数据分析之–离群值(Outliers) 一:什么是Outliers Outliers是统计学专业术语,是指相比一组数据中的其它数据的极限值 二:极限值意味什么 1. 决定哪些值是Outliers是一个 ...

  2. 探索性数据分析(EDA)-不要问如何,不要问什么

    数据科学 , 机器学习 (Data Science, Machine Learning) This is part 1 in a series of articles guiding the read ...

  3. 离群值是什么意思_离群值!离群值?离群值!

    作者:吴世飞 | 连玉君 ( 知乎 | 简书 | 码云 ) Note: 助教招聘信息请进入「课程主页」查看.因果推断-内生性 专题 ⌚ 2020.11.12-15 主讲:王存同 (中央财经大学):司继 ...

  4. Python boxplot 详解+用法

    详解: 箱型图提供了识别异常值的一个标准: 异常值通常被定义为小于QL-1.5IQR或大于QU+1.5IQR的值. QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小: QU称为上四分位数 ...

  5. python 热力图_python数据分析:数据缺失机制及利用missingno库对缺失可视化

    缺失数据是一个非常普遍的问题,也是好多人不太能弄懂的问题,包括自己也是,为了加强理解,今天给大家写一写缺失数据的缺失机制,和在python中用missingno库对缺失数据可视化的操作方法. 数据缺失 ...

  6. 数据预处理-离群值检测与处理

    @数据分析预处理 离群值检测 数据集中那些明显偏离数据集中其他样本的数据,检测离群值为数据分析与建模提供高质量的数据. 1.3σ法 当样本的取值符合正态分布时可以采用3σ法判断异常值. 样本x和样本均 ...

  7. Stata:离群值!离群值?离群值!

    原文链接:https://www.lianxh.cn/news/6fd920ed55bf0.html 目录 1. 何谓离群值? 2. 离群值存在会怎样? 3. 离群值的处理方法 3.1 对数转换 3. ...

  8. matplotlib之pyplot模块——绘制箱线图(盒须图)boxplot()(二)演示外观参数、返回值

    当前有效matplotlib版本为:3.4.1. 概述 boxplot()函数的作用是绘制箱线图(箱线图.盒须图.箱图). 箱线图是由一个箱体和一对箱须所组成的统计图形.箱体是由第一四分位数.中位数( ...

  9. eda分析_EDA理论指南

    eda分析 Most data analysis problems start with understanding the data. It is the most crucial and comp ...

  10. stata最大值最小值命令_用Stata实现数据标准化

    本文作者:杨慧琳 文字编辑:李钊颖 技术总编:高金凤 重磅!!!爬虫俱乐部将于2019年10月2日至10月5日在湖北武汉举行Python编程技术培训,本次培训采用理论与案例相结合的方式,旨在帮助零基础 ...

最新文章

  1. 如何使用深度学习训练聊天机器人
  2. php-screw下载,php_screw安装和使用
  3. JavaScript学习笔记之 数组方法一 堆栈 和队列
  4. gorm查询降序排列
  5. VigiBase中搜索和眼病相关的统计数据
  6. Mysql不同存储引擎的表转换方法
  7. spring 组件扫描_避免不必要的Spring配置组件扫描
  8. java 播放.pcm文件,java播发PCM文件
  9. 去月球“你知道戴维会变身成哪种动物吗?”
  10. 如何找到适合结婚的女朋友
  11. pytorch新手需要注意的隐晦操作Tensor,max,gather
  12. sqlserver 备份脚本
  13. 关于ubuntu下无线网卡经常连不上网络的问题
  14. android drawtext换行_Android中用StaticLayout实现文本绘制自动换行详解
  15. 科猫网:72个白手起家创业点子推荐
  16. 矩阵连乘(动态规划)
  17. 计算机重启打印机无法使用,为什么打印机在电脑重启后就不能用了并且也无法添加?-win7添加打印机...
  18. Activiti流程定义缓存源码分析5-流程缓存
  19. 如何用html5实现网页聊天,HTML5 WebSocket实现点对点聊天的示例代码
  20. 5、SpringMVC自动配置概览

热门文章

  1. Podman 容器 pod 管理工具
  2. 高性能Java模板引擎BSL-1.0.1发布
  3. bat 链接mysql数据库_使用bat脚本进行数据库操作
  4. php pandoc,搭建Pandoc+Markdown写作环境
  5. python-selenium学习笔记:利用ec模块的定位方法,登陆百度并验证是否登陆成功
  6. 【爆笑】句经典流行俏皮语【爆笑】[
  7. QuickJS 数字字面量解析
  8. 解决VS2015提示未能加载项目文件。缺少根元素的错误
  9. possible formatting directive
  10. 【Tidy2】Notepad++的html格式化插件