numpy.random.Statistics统计实战指南一份实用 numpy.random 统计指南覆盖随机生成器、概率分布、模拟、抽样、收敛、相关性和 Bootstrap。使用 Generator 对象和可复现随机流避免隐藏的全局状态。把分布参数与假设、期望、方差和观测数据联系起来。使用清晰单位和诊断设计 Monte Carlo 与重采样实验。负责任地解释随机性、不确定性、收敛性、依赖性和可复现性。示例均为独立代码片段可复制到 Python 3 环境中运行。1. 随机生成器、种子与统计含义NumPy 的现代随机 API 以 Generator 对象为核心。Generator 把位生成器和分布方法结合起来使随机状态明确可见。种子初始化一个可复现的随机流但使用相同种子并不意味着不同实验在统计上彼此独立。对象或方法用途推荐用法default_rng(seed)创建现代 Generator每个实验使用局部生成器rng.random[0, 1) 上的均匀值概率和单位正方形采样rng.integers离散均匀整数索引、类别和随机选择rng.choice抽样或重采样Bootstrap 和分类抽样rng.permutation随机重排不放回打乱rng.shuffle原地打乱数组只在明确需要修改时使用import numpy as nprng np.random.default_rng(2026)a rng.normal(loc10.0, scale2.0, size5)b rng.integers(0, 10, size5)print(a)print(b)# 重新创建生成器会重现随机流same_rng np.random.default_rng(2026)assert np.allclose(a, same_rng.normal(10.0, 2.0, size5))可复现不只是种子记录种子、NumPy 版本、生成器类型、分布参数、样本量和随机调用顺序。可复用库或测试中不要依赖隐式全局随机状态。并行模拟需要独立随机流时应使用独立或派生的生成器。结果可复现并不代表实验无偏或模型正确重复性不是有效性的同义词。2. 分布、参数、矩与抽样随机分布编码关于可能取值及出现频率的假设。NumPy 可以从多种常见连续和离散分布中抽样。参数应通过期望、方差、支持范围和实际生成机制解释而不能只因为直方图看起来方便就选择某个分布。图 1正态、均匀和指数分布表达不同形状与假设。rng np.random.default_rng(2026)normal rng.normal(loc50.0, scale8.0, size10_000)uniform rng.uniform(low0.0, high1.0, size10_000)exponential rng.exponential(scale3.0, size10_000)poisson rng.poisson(lam4.0, size10_000)for name, values in [(normal, normal), (uniform, uniform), (exponential, exponential), (poisson, poisson)]:print(name, values.mean(), values.var())分布参数常见解释normalloc、scale对称测量噪声或聚合效应uniformlow、high有界区间内等可能exponentialscale恒定风险假设下的等待时间binomialn、pn 次试验中的成功次数poissonlam曝光区间中的计数lognormal对数值的 mean、sigma正值乘法量矩与样本估计理论矩描述分布样本矩会围绕理论值波动。描述样本时通常使用 ddof1 的样本方差并明确区分模拟汇总中的总体式统计与推断中的样本估计。3. 大数定律与中心极限定理直觉在适当条件下大数定律说明独立观测的平均值会随着样本增加趋近于期望值。中心极限定理解释了为什么即使原始分布不是正态标准化的和或样本均值也常常趋近于正态形状。图 2随着独立样本累积运行估计通常趋于稳定。图 3越来越大的指数分布样本均值更集中也更接近钟形。rng np.random.default_rng(2026)values rng.exponential(scale2.0, size50_000)running_mean np.cumsum(values) / np.arange(1, values.size 1)for n in [10, 100, 1_000, 10_000, 50_000]:print(n, running_mean[n - 1])print(theoretical mean:, 2.0)思想n 增加时的变化不会改变的内容大数定律样本平均更稳定分布的期望中心极限定理均值的标准化形状趋近正态有限样本的偏态可能保留标准误通常按 1/sqrt(n) 下降依赖性可能改变速度Monte Carlo 误差估计方差随样本增加降低错误模拟模型带来的偏差依赖性很重要上述收敛直觉通常假设观测独立或只有合适的弱依赖。自相关、聚类、自适应抽样或反复使用同一随机值都可能让名义样本量高估实际信息量。4. Monte Carlo 积分、概率与随机游走Monte Carlo 方法通过随机抽样估计目标量。对于均匀采样的区域可以用落入区域的点比例估计面积对于期望可以用模拟值的平均估计。Monte Carlo 很灵活但通常收敛较慢因此应在模拟前声明精度要求。图 4通过单位圆内点的比例估计 π。图 5相同规则的随机游走也可能产生差异很大的路径。rng np.random.default_rng(2026)# 用模拟平均估计 E[g(X)]x rng.normal(loc0.0, scale1.0, size1_000_000)estimate np.mean(np.exp(-0.5 * x**2))standard_error np.std(np.exp(-0.5 * x**2), ddof1) / np.sqrt(x.size)print(estimate, standard_error)# 随机游走路径steps rng.choice([-1, 1], size(100, 500))paths np.cumsum(steps, axis1)Monte Carlo 组成问题实践目标量估计什么期望、概率或积分先用数学形式写出提议/采样器点如何生成检查支持范围和权重估计量如何从样本计算结果说明偏差和方差行为误差估计模拟有多不确定使用重复运行或标准误逻辑停止规则何时达到足够精度设置容差或样本预算Monte Carlo 注意事项再多的抽样也不能纠正错误目标、有偏采样器、错误单位转换或被忽略的依赖性。应绘制运行估计并在可能时与已知解析值比较。5. 多元抽样、协方差与依赖性随机变量可以联合模拟。协方差描述线性共同变化相关系数则用边际尺度标准化协方差。多元正态模型的协方差矩阵必须是对称半正定的实际工作中数值舍入可能需要轻微修正。图 6多元正态生成器可以产生相关观测。rng np.random.default_rng(2026)mean np.array([10.0, 20.0])covariance np.array([[4.0, 2.4], [2.4, 9.0]])sample rng.multivariate_normal(mean, covariance, size5000)sample_covariance np.cov(sample, rowvarFalse, ddof1)sample_correlation np.corrcoef(sample, rowvarFalse)print(sample.mean(axis0))print(sample_covariance)print(sample_correlation)量公式思想含义协方差E[(X−μX)(Y−μY)]原始单位下的共同变化相关系数cov(X,Y)/(σXσY)无量纲线性依赖协方差矩阵成对协方差组成的矩阵联合离散程度和方向边际分布单个分量的分布忽略其他变量后的行为联合分布所有分量的共同分布依赖性和边际分布相关不等于因果共同驱动因素可能产生相关但不代表直接关系。非线性依赖可能无法被协方差和相关系数发现。模拟的依赖性反映协方差模型并不能验证模型本身。把样本协方差与目标协方差比较并检查散点图。6. Bootstrap、置换与抽样设计Bootstrap 通过有放回地重复抽取观测近似统计量的抽样分布。置换方法在零假设的可交换性条件下重新分配标签或数值。两者都很有用但重采样单位必须与研究设计一致。图 7Bootstrap 中位数形成用于不确定性分析的经验分布。rng np.random.default_rng(2026)sample np.array([11.2, 12.4, 9.8, 13.1, 10.7, 12.0, 11.6])statistics np.array([np.median(rng.choice(sample, sizesample.size, replaceTrue))for _ in range(10_000)])interval np.quantile(statistics, [0.025, 0.975])print(observed:, np.median(sample))print(percentile interval:, interval)方法重采样规则适合对齐Bootstrap有放回地抽取观测估计量的抽样不确定性Permutation在零假设下重新分配标签基于随机化的零分布Jackknife每次去掉一个观测影响度和近似方差分层抽样在组内抽样保持子组代表性区块抽样抽取连续或成组单位处理依赖和时间结构Bootstrap 的限制普通 Bootstrap 可能不适用于相关时间序列、聚类观测、边界参数或极小样本。数据生成过程需要时应使用区块、聚类、分层或基于模型的设计。7. 统计验证与可复现模拟检查表随机模拟应被视为计算实验。运行前定义目标、假设、生成器、样本量、估计量、诊断和不确定性。应在干净环境中重现结果并测试简单的极限情况。检查项问题行动生成器随机状态是否明确且可复现创建并记录 Generator分布支持范围和参数是否符合模型检查边界、矩和图形独立性抽样或重采样单位是否独立合理使用随机流或区块样本量Monte Carlo 或抽样误差是否可接受估计标准误并重复运行估计量样本如何映射到结果写出公式和单位验证是否有已知值或不变量进行比较和往返检查报告他人能否重新生成保存种子、版本、参数和代码# 可复现模拟摘要rng np.random.default_rng(2026)sample rng.normal(loc5.0, scale2.0, size100_000)summary {seed: 2026,distribution: normal,loc: 5.0,scale: 2.0,n: sample.size,sample_mean: float(sample.mean()),sample_std_ddof1: float(sample.std(ddof1)),standard_error: float(sample.std(ddof1) / np.sqrt(sample.size)),}print(summary)numpy.random 统计最终检查表使用 default_rng并记录种子、生成器、参数和调用顺序。根据建模量的机制和支持范围选择分布。区分理论矩、有限样本估计和 Monte Carlo 误差。使重采样和抽样设计匹配独立性、聚类和时间结构。使用已知结果、收敛图、不确定性估计和独立重复进行验证。
阅读完成 · 觉得有帮助?