极差 中程数

概念

极差(range)是数据中的数字分开得有多远,计算方法是数据中的最大数减去数据中的最小数。极差的数字越大最大数和最小数之间的差就越大,数越小,数据越紧凑。极差也称全距

中程数(midrange)是另一种考虑集中趋势的方式,计算方法是数据中最大数和最小数的平均数。这是考虑中间值的一种方式,其他还有算术平均值(也就是所有数的平均数),众数,中位数。

Demo

65,81,73,85,94,79,67,83,82

range:

$$
R=max(x)-min(x)=94-65=29
$$

midrange:

$$
\frac{max(x)+min(x)}{2}=\frac{94+65}{2}=79.5
$$

Scala Code

scala> val arr = Array(65, 81, 73, 85, 94, 79, 67, 83, 82)
arr: Array[Int] = Array(65, 81, 73, 85, 94, 79, 67, 83, 82)
scala>
scala> def range(arr: Array[Int]): Int = {
| val (min, max) = arr.foldLeft((arr(1), arr(2)))((t, a) => {
| val min = if (t._1 <= a) t._1 else a
| val max = if (t._2 >= a) t._2 else a
| (min, max)
| })
| max - min
| }
range: (arr: Array[Int])Int
scala>
scala> def midRange(arr: Array[Int]): Double = {
| val (min, max) = arr.foldLeft((arr(1), arr(2)))((t, a) => {
| val min = if (t._1 <= a) t._1 else a
| val max = if (t._2 >= a) t._2 else a
| (min, max)
| })
| (max + min) / 2.0
| }
midRange: (arr: Array[Int])Double
scala>
scala> range(arr)
res0: Int = 29
scala> midRange(arr)
res1: Double = 79.5