SciPy 1.13 实战:5种概率分布(泊松/卡方/正态/t/F)Python代码实现与可视化

发布时间:2026/9/27 20:14:53

SciPy 1.13 实战:5种概率分布(泊松/卡方/正态/t/F)Python代码实现与可视化
SciPy 1.13 实战5种概率分布的Python代码实现与可视化指南统计学中的概率分布是数据分析的基石掌握它们的实际应用能让你在数据科学领域游刃有余。本文将带你用Python最新SciPy 1.13版本通过代码实战五种核心概率分布——泊松、卡方、正态、t和F分布。不同于枯燥的理论讲解我们直接从代码入手让你在Jupyter Notebook中边学边练真正理解这些分布的特性和应用场景。1. 环境准备与基础配置在开始之前确保你的Python环境已经安装了必要的库。推荐使用Anaconda创建虚拟环境避免包冲突conda create -n stats_env python3.10 conda activate stats_env pip install scipy1.13 numpy matplotlib seaborn ipykernel提示SciPy 1.13对统计函数进行了优化特别是提高了t分布和F分布计算的数值稳定性。基础导入语句应该放在笔记本开头import numpy as np import matplotlib.pyplot as plt from scipy import stats import seaborn as sns plt.style.use(seaborn-whitegrid) sns.set_palette(husl)2. 泊松分布事件计数的建模利器泊松分布是描述单位时间内随机事件发生次数的离散分布在流量预测、缺陷检测等领域应用广泛。让我们通过代码理解它的特性。核心参数λ (lambda)单位时间/空间内事件的平均发生次数生成泊松分布数据并绘制PMF(概率质量函数)lambda_ 5 # 平均发生率 x np.arange(0, 15) # 可能的事件次数 pmf stats.poisson.pmf(x, lambda_) plt.figure(figsize(10,6)) plt.bar(x, pmf, alpha0.7, edgecolork) plt.title(f泊松分布PMF (λ{lambda_})) plt.xlabel(事件发生次数) plt.ylabel(概率) plt.xticks(x) plt.show()实际应用示例——网站每小时访问量模拟# 生成1000小时的模拟访问量数据 hourly_visits stats.poisson.rvs(mulambda_, size1000) # 绘制分布直方图 plt.figure(figsize(10,6)) sns.histplot(hourly_visits, bins15, kdeFalse, statprobability) plt.title(模拟网站每小时访问量分布) plt.xlabel(访问次数) plt.ylabel(概率) plt.show()泊松分布的关键特性均值与方差相等E(X) Var(X) λ当λ增大时分布趋近正态分布适用于独立事件且事件发生率恒定3. 卡方分布方差分析的基石卡方分布是统计检验的重要工具特别适用于拟合优度检验和独立性检验。它的形状由自由度(df)决定。不同自由度的卡方分布对比dfs [1, 2, 3, 5, 10] # 不同自由度 x np.linspace(0, 20, 500) plt.figure(figsize(10,6)) for df in dfs: plt.plot(x, stats.chi2.pdf(x, df), labelfdf{df}, lw2) plt.title(不同自由度的卡方分布PDF) plt.xlabel(x) plt.ylabel(概率密度) plt.legend() plt.show()卡方检验实际应用——广告点击率的A/B测试# 观察数据两种广告的点击/未点击次数 observed np.array([[100, 120], [130, 150]]) # 执行卡方检验 chi2, p, dof, expected stats.chi2_contingency(observed) print(f卡方统计量: {chi2:.3f}) print(fP值: {p:.4f}) print(f自由度: {dof}) print(期望频数表:\n, expected)卡方分布特性总结特性描述非对称性右偏分布随着df增加逐渐对称取值范围0到正无穷均值等于自由度df方差等于2df4. 正态分布自然界的默认分布正态分布是统计学中最重要的连续分布中心极限定理确保了它在大量场景中的适用性。SciPy提供了完整的正态分布工具集。正态分布的可视化与特性探索mu, sigma 0, 1 # 标准正态分布 x np.linspace(-5, 5, 1000) plt.figure(figsize(12,6)) plt.plot(x, stats.norm.pdf(x, mu, sigma), r-, lw3, labelPDF) plt.plot(x, stats.norm.cdf(x, mu, sigma), b--, lw3, labelCDF) plt.fill_between(x, stats.norm.pdf(x, mu, sigma), where(x -1) (x 1), colorg, alpha0.3, label±1σ (68.27%)) plt.title(标准正态分布PDF与CDF) plt.xlabel(x) plt.ylabel(概率密度/累积概率) plt.legend() plt.grid(True) plt.show()正态分布的实际应用——产品质量控制# 假设某零件长度服从N(10mm, 0.2mm)分布 mean_length 10 std_length 0.2 # 计算合格率(9.6mm-10.4mm) lower, upper 9.6, 10.4 prob stats.norm.cdf(upper, mean_length, std_length) - \ stats.norm.cdf(lower, mean_length, std_length) print(f零件合格概率: {prob*100:.2f}%) # 生成1000个模拟样本 samples stats.norm.rvs(locmean_length, scalestd_length, size1000) # 绘制Q-Q图检验正态性 plt.figure(figsize(10,5)) stats.probplot(samples, distnorm, plotplt) plt.title(零件长度Q-Q图) plt.show()5. t分布小样本的救星当样本量小且总体方差未知时t分布比正态分布更合适。它在假设检验和置信区间估计中扮演关键角色。t分布与正态分布对比x np.linspace(-5, 5, 500) normal_pdf stats.norm.pdf(x) t_pdfs {1: stats.t.pdf(x, 1), 5: stats.t.pdf(x, 5), 30: stats.t.pdf(x, 30)} plt.figure(figsize(10,6)) plt.plot(x, normal_pdf, k-, lw2, label正态分布) for df, pdf in t_pdfs.items(): plt.plot(x, pdf, --, lw2, labelft分布(df{df})) plt.title(t分布与正态分布比较) plt.xlabel(x) plt.ylabel(概率密度) plt.legend() plt.show()t分布的实际应用——小样本均值置信区间# 假设我们有一组小样本数据 sample_data np.array([102, 98, 105, 97, 103, 100, 99, 101, 96, 104]) n len(sample_data) sample_mean np.mean(sample_data) sample_std np.std(sample_data, ddof1) # 样本标准差 # 计算95%置信区间 alpha 0.05 t_critical stats.t.ppf(1-alpha/2, dfn-1) margin_of_error t_critical * (sample_std/np.sqrt(n)) ci_lower sample_mean - margin_of_error ci_upper sample_mean margin_of_error print(f样本均值: {sample_mean:.2f}) print(f95%置信区间: [{ci_lower:.2f}, {ci_upper:.2f}])t分布关键点自由度越小尾部越厚当df30时与正态分布差异可忽略适用于样本量小(n30)、总体方差未知、总体近似正态6. F分布方差比较的标尺F分布主要用于比较两个样本的方差是ANOVA分析和回归分析的基础。它有两个自由度参数分子自由度(dfn)和分母自由度(dfd)。F分布形态探索dfn_values [5, 10, 20] # 分子自由度 dfd_values [10, 20, 30] # 分母自由度 x np.linspace(0.01, 5, 500) plt.figure(figsize(12,6)) for dfn in dfn_values: for dfd in dfd_values: plt.plot(x, stats.f.pdf(x, dfn, dfd), labelfF({dfn},{dfd}), lw2) plt.title(不同自由度组合的F分布) plt.xlabel(F值) plt.ylabel(概率密度) plt.legend(bbox_to_anchor(1.05, 1), locupper left) plt.tight_layout() plt.show()F分布在方差分析(ANOVA)中的应用# 三组实验数据 group1 stats.norm.rvs(loc50, scale10, size30) group2 stats.norm.rvs(loc55, scale10, size30) group3 stats.norm.rvs(loc60, scale10, size30) # 执行单因素ANOVA f_stat, p_value stats.f_oneway(group1, group2, group3) print(fF统计量: {f_stat:.3f}) print(fP值: {p_value:.5f}) if p_value 0.05: print(拒绝原假设组间存在显著差异) else: print(无法拒绝原假设组间无显著差异)F分布特性速查表特性说明定义域(0, ∞)偏态右偏随着dfn和dfd增大趋于对称均值dfd/(dfd-2) (dfd2)众数(dfn-2)/dfn × dfd/(dfd2)7. 高级可视化与综合应用掌握了各分布的基本用法后我们来创建一些高级可视化并展示如何在实际分析中综合运用这些分布。多分布对比可视化x np.linspace(-5, 5, 500) plt.figure(figsize(12,8)) # 正态分布 plt.plot(x, stats.norm.pdf(x), k-, lw3, label正态(0,1)) # t分布(df3) plt.plot(x, stats.t.pdf(x, 3), b--, lw2, labelt(df3)) # 卡方分布(df3) x_chi2 np.linspace(0, 10, 500) plt.plot(x_chi2, stats.chi2.pdf(x_chi2, 3), g-., lw2, label卡方(df3)) # F分布(dfn5, dfd10) x_f np.linspace(0, 5, 500) plt.plot(x_f, stats.f.pdf(x_f, 5, 10), r:, lw2, labelF(5,10)) plt.title(主要概率分布对比) plt.xlabel(x) plt.ylabel(概率密度) plt.legend() plt.grid(True) plt.show()综合案例——假设检验全流程# 案例新教学方法是否提高了学生成绩 # 原假设新方法无效(μ75) # 备择假设新方法有效(μ75) # 样本数据 sample_scores np.array([78, 82, 85, 79, 90, 77, 84, 81, 83, 80]) n len(sample_scores) sample_mean np.mean(sample_scores) sample_std np.std(sample_scores, ddof1) # 计算t统计量 mu0 75 # 原假设均值 t_stat (sample_mean - mu0) / (sample_std/np.sqrt(n)) # 计算p值(单侧检验) p_value 1 - stats.t.cdf(t_stat, dfn-1) print(ft统计量: {t_stat:.3f}) print(fP值: {p_value:.5f}) if p_value 0.05: print(结果显著拒绝原假设新教学方法有效) else: print(结果不显著无法拒绝原假设)在实际数据分析项目中这些分布很少单独使用。一个典型的数据科学工作流可能同时涉及多种分布用正态分布检验数据质量用t分布进行均值比较用F分布分析方差差异用卡方分布检验类别变量关联性用泊松分布建模计数数据

