阅读小助手
- 框架思维导图
- 一、基本概念
- 二、概率基础
- 1、古典概型
- 2、条件概率
- 3、全概率公式
- 4、贝叶斯公式——Baye's Formula
- 三、随机变量及其分布特征
- 0、随机变量分类
- 1、期望Expected Value(μ/E(X))
- 2、方差Variance(总体σ^2/样本s^2 )
- 3、协方差Covariance(COV)
- 4、相关系数correlation(ρ)
框架思维导图
一、基本概念
① 样本空间
:随机试验的所有可能结果组成的集合,Omega
② 随机事件
:样本空间Ω中满足一定条件的子集,用大写字母A,B,C... 表示
(随机事件在随机试验中可能出现也可能不出现)
③ 随机变量
(Random Variable):取值不确定的量
eg:掷骰子,掷出的点数记为X,可能取1,2…6;
X的取值不确定,X就是随机变量
④ 结果
(Outcome):随机变量的观测值(具体的数)
eg:掷出的点数是1,1就是一次结果,1,2,3,4,5,6都是结果,
且掷骰子只有这六种结果
⑤ 事件
(Event):随机变量 结果 结合的整体为事件
eg:掷出点数为1(X=1),就是事件
⑥ 互斥事件
(Mutually exclusive events):两个事件不可同时发生
⑦ 完备事件
(Exhaustive events):包含所有结果的事件.
⑧ 概率
:随机事件出现的可能性(likelihood)大小
二、概率基础
1、古典概型
概念: ① 样本空间中只有有限个样本点
② 每个样本点出现是等可能的
③ 每次试验有且仅有一个样本点发生
Python实现:
代码语言:javascript复制#采用函数的递归的方法定义阶乘函数:
def factorial(n):
if n == 0:
return 1;
else:
return (n*factorial(n-1))
#也可以直接导包
from math import factorial
l_fac = factorial(365); #l的阶乘
l_k_fac = factorial(365-40) #l-k的阶乘
l_k_exp = 365**40 #l的k次方
P_B = l_fac /(l_k_fac * l_k_exp) #P(B)
print("事件B的概率为:",P_B)
print("40个同学中至少两个人同一天过生日的概率是:",1 - P_B)
2、条件概率
定义:
乘法法则(Multiplication rule):
3、全概率公式
推导过程:
4、贝叶斯公式——Baye's Formula
树状图计算——Baye's Formula 简单运用
假设:
三、随机变量及其分布特征
0、随机变量分类
连续型随机变量和离散性随机变量
1、期望Expected Value(μ/E(X))
数学期望E(X) 又称为均值(加权平均,概率为权重
),
代表了随机变量取值的平均值
2、方差Variance(总体σ^2/样本s^2 )
3、协方差Covariance(COV)
4、相关系数correlation(ρ)
相关系数=协方差除以标准差的积
python实现
代码语言:javascript复制#导入包
import pandas as pd
import numpy as np
#构造单个随机变量
random_X=pd.DataFrame({"P(X)":[0.2,0.3,0.1,0.2,0.1,0.1]},index=list(range(1,7))).T
random_X
#定义期望、方差计算函数
#期望
def cpt_EX(X,P_X):
return sum([x*p for x,p in list(zip(X,P_X))])
#方差
def cpt_Var(X,P_X):
#list转化为array 进行广播运算,list直接广播这里没问题,下面计算协方差好像有问题
return cpt_EX((np.array(X)-cpt_EX(X,P_X))**2,P_X)
X=random_X.columns
P_X=random_X.loc['P(X)'].tolist()
print("随机变量 X 的期望是:%s"%cpt_EX(X,P_X))
print("随机变量 X 的方差是:%s"%cpt_Var(X,P_X))
#构造联合概率分分步表
joint_prob=pd.DataFrame([[0.15,0,0],[0,0.60,0],[0,0,0.25],],
index=["X1=0.20","X2=0.15","X3=0.04"],
columns=["Y1=0.40","Y2=0.20","Y3=0.00"])
joint_prob
#取对角线
P_xy=np.diagonal(joint_prob, offset=0, axis1=0, axis2=1).tolist()
X=[float(value[3:]) for value in joint_prob.index]
Y=[float(value[3:]) for value in joint_prob.columns]
#定义协方差、相关系数计算函数
#协方差
def cpt_Cov(X,Y,P_xy):
return sum([p*x_Ex*y_Ey for p,x_Ex,y_Ey in list(zip(P_xy,(np.array(X)-cpt_EX(X,P_xy)),(np.array(Y)-cpt_EX(X,P_xy))))])
#相关系数
def cpt_corr(X,Y,P_xy):
return cpt_Cov(X,Y,P_xy)/(cpt_Var(X,P_xy)*cpt_Var(Y,P_xy))**(1/2) if (cpt_Var(X,P_xy) !=0)&(cpt_Var(Y,P_xy)!=0) else 0
print(" 随机变量 X 的期望是:%s n"%cpt_EX(X,P_xy),
"随机变量 Y 的期望是:%s n"%cpt_EX(Y,P_xy),
"随机变量 X,Y 的协方差是:%s n"% cpt_Cov(X,Y,P_xy),
"随机变量 X,Y 的相关系数是:%.3f n"%cpt_corr(X,Y,P_xy))
#验证自己与自己的协方差等于方差
X=random_X.columns
P_X=random_X.loc['P(X)'].tolist()
print(" 随机变量 X 的方差是:%s n"%cpt_Var(X,P_X),
" 随机变量 X 的协方差是:%s n"%cpt_Cov(X,X,P_X),)
代码运行样例
参看资料: Datawhale开源-概率统计 numpy 取出对角线元素、计算对角线元素和 np.diagonal