一组排序的数据值的四分位数是三个点,这些点将数据精确地划分为四个相等的部分,每个部分包括四分之一数据。
- Q1定义为数据集的最小数和中位数之间的中间数。
- Q2是数据的中位数。
- Q3是数据集的中位数和最大值之间的中间值。
The interquartile range IQR tells us the range
where the bulk of the values lie. The interquartile
range is calculated by subtracting the first quartile
from the third quartile.
IQR = Q3 - Q1
用途
1.与范围不同,IQR会告知大多数数据在哪里,因此比范围更可取。
2. IQR可用于识别数据集中的异常值。
3.给出数据的集中趋势。
例子:
Input : 1, 19, 7, 6, 5, 9, 12, 27, 18, 2, 15
Output : 13
The data set after being sorted is
1, 2, 5, 6, 7, 9, 12, 15, 18, 19, 27
As mentioned above Q2 is the median of the data.
Hence Q2 = 9
Q1 is the median of lower half, taking Q2 as pivot.
So Q1 = 5
Q3 is the median of upper half talking Q2 as pivot.
So Q3 = 18
Therefore IQR for given data=Q3-Q1=18-5=13
Input : 1, 3, 4, 5, 5, 6, 7, 11
Output : 3
C++
// CPP program to find IQR of a data set
#include
using namespace std;
// Function to give index of the median
int median(int* a, int l, int r)
{
int n = r - l + 1;
n = (n + 1) / 2 - 1;
return n + l;
}
// Function to calculate IQR
int IQR(int* a, int n)
{
sort(a, a + n);
// Index of median of entire data
int mid_index = median(a, 0, n);
// Median of first half
int Q1 = a[median(a, 0, mid_index)];
// Median of second half
int Q3 = a[mid_index + median(a, mid_index + 1, n)];
// IQR calculation
return (Q3 - Q1);
}
// Driver Function
int main()
{
int a[] = { 1, 19, 7, 6, 5, 9, 12, 27, 18, 2, 15 };
int n = sizeof(a)/sizeof(a[0]);
cout << IQR(a, n);
return 0;
}
Java
// Java program to find
// IQR of a data set
import java.io.*;
import java .util.*;
class GFG
{
// Function to give
// index of the median
static int median(int a[],
int l, int r)
{
int n = r - l + 1;
n = (n + 1) / 2 - 1;
return n + l;
}
// Function to
// calculate IQR
static int IQR(int [] a, int n)
{
Arrays.sort(a);
// Index of median
// of entire data
int mid_index = median(a, 0, n);
// Median of first half
int Q1 = a[median(a, 0,
mid_index)];
// Median of second half
int Q3 = a[mid_index + median(a,
mid_index + 1, n)];
// IQR calculation
return (Q3 - Q1);
}
// Driver Code
public static void main (String[] args)
{
int []a = {1, 19, 7, 6, 5, 9,
12, 27, 18, 2, 15};
int n = a.length;
System.out.println(IQR(a, n));
}
}
// This code is contributed
// by anuj_67.
Python3
# Python3 program to find IQR of
# a data set
# Function to give index of the median
def median(a, l, r):
n = r - l + 1
n = (n + 1) // 2 - 1
return n + l
# Function to calculate IQR
def IQR(a, n):
a.sort()
# Index of median of entire data
mid_index = median(a, 0, n)
# Median of first half
Q1 = a[median(a, 0, mid_index)]
# Median of second half
Q3 = a[mid_index + median(a, mid_index + 1, n)]
# IQR calculation
return (Q3 - Q1)
# Driver Function
if __name__=='__main__':
a = [1, 19, 7, 6, 5, 9, 12, 27, 18, 2, 15]
n = len(a)
print(IQR(a, n))
# This code is contributed by
# Sanjit_Prasad
C#
// C# program to find
// IQR of a data set
using System;
class GFG
{
// Function to give
// index of the median
static int median(int []a,
int l, int r)
{
int n = r - l + 1;
n = (n + 1) / 2 - 1;
return n + l;
}
// Function to
// calculate IQR
static int IQR(int [] a, int n)
{
Array.Sort(a);
// Index of median
// of entire data
int mid_index = median(a, 0, n);
// Median of first half
int Q1 = a[median(a, 0,
mid_index)];
// Median of second half
int Q3 = a[mid_index + median(a,
mid_index + 1, n)];
// IQR calculation
return (Q3 - Q1);
}
// Driver Code
public static void Main ()
{
int []a = {1, 19, 7, 6, 5, 9,
12, 27, 18, 2, 15};
int n = a.Length;
Console.WriteLine(IQR(a, n));
}
}
// This code is contributed
// by anuj_67.
PHP
输出:
13
参考
https://zh.wikipedia.org/wiki/Interquartile_range