数据可视化:常见统计量(4,略进阶)(附python代码)

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

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

前面的章节里,我们从“统计量”(statistic)起步

这一节先接着说一下其余的常见统计量以及两个常用的概率分布,至此就结束了基础知识背景的回顾。其实这方面的内容还有很多,但局限于时间、精力,如果后续“可视化”的章节里有涉及,我们再补充。

这篇写的好累,如果你觉得有用还是点个赞吧。

1. 术语表(更新)

中文 英文 常用符号 $\LaTeX$
均值 mean $\mu$, $\bar{x}$ \mu, \bar{x}
中位数 median $\text{med}$ \text{med}
众数 mode $\text{mode}$ \text{mode}
方差 variance $\sigma^2$ \sigma^2
标准差 standard deviation $\sigma$ \sigma
最大值 maximum $\max$ \max
最小值 minimum $\min$ \min
分位数 quantile $Q$
Moment $\mu_{n}$ \mu_{n}
偏度 skewness
峰度 kurtosis $\operatorname {Kurt}[X]$
正态分布 normal distribution ${X\ \sim \mathcal {N}}(\mu ,\sigma ^{2})$
卡方分布 $\chi^2$-distribution $Q\ \sim \ \chi ^{2}(k)$

2. 常见统计量(续)

接着来。

2.7. 分位数,四分位数

分位数常被用来体现一组连续数据里的大小分布情况,通常我们使用四分位数(quartile)

那么第二四分位数($Q_2$)就是中位数。以此类推,第一四分位数($Q_1$)就是最小值到中位数的中位数,第三四分位数($Q_3$)就是中位数到最大值的中位数。

后面会介绍的箱型图(boxplot)其实就是可视化的四分位数。

Codes

打印一组数的 3 个四分位数

1
2
3
4
5
6
import statistics 

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

statistics.quantiles(s_2)
# [2.0, 3.5, 7.0]

2.8. 矩、峰度、偏度

在数学中,函数的矩是与函数图的形状有关的定量度量,其概念来自于物理学

。我印象中,国内的教学里对“矩”这个概念介绍的很少,但它其实很常用,可以套下来很多其他统计量。物理中也有类似定义,感兴趣的可以查一查。

如果函数是一个概率分布,那么一阶矩是期望值,二阶中心矩是方差,三阶标准化矩是偏度,四阶标准化矩是峰度

偏度

偏度是对实值随机变量的概率分布的不对称性的度量,定义为,

$$
\gamma {1}:={\tilde {\mu }}{3}=\operatorname {E} \left[\left({\frac {X-\mu }{\sigma }}\right)^{3}\right]={\frac {\mu _{3}}{\sigma ^{3}}}={\frac {\operatorname {E} \left[(X-\mu )^{3}\right]}{(\operatorname {E} \left[(X-\mu )^{2}\right])^{3/2}}}={\frac {\kappa _{3}}{\kappa _{2}^{3/2}}}
$$

该统计量能以数值的形式描述图象形状,正数叫正偏,负数叫负偏,为 0 时叫对称。通过下图可以更直观的感受下,

峰度

峰度,不是风度~顾名思义,可以通过该统计量数值化图形“尖不尖”。

峰度是实值随机变量概率分布的“尾数(tailedness,尾部特征)”的度量,定义为,

$$
\operatorname {Kurt} [X]=\operatorname {E} \left[\left({\frac {X-\mu }{\sigma }}\right)^{4}\right]={\frac {\operatorname {E} \left[(X-\mu )^{4}\right]}{\left(\operatorname {E} \left[(X-\mu )^{2}\right]\right)^{2}}}={\frac {\mu _{4}}{\sigma ^{4}}}
$$

如果峰度为正,称为高狭峰(Leptokurtic),更尖;如果峰度为负,称为低阔峰(Platykurtic),更扁;为 0 时成为常态峰(Mesokurtic)。scipy.stats.kurtosis 的例子很灵性,用了 Laplace 分布、正态分布、均匀分布 三种分布展示了不同的峰度,可以看到对应不同的峰度值上图形的不同,

Codes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats
from scipy.stats import kurtosis

x = np.linspace(-5, 5, 100)
ax = plt.subplot()
distnames = ['laplace', 'norm', 'uniform']
for distname in distnames:
if distname == 'uniform':
dist = getattr(stats, distname)(loc=-2, scale=4)
else:
dist = getattr(stats, distname)
data = dist.rvs(size=1000)
kur = kurtosis(data, fisher=True)
y = dist.pdf(x)
ax.plot(x, y, label="{}, {}".format(distname, round(kur, 3)))
ax.legend()

2.9. 正态分布

也叫高斯分布,是一种实值随机变量的连续概率分布,它被广泛应用在各行各业的数据建模中。也是我认为的我的知识背景里最牛的一个公式,似乎有一种“日月之行,若出其中;星汉灿烂,若出其里”的奥义。因为基本上我们会假设任何随机变量都服从某一种正态分布或几种正态分布的组合

它的概率密度函数长这样,

$$ f(x)={\frac {1}{\sigma {\sqrt {2\pi }}}}e^{-{\frac {1}{2}}\left({\frac {x-\mu }{\sigma }}\right)^{2}}$$

可以看到,里面其实只有标准差 $\sigma$ 和均值 $\mu$ 两个参数来控制图形的形状,而它的形状永远长这样,只是高矮胖瘦有所不同,读者可以根据后面的 Python 代码来改变参数看看变化。

Codes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np 
import matplotlib.pyplot as plt
from scipy.stats import norm
import statistics

# 产生横坐标
x_axis = np.arange(-20, 20, 0.01)

# 计算或随便给两个值看看区别
mean = statistics.mean(x_axis)
std = statistics.stdev(x_axis)

plt.plot(x_axis, norm.pdf(x_axis, mean, std))
plt.show()

2.10. 卡方分布

这个世界上不止正态分布这一种分布,所以这里介绍一个常见的“其他”分布——卡方分布,想更洋气一点,就读成“开 square”分布。

卡方分布主要用于假设检验,比如卡方检验一个常见的应用场景就是看两组数据是否在同一分布。这里就不展开讲了,它的概率密度函数长这样,

~~

下一节开始画图。

~~

~~

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

至少点个赞再走吧~

数据可视化:常见统计量(4,略进阶)(附python代码)

https://xlindo.com/kewenlu/posts/f18b738e/

Author

xlindo

Posted on

2024-05-23

Updated on

2024-05-23

Licensed under

Comments