统计学 | 3.概率与概率分布

在这里插入图片描述

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import norm
from scipy.stats import binom
from scipy.stats import poisson
from collections import  Counter

import warnings
warnings.filterwarnings('ignore')

%matplotlib inline

二项分布(Binomial Distribution)

实验抛10个硬币,正面向上的硬币数。该实验重复10000次

# 生成数据
data_binom = binom.rvs(n=10, p=0.5, size=10000)
print('平均值:', np.mean(data_binom))
print('方差:', np.var(data_binom))
print('标准差:', np.std(data_binom))
print('最大值:', np.max(data_binom))
print('最小值:', np.min(data_binom))
平均值: 5.0004
方差: 2.4891998399999995
标准差: 1.577719823035763
最大值: 10
最小值: 0
plt.figure(figsize=(10, 6))
# 开启kde核密度估计函数
ax = sns.distplot(data_binom, bins=10, kde=False,
                      hist_kws={'color': 'g', 'alpha': 0.6}                 
                 )
ax.set(xlabel='Num', ylabel='Frequency')
# 添加文本
for item in Counter(data_binom).items():
   plt.text(item[0]+0.5, item[1], item[1], horizontalalignment='center', verticalalignment='top', color='r', alpha=0.5, fontsize=12)
plt.title('Binomial Distribution', fontsize=18)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fAu0mhh5-1590322582267)(output_4_0.png)]

泊松分布(Poisson distribution)

# 生成数据
data_poisson = poisson.rvs(mu=3, size=10000)
print('平均值:', np.mean(data_poisson))
print('方差:', np.var(data_poisson))
print('标准差:', np.std(data_poisson))
print('最大值:', np.max(data_poisson))
print('最小值:', np.min(data_poisson))

平均值: 2.9661
方差: 3.0265507899999995
标准差: 1.7396984767481978
最大值: 11
最小值: 0
plt.figure(figsize=(10, 6))
ax = sns.distplot(data_poisson, bins=30, kde=False,
                      hist_kws={'color': 'g', 'alpha': 0.6, "linewidth": 15}                 
                 )
ax.set(xlabel='Num', ylabel='Frequency')
# 添加文本
for item in Counter(data_poisson).items():
   plt.text(item[0], item[1], item[1], horizontalalignment='center', verticalalignment='top', color='r', fontsize=10)
plt.title('Poisson distribution', fontsize=18)
plt.show()

在这里插入图片描述

正态分布(Normal Distribution)

正态分布

# 生成数据
data_normal = norm.rvs(size=10000, loc=6, scale=2)
print('平均值:', np.mean(data_normal))
print('方差:', np.var(data_normal))
print('标准差:', np.std(data_normal))
print('最大值:', np.max(data_normal))
print('最小值:', np.min(data_normal))
平均值: 6.030529055028889
方差: 4.091474172902061
标准差: 2.022739274573483
最大值: 13.869977821935834
最小值: -3.099450580027831
plt.figure(figsize=(10, 6))
# 开启kde核密度估计函数
ax = sns.distplot(data_normal, bins=1000,
                      hist_kws={'color': 'g', 'alpha': 0.6},
                      kde_kws={'color': 'r', 'alpha': 0.6, "label": "KDE"},                  
                 )
ax.set(xlabel='Normal Distribution', ylabel='Frequency')
plt.title('Normal Distribution', fontsize=18)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RPbbWaCL-1590322582300)(output_11_0.png)]

标准正态分布

# 生成数据
data_normal = norm.rvs(size=10000, loc=0, scale=1)
print('平均值:', np.mean(data_normal))
print('方差:', np.var(data_normal))
print('标准差:', np.std(data_normal))
print('最大值:', np.max(data_normal))
print('最小值:', np.min(data_normal))
平均值: -0.012006724606062854
方差: 1.012976877234747
标准差: 1.0064675241828456
最大值: 4.297347813611908
最小值: -3.895880605727567
plt.figure(figsize=(10, 6))
# 开启kde核密度估计函数
ax = sns.distplot(data_normal, bins=1000,
                      hist_kws={'color': 'g', 'alpha': 0.6},
                      kde_kws={'color': 'r', 'alpha': 0.6, "label": "KDE"},                  
                 )
ax.set(xlabel='Normal Distribution', ylabel='Frequency')
plt.title('Normal Distribution', fontsize=18)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rC3RaiXs-1590322582305)(output_14_0.png)]

参考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章