数据分析知识体系及实践(七)和数据分析知识体系及实践(八)介绍了数据的分类、统计学是什么、以及统计学知识的大分类,数据分析知识体系及实践(九)介绍了描述性统计的Python实现,本篇我们重点介绍推断性统计学的Python代码实现几种数据分布。
t分布、F分布和卡方分布是统计学中常用的三种概率分布,它们分别用于样本均值的推断、方差的比较和数据的拟合优度检验。我们在介绍三大分布之前,先看一下正态分布和标准正态分布。
正态分布(Normal Distribution)
正态分布也被称为高斯分布,是统计学中最常见的概率分布之一,具有钟形曲线的特征,均值和标准差是其两个重要的参数。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
mean = 3 # 均值
std = 4 # 标准差
size = 1000 # 生成1000个随机数
data = np.random.normal(mean, std, size=size)
sns.histplot(data, kde=True)
plt.show()
标准正态分布(Standard Normal Distribution)
标准正态分布是一种特殊的正态分布,其均值为0,标准差为1。在统计学中,标准正态分布经常用于标准化数据或进行假设检验。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
size = 1000 # 生成1000个随机数
data = np.random.standard_normal(size=size)
sns.histplot(data, kde=True)
plt.show()
t分布(t Distribution)
t分布是一种概率分布,用于小样本情况下对总体均值的推断。当样本容量较小或总体方差未知时,使用T分布进行推断更准确。T分布的形状类似于正态分布,但尾部较宽。T分布的自由度(degreesof freedom)决定了其形状。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = 10 # 自由度
size = 1000 # 生成1000个随机数
data = np.random.standard_t(df, size=size)
sns.histplot(data, kde=True)
plt.show()
F分布(F Distribution)
F分布是一种概率分布,用于比较两个样本方差的差异。F分布常用于方差分析和回归分析中。F分布的形状取决于两个自由度参数,分子自由度和分母自由度。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
dfn = 5 # 分子自由度
dfd = 10 # 分母自由度
size = 1000 # 生成1000个随机数
data = np.random.f(dfn, dfd, size=size)
sns.histplot(data, kde=True)
plt.show()
卡方分布(Chi-Square Distribution)
卡方分布是一种概率分布,用于检验观察值与理论值之间的拟合优度。卡方分布常用于拟合优度检验、独立性检验和方差分析中。卡方分布的自由度参数决定了其形状。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = 5 # 自由度
size = 1000 # 生成1000个随机数
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
# 正态分布 Normal Distribution
mean = 3 # 均值
std = 4 # 标准差
size = 1000 # 生成1000个随机数
data = np.random.normal(mean, std, size=size)
sns.histplot(data, kde=True)
# plt.show()
# 标准正态分布 Standard Normal Distribution
size = 1000 # 生成1000个随机数
data = np.random.standard_normal(size=size)
sns.histplot(data, kde=True)
# plt.show()
# t分布 t Distribution
df = 10 # 自由度
size = 1000 # 生成1000个随机数
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个随机数
data = np.random.f(dfn, dfd, size=size)
sns.histplot(data, kde=True)
# plt.show()
# 卡方分布 Chi-square Distribution
df = 5 # 自由度
size = 1000 # 生成1000个随机数
data = np.random.chisquare(df, size)
sns.histplot(data, kde=True)
plt.show()