均值 中位数 众数

相同点

平均数(mean)中位数(median)众数(mode) 这三个统计量的相同之处主要表现在:都是来描述数据集中趋势的统计量;都可用来反映数据的一般水平;都可用来作为一组数据的代表。

不同点

它们之间的区别,主要表现在以下方面。

  1. 定义不同

    • 平均数:一组数据的总和除以这组数据个数所得到的商叫这组数据的平均数。
    • 中位数:将一组数据按大小顺序排列,处在最中间位置的一个数叫做这组数据的中位数 。
    • 众数:在一组数据中出现次数最多的数叫做这组数据的众数。
  2. 求法不同

    • 平均数:用所有数据相加的总和除以数据的个数,需要计算才得求出。
    • 中位数:将数据按照从小到大或从大到小的顺序排列,如果数据个数是奇数,则处于最中间位置的数就是这组数据的中位数;如果数据的个数是偶数,则中间两个数据的平均数是这组数据的中位数。它的求出不需或只需简单的计算。
    • 众数:一组数据中出现次数最多的那个数,不必计算就可求出。
  3. 个数不同

在一组数据中,平均数和中位数都具有惟一性,但众数有时不具有惟一性。在一组数据中,可能不止一个众数,也可能没有众数。

  1. 呈现不同

    • 平均数:是一个“虚拟”的数,是通过计算得到的,它不是数据中的原始数据。
    • 中位数:是一个不完全“虚拟”的数。当一组数据有奇数个时,它就是该组数据排序后最中间的那个数据,是这组数据中真实存在的一个数据;但在数据个数为偶数的情况下,中位数是最中间两个数据的平均数,它不一定与这组数据中的某个数据相等,此时的中位数就是一个虚拟的数。
    • 众数:是一组数据中的原数据 ,它是真实存在的。
  2. 代表不同

    • 平均数:反映了一组数据的平均大小,常用来一代表数据的总体 “平均水平”。
    • 中位数:像一条分界线,将数据分成前半部分和后半部分,因此用来代表一组数据的“中等水平”。
    • 众数:反映了出现次数最多的数据,用来代表一组数据的“多数水平”。

这三个统计量虽反映有所不同,但都可表示数据的集中趋势,都可作为数据一般水平的代表。

  1. 特点不同

    • 平均数:与每一个数据都有关,其中任何数据的变动都会相应引起平均数的变动。主要缺点是易受极端值的影响,这里的极端值是指偏大或偏小数,当出现偏大数时,平均数将会被抬高,当出现偏小数时,平均数会降低。
    • 中位数:与数据的排列位置有关,某些数据的变动对它没有影响;它是一组数据中间位置上的代表值,不受数据极端值的影响。
    • 众数:与数据出现的次数有关,着眼于对各数据出现的频率的考察,其大小只与这组数据中的部分数据有关,不受极端值的影响,其缺点是具有不惟一性,一组数据中可能会有一个众数,也可能会有多个或没有 。
  2. 作用不同

    • 平均数:是统计中最常用的数据代表值,比较可靠和稳定,因为它与每一个数据都有关,反映出来的信息最充分。平均数既可以描述一组数据本身的整体平均情况,也可以用来作为不同组数据比较的一个标准。因此,它在生活中应用最广泛,比如我们经常所说的平均成绩、平均身高、平均体重等。
    • 中位数:作为一组数据的代表,可靠性比较差,因为它只利用了部分数据。但当一组数据的个别数据偏大或偏小时,用中位数来描述该组数据的集中趋势就比较合适。
    • 众数:作为一组数据的代表,可靠性也比较差,因为它也只利用了部分数据。在一组数据中,如果个别数据有很大的变动,且某个数据出现的次数最多,此时用该数据(即众数)表示这组数据的“集中趋势”就比较适合。

联系与区别

平均数应用比较广泛,它作为一组数据的代表,比较稳定、可靠。但平均数与一组数据中的所有数据都有关系,容易受极端数据的影响;简单的说就是表示这组数据的平均数。中位数在一组数据中的数值排序中处于中间的位置,人们由中位数可以对事物的大体进行判断和掌控,它虽然不受极端数据的影响,但可靠性比较差;所以中位数只是表示这组数据的一般情况。众数着眼对一组数据出现的频数的考察,它作为一组数据的代表,它不受极端数据的影响,其大小与一组数据中的部分数据有关,当一组数据中,如果个别数据有很大的变化,且某个数据出现的次数较多,此时用众数表示这组数据的集中趋势,比较合适,体现了整个数据的集中情况。

各自的优缺点

平均数:

  • 需要全组所有数据来计算;
  • 易受数据中极端数值的影响。

中位数:

  • 仅需把数据按顺序排列后即可确定;
  • 不易受数据中极端数值的影响。

众数:

  • 通过计数得到;
  • 不易受数据中极端数值的影响。

Demo

求以下一组数据的 mean,median,mode

23,29,20,32,23,21,33,25

mean:
$$
\overline{x} = \frac{x_1+x_2+…+x_n}{1} = \frac{23+29+…25}{8} = 25.75
$$

media:
$$
\stackrel{sort}\longrightarrow 20,21,23,23,25,29,32,33 \stackrel{偶数个}\longrightarrow \frac{23+25}{2} = 24
$$

mode:
$$
23 * 2 \longrightarrow 23
$$

Scala Code

scala> val arr = Array(23, 29, 20, 32, 23, 21, 33, 25)
arr: Array[Int] = Array(23, 29, 20, 32, 23, 21, 33, 25)
scala> def mean(arr: Array[Int]): Double = {
| if (arr.isEmpty) 0
| else arr.sum / arr.length.toDouble
| }
mean: (arr: Array[Int])Double
scala> def media(arr: Array[Int]): Double = {
| val sorted = arr.sorted
| arr.length match {
| case len if len == 0 => 0
| case len if len % 2 == 0 => (sorted(len / 2 - 1) + sorted(len / 2)) / 2.0
| case len => sorted(len / 2)
| }
| }
media: (arr: Array[Int])Double
scala> def mode(arr: Array[Int]): Int = {
| val map = arr.foldLeft(Map.empty[Int, Int]) {(m, a) => m + (a -> (m.getOrElse(a, 0) + 1))}
| map.maxBy(_._2)._1
| }
mode: (arr: Array[Int])Int
scala> mean(arr)
res0: Double = 25.75
scala> media(arr)
res1: Double = 24.0
scala> mode(arr)
res2: Int = 23