用Dundas制作盒须图BoxPlot(盒式图,箱形图)

2023-10-08 18:40

本文主要是介绍用Dundas制作盒须图BoxPlot(盒式图,箱形图),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前段时间有个需求,要求做个"盒式图"或叫"盒须图""箱形图",此图是统计学中用于统计分析的一类图表,开始看到这个词有些奇怪,说实话之前从来没听说过这样的图!因为是用户需求,还是要尝试实现一下!尝试过用水晶报表,Excel等,但都没找到实现方法或找到方法但不是很理想,最终Dundas Chart(Enterprise)控件中终于找到了相应的控件(当然其它的控件也提供此图支持)
现把学习过程记录下来以备后用,或给有用的朋友一点提示..
 
  
一.名词解释

    在网上找了N久,关于盒须图的解释很少,下面是搜索的几个解释,可以综合起来理解:
    1.盒须图又称为箱形图,其绘制须使用常用的统计量,最适宜提供有关数据的位置和分散的参考,尤其在不同的母体数据时更可表现其差异
常用的统计量 :
 。 平均数
 。 中位数
 。 百分位数
 。 四分位数
 。 全距
 。 四分位距
 。 变异数和标准差
 。
盒须图的绘制
详情参见:http://web.thu.edu.tw/wenwei/www/cgi/stat/box/index.html#a4)
 2.盒须图提供了一种只用5个点对数据集做简单的总结的方式。这5个点包括中点、Q1、Q3、分部状态的高位和低位。盒须图很形象的分为中心、延伸以及分部状态的全部范围