相关新闻

Redis Cluster 部署与运维:向量搜索场景下的分片、故障转移和容量规划

Redis Cluster 部署与运维:向量搜索场景下的分片、故障转移和容量规划

2026/9/27 20:14:53

Redis Cluster 部署与运维:向量搜索场景下的分片、故障转移和容量规划 一、深度引言与场景痛点 大家好,我是赵咕咕。 你的 RAG 系统接了第一个大客户,文档量从 10 万涨到 500 万。单机 Redis 扛不住了——一个 16GB 内存的实例&#xff0c…

纯前端构建多模型AI对比看板:从状态管理到并发请求实战

纯前端构建多模型AI对比看板:从状态管理到并发请求实战

2026/9/24 1:53:59

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这类项目最值得先看的不是功能列表,而是它到底解决了什么实际问题。一个多模型AI对比看板,核心价值在于能让你…

BiliTools哔哩哔哩工具箱:三分钟学会跨平台B站资源下载神器

BiliTools哔哩哔哩工具箱:三分钟学会跨平台B站资源下载神器

2026/8/23 0:48:46

BiliTools哔哩哔哩工具箱:三分钟学会跨平台B站资源下载神器 【免费下载链接】BiliTools 本项目已停止维护。 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 还在为B站视频下载烦恼吗?想要一键解析哔哩哔哩番剧、课程和音乐资源…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/26 19:14:12

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/27 1:30:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/27 1:30:37

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/27 1:30:35

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/27 1:30:34

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/26 16:36:51

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/26 14:29:04

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/26 13:57:22

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/26 23:35:16

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…