📌 目录
scipy.stats
模块简介- 描述性统计量计算
- 常见概率分布及随机数生成
- 概率密度函数与累积分布函数
- 参数估计与分布拟合
- 假设检验:t检验、卡方检验等
- 相关性分析
- 示例:正态性检验与分布拟合
- 出站链接与参考资料
1. scipy.stats
模块简介
scipy.stats
提供数百种统计分布、检验函数、统计量计算方法,广泛应用于科学实验、社会科学、商业分析与机器学习数据预处理等领域。
2. 描述性统计量计算
import numpy as np
from scipy import stats
data = [2, 4, 4, 4, 5, 5, 7, 9]
print("均值:", np.mean(data))
print("中位数:", np.median(data))
print("众数:", stats.mode(data, keepdims=True).mode[0])
print("标准差:", np.std(data))
print("偏度(Skewness):", stats.skew(data))
print("峰度(Kurtosis):", stats.kurtosis(data))
3. 常见概率分布及随机数生成
正态分布
from scipy.stats import norm
# 生成随机样本
samples = norm.rvs(loc=0, scale=1, size=1000)
二项分布
from scipy.stats import binom
# 进行1000次试验,每次10次独立投掷,成功概率0.5
samples = binom.rvs(n=10, p=0.5, size=1000)
4. 概率密度函数与累积分布函数
正态分布的 PDF 与 CDF
x = np.linspace(-5, 5, 100)
pdf = norm.pdf(x, loc=0, scale=1)
cdf = norm.cdf(x, loc=0, scale=1)
import matplotlib.pyplot as plt
plt.plot(x, pdf, label='PDF')
plt.plot(x, cdf, label='CDF')
plt.legend()
plt.title("正态分布密度与分布函数")
plt.grid()
plt.show()
5. 参数估计与分布拟合
# 假设有一组数据
data = norm.rvs(loc=5, scale=2, size=1000)
# 拟合到正态分布
mu, std = norm.fit(data)
print("估计均值:", mu)
print("估计标准差:", std)
6. 假设检验:t检验、卡方检验等
单样本 t 检验
t_stat, p_val = stats.ttest_1samp(data, popmean=5)
print("T统计量:", t_stat)
print("P值:", p_val)
双样本独立 t 检验
group1 = norm.rvs(loc=5, scale=1, size=30)
group2 = norm.rvs(loc=6, scale=1, size=30)
t_stat, p_val = stats.ttest_ind(group1, group2)
卡方检验(列联表)
table = [[10, 20], [20, 40]]
chi2, p, dof, expected = stats.chi2_contingency(table)
7. 相关性分析
皮尔逊相关系数
x = np.random.normal(0, 1, 100)
y = x + np.random.normal(0, 0.5, 100)
r, p = stats.pearsonr(x, y)
斯皮尔曼等级相关
r, p = stats.spearmanr(x, y)
8. 示例:正态性检验与分布拟合可视化
import seaborn as sns
# 正态性检验
stat, p = stats.shapiro(data)
print("P值:", p)
# 拟合后绘图
sns.histplot(data, kde=True, stat="density")
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
pdf = norm.pdf(x, mu, std)
plt.plot(x, pdf, 'r-', label='拟合正态分布')
plt.legend()
plt.show()
🔗 出站链接与参考资料
📘 官方文档
scipy.stats
官方手册:
https://docs.scipy.org/doc/scipy/reference/stats.html
🎓 推荐资源
- Python Statistics Cheat Sheet:
https://github.com/walkerjeffd/stats-cheatsheet - 正态性检验参考:
https://machinelearningmastery.com/a-gentle-introduction-to-normality-tests-in-python/ - 统计检验可视化:
https://seaborn.pydata.org/examples/index.html
发表回复