使用Python实现概率分布,需要引入软件包Scipy。
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats # 统计计算包的统计模块
一、离散概率分布
伯努利概率分布
p = 0.5
x = np.arange(0,2,1)
pList = stats.bernoulli.pmf(x.p)
# 可视化
plt.plot(x,pList_ber,marker='o',linestyle='None')
plt.vlines(x,0,pList_ber)
plt.title('bernoulli分布 p=0.5')
plt.xlabel('随机变量:抛一次硬币的结果面')
plt.ylabel('概率')
plt.show()
二项分布
n = 5
p = 0.5
x = np.arange(1,n+1,1)
pList_bin = stats.binom.pmf(x,n,p)
plt.plot(x,pList_bin,marker='o',linestyle='None')
plt.vlines(x,0,pList_bin)
plt.title('随机变量:抛硬币正面朝上的次数')
plt.ylabel('概率')
plt.title('二项分布:,n = %1,p = %.2f' %(n,p))
plt.show()
几何分布
k = 5
p = 0.6
x = np.arange(1,k+1,1)
pList_geom = stats.geom.pmf(x,p)
plt.plot(x,pList_geom,marker = 'o',linestyle = 'None')
plt.vlines(x,0,pList_geom)
plt.xlabel('随机变量:表白k次才成功对概率')
plt.ylabel('概率')
plt.title('几何分布:p=%.2f' %p)
plt.show
泊松分布
mu = 2 # 平均值
k = 4 #次数
x = np.arange(0,k+1,1)
pList = stats.poisson.pmf(x,mu)
plt.plot(x,pList, marker='o',linestyle='None')
plt.vlines(x,0,pList)
plt.xlabel('随机变量:某路口发生k次事故')
plt.ylabel('probability')
plt.title('poission distribution:average value mu=%i' %mu)
plt.show()
二、连续概率分布
正态分布(Normal distribution)
幂律分布(Power-law distribution)
三、中心极限定理
定义:
1)样本平均值约等于总体平均值
2)不管总体是什么分布,任意一个总体对样本平均值都回围绕在总体都平均值周围,并且呈正态分布。
用途:
1)用样本来均值估计总体均值,任何一个样本的平均值约等于其所在总体的平均值。
2)用样本标准差来估计总体标准差。
标准差:单个样本的标准差;
标准误差:样本平均值的标准差。
四、如何避免偏见
1、样本偏差:样本不足(以偏概全)
如何避免:扩大样本规模和增强样本的随机性,避免特殊样本出现
2、幸存者偏差:常关注显而易见的样本,忽略了没机会出现的样本
如何避免:学会多角度观察分析问题
3、概率偏见:心里概率与客观概率不吻合
如何避免:加强对概率问题的理解,避免用直觉无脑判断
4、信息茧房:个性化推荐致使我们看到的只是我们喜欢的事情
如何避免:减少使用个性化推荐。