本节简单讨论概率论数字特征及Python实现,概率论数字特征包括:
- 期望
- 方差(标准差/均方差)
- 协方差
- 相关系数
- 协方差矩阵
期望
期望反应的是随机变量X的平均值,是试验中每次可能结果的概率乘以其结果的总和,定义如下,
离散型随机变量:
连续型随机变量:
有以下性质:
方差
方差用来衡量随机变量或一组数据的离散程度,定义如下,
也就是每一个样本和期望的差的平方后取其平均值,方差越小,说明数据越集中,越大说明数据越分散。(例如:学生成绩是否偏科。)
标准差也叫均方差,定义为方差的算术平方根,
标准差和均值的量纲(单位)是一致的,在描述一个波动范围时标准差比方差更方便。比如一个班男生的平均身高是170cm,标准差是10cm,那么方差就是10cm^2。可以进行的比较简便的描述是本班男生身高分布是170±10cm,方差就无法做到这点。
协方差
前面讨论的期望,方差等都是从一个维度(属性)来进行的,但现实生活中事物往往有多个属性,很多时候我们会去分析多个属性间的关系。协方差可用于描述两个属性间的相互关系,定义如下,
计算公式:
相关系数
相关系数描述的是两组数据间的线性相关性,定义:
相关系数是对协方差进行了归一化处理,使其区间处于[-1,1][-1,1]范围内。
- 相关系数小于0,表示两组数据线性负相关,即一个增加另一个变小。
- 相关系数为0,表示两组数据没有线性相关性。
- 相关系数大于0,表示两组数据线性正相关,即一个增加另一个也增加。
协方差矩阵
协方差矩阵计算的是不同维度之间的协方差,注意:不是样本之间的关联关系。可以用于比较样本的不同属性的内在关系,例如,可用来表示多维随机变量的概率密度,从而可通过协方差矩阵达到对多维随机变量的研究。定义,
其中,
Python实例
下面通过一段代码来计算不同的数字特征。首先定义了几个函数用于计算期望,方差,标准差,协方差和相关系数,然后和 numpy 库计算的结果相比较,可以看出能得到一样的结果,
import numpy as np
def f_e(x):
return np.sum(x) / len(x)
def f_d2(x):
e = f_e(x)
d = 0
for i in x:
d += ((i - e) ** 2)
return d / len(x)
def f_d(x):
return np.sqrt(f_d2(x))
def f_cov(x, y):
e_xy = f_e(np.multiply(np.array(x), np.array(y)).tolist())
return e_xy - f_e(x) * f_e(y)
def f_cor(x, y):
return f_cov(x, y) / (f_d(x) * f_d(y))
x = [1, 2.3, 3.6, 4, 5, 6.3]
y = [1.4, 2.6, 3.9, 4, 6, 6.9]
print("E(x): %f, from numpy: %f" % (f_e(x), np.mean(x)))
print("D(x): %f, from numpy: %f" % (f_d2(x), np.var(x)))
print("d(x): %f, from numpy: %f" % (f_d(x), np.std(x)))
print("-" * 30)
print("Cor(x, y): %f" % f_cor(x, y))
print('Correlation coefficients:')
print(np.corrcoef(x, y))
print("-" * 30)
X = np.vstack((x, y))
print(np.cov(X, bias=True)) # Note: bias is True, which means normalization is by "N"
print("Cov(x, x): %f" % f_cov(x, x))
print("Cov(x, y): %f" % f_cov(x, y))
print("Cov(y, x): %f" % f_cov(y, x))
print("Cov(y, y): %f" % f_cov(y, y))
运行结果:
D:\work\python_workspace\machine_learning\venv\Scripts\python.exe D:/work/python_workspace/machine_learning/regression/propability.py
E(x): 3.700000, from numpy: 3.700000
D(x): 2.966667, from numpy: 2.966667
d(x): 1.722401, from numpy: 1.722401
------------------------------
Cor(x, y): 0.988669
Correlation coefficients:
[[1. 0.988669]
[0.988669 1. ]]
------------------------------
[[2.96666667 3.18833333]
[3.18833333 3.50555556]]
Cov(x, x): 2.966667
Cov(x, y): 3.188333
Cov(y, x): 3.188333
Cov(y, y): 3.505556
Process finished with exit code 0