Statistics 给定数据的盒形图绘制算法

Statistics 给定数据的盒形图绘制算法,statistics,drawing,plot,boxplot,Statistics,Drawing,Plot,Boxplot,我已经对实值数组进行了排序,比如说X,这些实值是从一些未知分布中提取的。我想为这些数据画一个方框图 在最简单的情况下,我需要知道五个值:min、Q1、median、Q3和max 简单地说,min=X[0],max=X[length(X)-1],并且可能median=X[ceil(length(X)/2)]。但是我想知道如何确定下四分位Q1和Q3 当我使用MATLAB绘制X=[1,2,4]时,我得到以下结果: 在我看来,似乎有一些魔力如何获得值Q1=1.25和Q3=3.5,但我不知道魔力是什么。

我已经对实值数组进行了排序,比如说
X
,这些实值是从一些未知分布中提取的。我想为这些数据画一个方框图

在最简单的情况下,我需要知道五个值:
min
Q1
median
Q3
max

简单地说,
min=X[0]
max=X[length(X)-1]
,并且可能
median=X[ceil(length(X)/2)]
。但是我想知道如何确定下四分位
Q1
Q3

当我使用MATLAB绘制
X=[1,2,4]
时,我得到以下结果:


在我看来,似乎有一些魔力如何获得值
Q1=1.25
Q3=3.5
,但我不知道魔力是什么。有人对此有经验吗?

中位数将数据分为两半。上半部分的中值=Q1,下半部分的中值=Q3

更多信息:


MatLab箱线图上的注释:Q1和Q3可能在MatLab中以不同的方式计算,我会尝试使用大量的测试数据。用我的方法,Q1应该是1,Q3应该是4


编辑:

MatLab可能进行的计算是上半部分的中值和第一个数字之间的差值,取其中的四分之一。将其添加到第一个数字以获得Q1。
同样(大致)适用于Q3:取中位数和最高数字之间的差值,从最高数字中减去四分之一。这是第3个问题。

如果您转到方框图的原始定义(查找John Tukey),则使用中值作为中点(即,在1、2、4的数据集中为2)。端点是最小值和最大值

盒子的顶部和底部不是由四分位数精确定义的,而是被称为“铰链”。铰链是数据的上半部分和下半部分的中间部分。如果观察次数为奇数,则使用整个集合的中值来确定两个铰链。下铰链是(1,2)或1.5的中间值。顶部铰链是(2,4)或3的中间值

对于方框图的四分位数,实际上有几十种定义(维基百科:“在选择四分位数值方面没有普遍的一致意见”)。如果你想使MatLab的方框图合理化,你必须检查它的文档。否则,你可以用谷歌搜索你的大脑,试图找到一种与结果相匹配的方法


Minitab为数据集中的铰链提供1和4。Excel的百分位数函数给出了1.5和3,这与Tukey的算法偶然匹配,至少在这种情况下是这样。

是的,这正是我所期望的(我确实有一些统计方面的基本背景)。但在我的应用程序中,我需要方框图来合理地处理这些少量的数据。随着新结果的不断出现,绘图将进行动态更新。因此,我需要的情节“好看”的早期阶段。这就是为什么我想模仿MATLAB中的方框图。请阅读我的编辑。不是基于任何证据,而是你得到的数字的可能解释。我建议尝试使用更多的三元组数字,看看MatLab为您提供了什么。我做了更多的实验,MatLab算法看起来真的很神奇。对于X=[1,3,4,5],它显示Q1=2,中值=3.5,Q2=4.5。我不明白。它似乎是通过一些预定义的分布或类似的方式来拟合数据。也许我被判以你之前建议的简单但有效的方式实现它……在你的例子[1,3,4,5]中,MatLab的解决方案非常简单。中位数是两个中间数字的平均值,3+4/2=3.5,我们得到两个部分。[1,3]和[4,5]。这两组数字的平均值分别为2和3.5。我会尝试使用一些像[1,2,7]这样的集合,看看你的结果是什么。谢谢@Hidde,似乎对于长度(X)=3,MATLAB将X[1]作为中值,
0.75*X[0]+0.25*X[1]
作为Q1和
0.25*X[1]+0.75*X[2]
。对于长度(X)=4,
median=X[1]+X[2]
Q1=X[0]+X[1]
Q2=X[2]+X[3]
。不幸的是,对于长度(X)=5,情况再次变得复杂。X=[1,2,3,4,7]给出了
中位数=3
,Q1=1.75和Q2=4.75。但是,根据@JonPeltier的说明,确定Q1和Q3有多种可能的解决方案。也许对于长度(X)>=5,我将使用一些简单的方法,例如下铰链的中值为Q1,上铰链的中值为Q3,如@JonPeltier所述。谢谢@JonPeltier的深刻回答!我看到MATLAB有它确定上下铰链的具体解决方案。我将尝试模仿MATLAB的解决方案,因为它对于少量数据来说看起来不错,但我知道这不是唯一可能的解决方案。不管怎么说,你帮了我很多,让我明白了算法一般应该如何工作——再次感谢!