暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

箱线图--四分位数

流浪骆驼 2020-12-22
4758


定义:

四分位数(Quartile)应用于统计学中的箱线图绘制,是统计学中分位数的一种,即把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。


四分位数说明
第一个四分位数 (Q1)25% 的数据小于等于此值。
第二个四分位数 (Q2)中位数。50% 的数据小于等于此值。
第三个四分位数 (Q3)75% 的数据小于等于此值。
四分位间距第一个四分位数与第三个四分位数之间的距离(Q3-Q1);因此,它跨越数据中间部分(即 50%)。
异常值

最小估计值:Q1 -  k(Q3-Q1)

最大估计值:Q3 + k(Q3-Q1)

K=1.5(中度异常)、K=3(极度异常)

当数值大于>最大估计值   或   数值小于<最小估计值,都记为异常


下图为目前计算四分位数的主要方法:






#!/usr/bin/perl -w


use Data::Dumper;


my @data = (1,1,2,5,9);


my %out = quartile(\@data,"Freund and Perles");
my %out1 = quartile(\@data,"Freund and Perles");
my %out2 = quartile(\@data,"Minitab");
my %out3 = quartile(\@data,"Tukey");
my %out4 = quartile(\@data,"Moore and McCabe");
my %out5 = quartile(\@data,"Mendenhall and Sincich");


print Dumper \%out;
print Dumper \%out1;
print Dumper \%out2;
print Dumper \%out3;
print Dumper \%out4;
print Dumper \%out5;


sub quartile{
# 计算四分位数
# 输入为排序后的数组
# 输入统计方法,默认为Freund and Perles
#
# 参考 :
#
# Freund and Perles
# Minitab
# Tukey
# Moore and McCabe
# Mendenhall and Sincich


my $in = shift;
my $type = shift;
my %info = ();
my $list_length = scalar (@$in);
my ($Q1,$Q2,$Q3);


if ($type){
if ($type eq 'Freund and Perles'){
$Q1 = ($list_length+3)/4;
$Q2 = 2*($list_length+1)/4;
$Q3 = (3*$list_length+1)/4;
}elsif ($type eq 'Minitab'){
$Q1 = ($list_length+1)/4;
$Q2 = 2*($list_length+1)/4;
$Q3 = 3*($list_length+1)/4;
}elsif ($type eq 'Tukey'){
if ($list_length % 2 == 0){
$Q1 = ($list_length+2)/4;
$Q2 = 2*($list_length+1)/4;
$Q3 = (3*$list_length+2)/4;
}else{
$Q1 = ($list_length+3)/4;
$Q2 = 2*($list_length+1)/4;
$Q3 = (3*$list_length+1)/4;
}
}elsif ($type eq 'Moore and McCabe'){
if ($list_length % 2 == 0){
$Q1 = ($list_length+2)/4;
$Q2 = 2*($list_length+1)/4;
$Q3 = (3*$list_length+2)/4;
}else{
$Q1 = ($list_length+1)/4;
$Q2 = 2*($list_length+1)/4;
$Q3 = (3*$list_length+3)/4;
}
}elsif ($type eq 'Mendenhall and Sincich'){
$Q1 = int(($list_length+1)/4);
$Q2 = 2*($list_length+1)/4;
$Q3 = int((3*$list_length+3)/4);
}
}else{
$Q1 = ($list_length+3)/4;
$Q2 = 2*($list_length+1)/4;
$Q3 = (3*$list_length+1)/4;
}


$info{'Q1'} = $$in[int($Q1)-1] + ($$in[int($Q1)] - $$in[int($Q1)-1]) * ($Q1 -int($Q1));
$info{'Q2'} = $$in[int($Q2)-1] + ($$in[int($Q2)] - $$in[int($Q2)-1]) * ($Q2 -int($Q2));
$info{'Q3'} = $$in[int($Q3)-1] + ($$in[int($Q3)] - $$in[int($Q3)-1]) * ($Q3 -int($Q3));
return %info;
}



参考:

https://mathworld.wolfram.com/Quartile.html    
文章转载自流浪骆驼,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论