数据可视化:常见统计量(3)(附python代码)

数据可视化一直是一个有用却又常常被忽视的数据分析方法,本系列借助 gnuplot 或 Python 包以工程师视角介绍常见的图例展示方法。数据可视化:常见统计量(2)(附 python 代码)

文章来自微信公众号“科文路”,欢迎关注、互动。转载须注明出处。

上一节,我们从“统计量”(statistic)起步。这一节先回顾一下一些常见的统计量。

1. 术语表

中文 英文 常用符号 $\LaTeX$
均值 mean $\mu$, $\bar{x}$ \mu, \bar{x}
中位数 median $\text{med}$ \text{med}
众数 mode $\text{mode}$ \text{mode}
期望值 expectation $\operatorname {E}$ \operatorname {E}
方差 variance $\sigma^2$ \sigma^2
标准差 standard deviation $\sigma$ \sigma
最大值 maximum $\max$ \max
最小值 minimum $\min$ \min

2. 常见统计量

有两个数据序列,$S_1$ 有 7 个数,$S_2$ 有 8 个数。

  • $S_1$, 1, 2, 2, 3, 4, 7, 9
  • $S_2$, 1, 2, 2, 3, 4, 7, 7, 9

2.1. 均值

均值代表一组数字的中心,目的是确定一组数据的均衡点。

需要注意的是,它有很多种版本,常用的有,

  • 算术平均数Arithmetic Mean
    • ${\bar {x}}={\frac {1}{n}}\left(\sum {i=1}^{n}{x{i}}\right)={\frac {x_{1}+x_{2}+\cdots +x_{n}}{n}}$
    • ${\bar {S_1} = (1+2+\cdots+9)/7 = 4}$
  • 几何平均数Geometric Mean
    • 以乘积(如增长率的情况)而非和(如算术平均数的情况)来解释数据
    • ${\bar {x}}=\left(\prod {i=1}^{n}{x{i}}\right)^{\frac {1}{n}}=\left(x_{1}x_{2}\cdots x_{n}\right)^{\frac {1}{n}}$
    • ${\bar {S_1} = (1\times 2\cdots\times 7)^{\frac {1}{7}}={\sqrt[{7}]{3;024}}=3.142}$
  • 调和平均数Harmonic Mean
    • 适用于与某个单位有关的一组数字,例如速度(即每单位时间的距离)
    • ${\bar {x}}=n\left(\sum {i=1}^{n}{\frac {1}{x{i}}}\right)^{-1}$
    • $\bar {S_1} = 7\times\frac{1}{\frac{1}{1}+\frac{1}{2}+\frac{1}{2}+\frac{1}{3}+\frac{1}{4}+\frac{1}{7}+\frac{1}{9}} = 2.467$
    • 如果有 7 个水泵,它们可以分别在1, 2, 2, 3, 4, 7, 9 分钟内排空一定大小的水箱,那么调和平均值 2.467 表示 7 个水泵一起工作所需的排水时间

三者关系

$$\mathrm {AM} \geq \mathrm {GM} \geq \mathrm {HM}$$

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
import statistics

s_1 = [1, 2, 2, 3, 4, 7, 9]
s_2 = [1, 2, 2, 3, 4, 7, 7, 9]


print(f"AM = {statistics.mean(s_1)}")
print(f"GM = {statistics.geometric_mean(s_1)}")
print(f"HM = {statistics.harmonic_mean(s_1)}")

# AM = 4
# GM = 3.1421431700472597
# HM = 2.467132867132867

2.2. 中位数

一组数字的中位数是将数据样本、总体或概率分布的上半部分与下半部分分开的值。

  • 奇数个 -> 正中间
    • $\text{med}(S_1) = 3$
  • 偶数个 -> 中间两值求平均
    • $\text{med}(S_2) = 3.5$

这个值非常重要,常和均值组合分析,比如,根据《中国企业招聘薪酬报告》,“2024年第一季度,成都地区平均薪酬 9786 元/月,薪酬中位数在 8000 元/月”,表明有一半的人收入在 8000 以下。

Python

1
2
3
4
5
print(f"med_s_1 = {statistics.median(s_1)}")
print(f"med_s_2 = {statistics.median(s_2)}")

# med_s_1 = 3
# med_s_2 = 3.5

2.3. 众数

一组数据值中出现最频繁的值,可以是多个

比如,$\text{mode}(S_2) \rightarrow {2, 7}$

Python

1
2
3
4
5
print(f"mode_s_1 = {statistics.multimode(s_1)}")
print(f"mode_s_2 = {statistics.multimode(s_2)}")

# mode_s_1 = [2]
# mode_s_2 = [2, 7]

2.4. 期望

一个离散性随机变量的期望是试验中每次可能的结果乘以其结果概率的总和,是一种加权平均值的泛化概念

离散形式的定义为,

$$ \operatorname {E} (X)=\sum {i}p{i}x_{i}$$

总的来说,期望的含义比较广阔,粗略的理解为“某变量‘应该’是某个值”。

例如,掷一枚六面骰子,所得“点数”的期望是 $3.5$,但该值不现实。

$${\begin{aligned}\operatorname {E} (X)&=1\cdot {\frac {1}{6}}+2\cdot {\frac {1}{6}}+3\cdot {\frac {1}{6}}+4\cdot {\frac {1}{6}}+5\cdot {\frac {1}{6}}+6\cdot {\frac {1}{6}}\[6pt]&={\frac {1+2+3+4+5+6}{6}}=3.5\end{aligned}}$$

2.5. 方差

方差是随机变量与均值的平方偏差的期望值,它是对一组数与其平均值之间的分布程度的度量。简单讲,方差越大,数值分布的越分散。

$$\sigma^2 (X) = \operatorname {E} \left[(X-\mu )^{2}\right] =
{\frac {1}{n}}\sum {i=1}^{n}(x{i}-\mu )^{2}$$

Python

1
2
3
4
5
print(f"var_s_1 = {statistics.variance(s_1)}")
print(f"var_s_2 = {statistics.variance(s_2)}")

# var_s_1 = 8.666666666666666
# var_s_2 = 8.553571428571429

2.6. 标准差

标准差是方差的平方根。相比于方差,标准差和均值的量纲(单位)是一致的,因而更常被使用。

Python

1
2
3
4
5
print(f"std_s_1 = {statistics.stdev(s_1)}")
print(f"std_s_2 = {statistics.stdev(s_2)}")

# std_s_1 = 2.943920288775949
# std_s_2 = 2.9246489410818914

2.7. 最大值、最小值

这个没啥好说的,含义很直观。

Python

1
2
3
4
5
6
7
8
9
print(f"max_s_1 = {max(s_1)}")
print(f"max_s_2 = {max(s_2)}")
print(f"min_s_1 = {min(s_1)}")
print(f"min_s_2 = {min(s_2)}")

# max_s_1 = 9
# max_s_2 = 9
# min_s_1 = 1
# min_s_2 = 1

~~

下一节继续讲一些有用的“进阶”统计量。

~~

参考

~~

都看到这儿了,不如关注每日推送的“科文路”、互动起来~

至少点个赞再走吧~

数据可视化:常见统计量(3)(附python代码)

https://xlindo.com/kewenlu/posts/567598cd/

Author

xlindo

Posted on

2024-05-09

Updated on

2024-05-09

Licensed under

Comments