java boxplot_【gloomyfish】数据分析之 – 离群值(Outliers) BoxPlot
数据分析之–离群值(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); } }
java boxplot_【gloomyfish】数据分析之 – 离群值(Outliers) BoxPlot相关推荐
- java计算机毕业设计数据分析星辰网智能手机销售网站源码+mysql数据库+系统+lw文档+部署
java计算机毕业设计数据分析星辰网智能手机销售网站源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计数据分析星辰网智能手机销售网站源码+mysql数据库+系统+lw文档+部署 本源 ...
- java计算机毕业设计数据分析星辰网智能手机销售网站MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计数据分析星辰网智能手机销售网站MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计数据分析星辰网智能手机销售网站MyBatis+系统+LW文档+源码+调试部署 ...
- java boxplot_箱线图(boxplot)简介与举例
直观地识别数据集中的异常值(查看离群点). 判断数据集的数据离散程度和偏向(观察盒子的长度,上下隔间的形状,以及胡须的长度). 实例: 12位商学院毕业生月起薪的样本在这里按升序重复如下. 2710 ...
- java通过jri 数据分析_SparkR安装部署及数据分析实例
1. SparkR的安装配置 1.1. R与Rstudio的安装 1.1.1. R的安装 我们的工作环境都是在Ubuntu下操作的,所以只介绍Ubuntu下安装R的方法 ...
- java session使用_使用Neo4j和Java进行大数据分析 第2部分
本文的第一部分介绍了Neo4j及其Cypher查询语言.如果您已经阅读了第1部分,那么您已经了解了为什么Neo4j和其他图形数据库特别受社交图形或网络中用户之间关系建模的影响.您还在开发环境中安装了N ...
- 使用Neo4j和Java进行大数据分析 第1部分
几十年来,关系数据库一直主导着数据管理,但它们最近已经失去了NoSQL的替代品.虽然NoSQL数据存储不适合每个用例,但它们通常更适合大数据,这是处理大量数据的系统的简写.四种类型的数据存储用于大数据 ...
- 探索性数据分析(EDA)-不要问如何,不要问什么
数据科学 , 机器学习 (Data Science, Machine Learning) This is part 1 in a series of articles guiding the read ...
- 离群值是什么意思_离群值!离群值?离群值!
作者:吴世飞 | 连玉君 ( 知乎 | 简书 | 码云 ) Note: 助教招聘信息请进入「课程主页」查看.因果推断-内生性 专题 ⌚ 2020.11.12-15 主讲:王存同 (中央财经大学):司继 ...
- Python boxplot 详解+用法
详解: 箱型图提供了识别异常值的一个标准: 异常值通常被定义为小于QL-1.5IQR或大于QU+1.5IQR的值. QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小: QU称为上四分位数 ...
最新文章
- Zend Studio添加ThinkPHP代码提示方法
- 【Nvivo教程】使用Nvivo构建计算的本体
- Android Priority Job Queue (Job Manager):多重不同Job并发执行并在前台获得返回结果(四)...
- opengl加载显示3D模型COB类型文件
- Android系统架构图
- Summary - 2017
- 基于Android 9.0 电池温度异常提醒
- bootstrap-pagination demo
- mysql命令语句来去除掉字段中空格字符的方法
- 视觉SLAM十四讲学习笔记——第五讲--相机与图像
- 14. 使用reserve避免不必要的内存分配
- 网络安全实验8 基于网络入侵检测系统
- 微型计算机原理与接口技术
- ESB(企业服务总线)
- 江民“网页收割者”病毒技术分析报告
- category theory 简介
- 【Godot】一个节点发射器(泼水机)
- autoquad源码分析1
- SAP案例教程FI财务后台配置
- UUID和GUID的区别