概率论数字特征及Python实现

5 篇文章 2 订阅

本节简单讨论概率论数字特征及Python实现,概率论数字特征包括:

  1. 期望
  2. 方差(标准差/均方差)
  3. 协方差
  4. 相关系数
  5. 协方差矩阵

期望

期望反应的是随机变量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

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值