數(shù)據(jù)分析知識(shí)體系及實(shí)踐(七)和數(shù)據(jù)分析知識(shí)體系及實(shí)踐(八)介紹了數(shù)據(jù)的分類、統(tǒng)計(jì)學(xué)是什么、以及統(tǒng)計(jì)學(xué)知識(shí)的大分類,數(shù)據(jù)分析知識(shí)體系及實(shí)踐(九)介紹了描述性統(tǒng)計(jì)的Python實(shí)現(xiàn),本篇我們重點(diǎn)介紹推斷性統(tǒng)計(jì)學(xué)的Python代碼實(shí)現(xiàn)幾種數(shù)據(jù)分布。
t分布、F分布和卡方分布是統(tǒng)計(jì)學(xué)中常用的三種概率分布,它們分別用于樣本均值的推斷、方差的比較和數(shù)據(jù)的擬合優(yōu)度檢驗(yàn)。我們?cè)诮榻B三大分布之前,先看一下正態(tài)分布和標(biāo)準(zhǔn)正態(tài)分布。
正態(tài)分布(Normal Distribution)
正態(tài)分布也被稱為高斯分布,是統(tǒng)計(jì)學(xué)中最常見的概率分布之一,具有鐘形曲線的特征,均值和標(biāo)準(zhǔn)差是其兩個(gè)重要的參數(shù)。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
mean = 3 # 均值
std = 4 # 標(biāo)準(zhǔn)差
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.normal(mean, std, size=size)
sns.histplot(data, kde=True)
plt.show()
標(biāo)準(zhǔn)正態(tài)分布(Standard Normal Distribution)
標(biāo)準(zhǔn)正態(tài)分布是一種特殊的正態(tài)分布,其均值為0,標(biāo)準(zhǔn)差為1。在統(tǒng)計(jì)學(xué)中,標(biāo)準(zhǔn)正態(tài)分布經(jīng)常用于標(biāo)準(zhǔn)化數(shù)據(jù)或進(jìn)行假設(shè)檢驗(yàn)。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.standard_normal(size=size)
sns.histplot(data, kde=True)
plt.show()
t分布(t Distribution)
t分布是一種概率分布,用于小樣本情況下對(duì)總體均值的推斷。當(dāng)樣本容量較小或總體方差未知時(shí),使用T分布進(jìn)行推斷更準(zhǔn)確。T分布的形狀類似于正態(tài)分布,但尾部較寬。T分布的自由度(degreesof freedom)決定了其形狀。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = 10 # 自由度
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.standard_t(df, size=size)
sns.histplot(data, kde=True)
plt.show()
F分布(F Distribution)
F分布是一種概率分布,用于比較兩個(gè)樣本方差的差異。F分布常用于方差分析和回歸分析中。F分布的形狀取決于兩個(gè)自由度參數(shù),分子自由度和分母自由度。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
dfn = 5 # 分子自由度
dfd = 10 # 分母自由度
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.f(dfn, dfd, size=size)
sns.histplot(data, kde=True)
plt.show()
卡方分布(Chi-Square Distribution)
卡方分布是一種概率分布,用于檢驗(yàn)觀察值與理論值之間的擬合優(yōu)度??ǚ椒植汲S糜跀M合優(yōu)度檢驗(yàn)、獨(dú)立性檢驗(yàn)和方差分析中。卡方分布的自由度參數(shù)決定了其形狀。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = 5 # 自由度
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.chisquare(df, size)
sns.histplot(data, kde=True)
plt.show()
本章Python完整代碼示例如下
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 正態(tài)分布 Normal Distribution
mean = 3 # 均值
std = 4 # 標(biāo)準(zhǔn)差
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.normal(mean, std, size=size)
sns.histplot(data, kde=True)
# plt.show()
# 標(biāo)準(zhǔn)正態(tài)分布 Standard Normal Distribution
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.standard_normal(size=size)
sns.histplot(data, kde=True)
# plt.show()
# t分布 t Distribution
df = 10 # 自由度
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.standard_t(df, size=size)
sns.histplot(data, kde=True)
# plt.show()
# F分布 F Distribution
dfn = 5 # 分子自由度
dfd = 10 # 分母自由度
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.f(dfn, dfd, size=size)
sns.histplot(data, kde=True)
# plt.show()
# 卡方分布 Chi-square Distribution
df = 5 # 自由度
size = 1000 # 生成1000個(gè)隨機(jī)數(shù)
data = np.random.chisquare(df, size)
sns.histplot(data, kde=True)
plt.show()