統計學 | 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)]

參考

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