定义:

| 四分位数 | 说明 |
|---|---|
| 第一个四分位数 (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 -wuse 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 Sincichmy $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;}
参考:
文章转载自流浪骆驼,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