A Box-And-Whisker Plot 
(http://wme.lzu.edu.cn/cn/stat_boxwhisker.html?index=/cn/stat_index.html&indexname=%E8%BF%94%E5%9B%9E%E7%9B%AE%E5%BD%95)



二. 盒须图百分位数的计算方式
   盒式图中最重要的是对相关统计点的计算,相关统计点都可以通过百分位计算方法进行实现,强大的教育统计分析软件SPSS,提供了五种计算方式,用于计算百分位的计算方案可参见(http://www.broadtarget.com/Blog/?action/viewspace/itemid/44).本文的百分位数的计算方式采用最基本的计算方案.
 

百分位数:
p个样本百分位数是某一个数值,使得样本中有 p 部分的观察值小于或等于
求第p 个百分位数的程序:
1.
将数据由小到大排序。
2.
计算第个位置
3.
假如 i 不为整数,则取下一个比i 还要大的值,即为第 p 个百分位数。
 假如 i 为整数,则第p 个百分位数为第 i i+1的平均。
注意:第50个百分位数 = 中位数

三.样本数据结构,数据,计算方法
  
1.成绩表
    班级  学号      分数    其它字段
       3    01     85.50
       3    02     78.00
       4    03     76.50
       4    04     71.00
       5    05     67.00
       5    06     76.00
       ......

   2.盒须图数据结构表
    (Q1=lower_whisker,Q2=upper_whisker,Q3=low_box,Q4=upper_box,Q5=med)
   分组 分组名称 Q1    Q2    Q3    Q4    avg   Q5    
    1 高一1班 46.0 79.5 63.0 73.0 66.0 71.0
    2 高一2班 48.6 82.2 63.3 76.5 68.1 71.5
    3 高一3班 48.9 82.5 63.4 74.0 67.1 68.5    
    4 高一4班 65.7 87.3 74.8 81.4 77.5 79.3
    5 高一5班 53.0 88.5 73.1 83.5 76.6 78.5
    6 高一6班 62.5 88.3 72.5 82.3 76.0 76.5

    3.分析存储过程
     执行分析存储过程,将成绩表(1)中的数据分析为盒须图指定格式盒须图数据结构表(2)

分析存储过程
  1set ANSI_NULLS ON
  2set QUOTED_IDENTIFIER ON
  3go
  4
  5
  6
  7-- =============================================
  8-- Author:      林付国
  9-- Create date: 2007.8.14
 10-- Description:    盒须图数据生成
 11/**//*
 12    Name:盒须图(箱型图)统计数据
 13    Date:2007.8.14
 14    描述:完成盒须图5%,25%,50%,75%,95%,平均值的统计数据计算
 15    规则:
 16        第N個百分位數的計算方法
 17        1. 将数据由小到大排序。 
 18        2. 计算第i=(p/100)*n個位置
 19        3. 假如i不为整数,则取下一个比i还要大的值,即为第P个百分位数。
 20            假如i为整数,则第P个百分位数为第i和i+1的平均。
 21           注意:第50个百分位数 = 中位数
 22*/

 23
 24-- =============================================
 25ALTER PROCEDURE [dbo].[BoxPlot]
 26    @ExamID numeric(20)
 27AS
 28BEGIN
 29    
 30    
 31    
 32
 33    declare @p5 float;
 34    declare @p25 float;
 35    declare @p50 float;
 36    declare @p75 float;
 37    declare @p95 float;
 38    set @p5 = .95;
 39    set @p25 = .75;
 40    set @p50 = .5;
 41    set @p75 = .25;
 42    set @p95 = .05;
 43
 44    with 
 45    e1 as (
 46    select classid, score, row_number() over(partition by classid order by score descas PRN, 
 47    count(*over(partition by classid) as N
 48    from TB_DM_TotalScore
 49    ), 
 50    e2 as (
 51        select 
 52            classid, score, PRN, N, 
 53            1 + (@p5 * (N-1)) as RN5,
 54            (@p25 * N) as RN25,
 55            (@p50 * N) as RN50,
 56            (@p75 * N) as RN75,
 57            (@p95 * N) as RN95
 58        from e1
 59    ), 
 60    e3 as 
 61    (
 62        select classid, score, N, PRN, RN5, RN25,RN50,RN75,RN95,
 63            CEILING(RN5) as CRN5, FLOOR(RN5) as FRN5,
 64            CEILING(RN25) as CRN25, FLOOR(RN25) as FRN25,
 65            CEILING(RN50) as CRN50, FLOOR(RN50) as FRN50,
 66            CEILING(RN75) as CRN75, FLOOR(RN75) as FRN75,
 67            CEILING(RN95) as CRN95, FLOOR(RN95) as FRN95
 68        from e2
 69    ), 
 70
 71    er as (
 72        select 
 73            classid, score, N, PRN, 
 74            RN5, CRN5, FRN5,
 75            RN25, CRN25, FRN25,
 76            RN50, CRN50, FRN50, 
 77            RN75, CRN75, FRN75,
 78            RN95, CRN95, FRN95, 
 79            case when e3.CRN5 = e3.FRN5 and e3.CRN5 = e3.RN5 then 1 else 0 end as grp5,
 80            case when e3.CRN25 = e3.FRN25 and e3.CRN25 = e3.RN25 then 1 else 0 end as grp25,
 81            case when e3.CRN50 = e3.FRN50 and e3.CRN50 = e3.RN50 then 1 else 0 end as grp50,
 82            case when e3.CRN75 = e3.FRN75 and e3.CRN75 = e3.RN75 then 1 else 0 end as grp75,
 83            case when e3.CRN95 = e3.FRN95 and e3.CRN95 = e3.RN95 then 1 else 0 end as grp95
 84        from e3
 85    )
 86
 87    --select 
 88    --    classid, score, N, PRN, 
 89    --    RN5, CRN5, FRN5,grp5,
 90    --    RN25, CRN25, FRN25,grp25,
 91    --    RN50, CRN50, FRN50,grp50,
 92    --    RN75, CRN75, FRN75,grp75,
 93    --    RN95, CRN95, FRN95,grp95
 94    -- from  er
 95    --
 96    insert into TB_DM_BoxPlot([ExamID]
 97      ,[groupid]
 98      ,[GroupName]
 99      ,[avg]
100      ,[lower_whisker]
101      ,[low_box]
102      ,[med]
103      ,[upper_box]
104      ,[upper_whisker])
105    select @ExamID as ExamID ,er.classid, tc.classname,avg(score) [avg],
106        sum(case grp5
107            when 1 then (case PRN when RN5 then score end)
108            else (case PRN
109                 when FRN5 then (CRN5 - RN5) * score
110                 when CRN5 then (RN5 - FRN5) * score end)
111            endas percentile_score5,
112        sum(case grp25
113            when 1 then (case PRN when RN25 then score end)
114            else (case PRN
115                 when FRN25 then (CRN25 - RN25) * score
116                 when CRN25 then (RN25 - FRN25) * score end)
117            endas percentile_score25,
118        sum(case grp50
119            when 1 then (case PRN when RN50 then score end)
120            else (case PRN
121                 when FRN50 then (CRN50 - RN50) * score
122                 when CRN50 then (RN50 - FRN50) * score end)
123            endas percentile_score50,
124        sum(case grp75
125            when 1 then (case PRN when RN75 then score end)
126            else (case PRN
127                 when FRN75 then (CRN75 - RN75) * score
128                 when CRN75 then (RN75 - FRN75) * score end)
129            endas percentile_score75,
130        sum(case grp95
131            when 1 then (case PRN when RN95 then score end)
132            else (case PRN
133                 when FRN95 then (CRN95 - RN95) * score
134                 when CRN95 then (RN95 - FRN95) * score end)
135            endas percentile_score95
136    from er left join tb_class tc on er.classid = tc.classid
137    group by er.classid,tc.classname;
138
139END
140
141
142
143
144
145

四.实现源码(C#)
   实现数据绑定的源码非常简单,在对应DundasChart控制上,直接将数据源绑定即可
五.结果图像
      盒须图的显示结果如下所示:



 

附: 

统计学名词

population 母体
sample 样本
census 普查
sampling 抽样
quantitative 量的
qualitative/categorical 质的
discrete 离散的
continuous 连续的
population parameters 母体参数
sample statistics 样本统计量
descriptive statistics 叙述统计学
inferential/inductive statistics 推论/归纳统计学
levels of measurement 衡量尺度
nominal scale 名目尺度
ordinal scale 顺序尺度
interval scale 区间尺度
ratio scale 比例尺度
frequency distribution 次数分配
relative frequency 相对次数
range 全距
class midpoint 组中点
class limits 组限
class boundaries 组界
class width 组距
cumulative frequency (以下) 累加次数
decumulative frequency 以上累加次数
histogram 直方图
pie chart 饼图
ogive 肩形图
frequency polygon 多边形图
cumulative frequency polygon 累加次数多边形图
box plot 盒须图
stem and leaf plot 枝叶图
measures of central tendency 中央趋势量数
mean 平均数
median 中位数
mode 众数
location measures 位置量数
percentile 百分位数
quartile 四分位数
decile 十分位数
dispersion measures 分散量数
range 全距
interquartile-range IQR 四分位距
mean absolute deviation 平均绝对离差
variance 变异数
standard deviation 标准差
coefficient of variation 变异系数
left-skewed 左偏
negative-skewed 负偏
right-skewed 右偏
positive-skewed 正偏
contingency table 列联表
sampling distribution (of a statistic)(某个统计量的) 抽样分布
point estimate 点估计值
point estimator 点估计式
unbiased estimator 不偏点估计式
efficient estimator 有效点估计式
consistent estimator 一致点估计式
confidence level 信赖水准
confidence interval 信赖区间
null hypothesis 虚无假设
alternative hypothesis 对立假设
left-tailed test 左尾检定
right-tailed test 右尾检定
two-tailed test 双尾检定
test statistic 检定统计量
critical value 临界值

转载于:https://www.cnblogs.com/linfuguo/archive/2007/09/04/878345.html

这篇关于用Dundas制作盒须图BoxPlot(盒式图,箱形图)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/167262

相关文章

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack镜像制作系列5—Linux镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

OpenStack镜像制作系列4—Windows Server2019镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录  CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系

OpenStack镜像制作系列2—Windows7镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系列

OpenStack镜像制作系列1—环境准备

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

CSDN:OpenStack镜像制作教程指导(全)

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录,涉及基本环境准备、常见类型操作系统的镜像制作。 让你可以从零开始安装一个操作系统,并支持个性化制作OpenStack镜像。 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows

docker学习系列(四)制作基础的base项目镜像--jdk+tomcat

前面已经完成了docker的安装以及使用,现在我们要将自己的javaweb项目与docker结合 1.1准备jdk+tomcat软件 ​​我下载了apache-tomcat-7.0.68.tar.gz和jdk-7u79-linux-x64.tar.gz,存储于Linux机器的本地目录/usr/ect/wt/下(利用xshell上传)。利用linux命令 tar -zxvf apache-tom

选项卡制作问题--折磨了我一整天,记录下来

看老曹的html+css课程,学习html+css基础,讲到制作选项卡,以京东商城的选项卡为例,效果如下: 看着他做出来很简单,结果自己做花了2个多小时才有个样子,效果是这样的: 内部代码如下 <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-