首页/新闻资讯/正文详情

SciPy 连续统计分布完整指南:loc-scale 参数体系、矩、拟合与特殊函数

发布时间:2026/9/23 1:34:09 来源:云帆数科 栏目:资讯中心
SciPy 连续统计分布完整指南:loc-scale 参数体系、矩、拟合与特殊函数
SciPy 连续统计分布完整指南loc-scale 参数体系、矩、拟合与特殊函数【免费下载链接】scipySciPy library main repository项目地址: https://gitcode.com/gh_mirrors/sc/scipy导读scipy.stats为百余种连续随机变量提供了统一、完备的数值计算接口。本文以 doc/source/tutorial/stats/continuous.rst 为基础系统讲解 SciPy 连续分布的三大支柱位置-尺度location-scale参数化体系、矩/中位数/众数的数学定义与计算、基于最大似然MLE与矩法MM的参数拟合。读完本文你将理解norm.pdf(x, loc, scale)这类调用背后的数学机理掌握fit的完整参数用法并能借助特殊函数表读懂任意连续分布的数学定义。1. 位置与尺度参数所有连续分布的统一骨架SciPy 中所有连续分布都遵循同一套约定每个分布都带有位置参数locL与尺度参数scaleS必要时再叠加各自的形状参数shape parameters命名随分布而异。分布的标准形式standard form定义为L 0.0、S 1.0。非标准形式通过下表给出的变换从标准形式推导而来。表中F(x)、f(x)分别是标准形式的 CDF 与 PDFU为标准均匀随机变量。函数名称标准形式位置-尺度变换X L S·Y累积分布函数CDFF(x)F(x; L, S) F((x−L)/S)概率密度函数PDFf(x) F′(x)f(x; L, S) (1/S)·f((x−L)/S)百分点函数PPFG(q) F⁻¹(q)G(q; L, S) L S·G(q)概率稀疏函数PSFg(q) G′(q)g(q; L, S) S·g(q)风险函数HFhₐ(x) f(x)/(1−F(x))hₐ(x; L, S) (1/S)·hₐ((x−L)/S)累积风险函数CHFHₐ(x) log(1/(1−F(x)))Hₐ(x; L, S) Hₐ((x−L)/S)生存函数SFS(x) 1−F(x)S(x; L, S) S((x−L)/S)逆生存函数ISFZ(α) S⁻¹(α) G(1−α)Z(α; L, S) L S·Z(α)矩生成函数MGFM_Y(t) E[e^{Yt}]M_X(t) e^{Lt}·M_Y(St)随机数Y G(U)X L S·Y微分熵h[Y] −∫f(y)log f(y)dyh[X] h[Y] log S非中心矩μ′ₙ E[Yⁿ]E[Xⁿ] Σₖ C(n,k)·Lⁿ⁻ᵏ·Sᵏ·μ′ₖ中心矩μₙ E[(Y−μ)ⁿ]E[(X−μₓ)ⁿ] Sⁿ·μₙ均值众数、中位数、方差μ, μ₂L S·μ, S²·μ₂偏度γ₁ μ₃/μ₂^{3/2}γ₁不变峰度γ₂ μ₄/μ₂² − 3γ₂不变注意几个值得强调的推论偏度skewness与峰度kurtosis不随位置-尺度变换而改变因为二者是无量纲的标准化矩熵的变换只增加log S一项反映了尺度参数带来的信息量方差随尺度的平方缩放S²·μ₂而均值线性平移。1.1 变换在源码中的落地统一方法签名这套变换体系在 scipy/stats/_distn_infrastructure.py 的文档模板中得到统一体现见该文件约 L54-L160。每个连续分布对象都暴露同一组方法签名rvs(shapes, loc0, scale1, size1, random_stateNone) # 随机抽样 pdf(x, shapes, loc0, scale1) # 概率密度 logpdf(x, shapes, loc0, scale1) # 对数概率密度 cdf(x, shapes, loc0, scale1) # 累积分布 sf(x, shapes, loc0, scale1) # 生存函数 ppf(q, shapes, loc0, scale1) # 分位数CDF 反函数 isf(q, shapes, loc0, scale1) # 逆生存函数 moment(order, shapes, loc0, scale1) # 非中心矩 stats(shapes, loc0, scale1, momentsmv) # 均值/方差/偏度/峰度 entropy(shapes, loc0, scale1) # 微分熵 median(shapes, loc0, scale1) # 中位数 mean(shapes, loc0, scale1) # 均值 var(shapes, loc0, scale1) # 方差 std(shapes, loc0, scale1) # 标准差 interval(confidence, shapes, loc0, scale1) # 置信区间也就是说loc与scale是所有连续分布共有的可选关键字参数默认值分别为0与1标准形式形状参数则按位置参数传递。离散分布也共享这套骨架只是scale恒为 1源码中明确注释scale 1 by construction for discrete RVs。例如标准正态与一般正态的对应关系from scipy.stats import norm # 标准形式mean0, std1 norm.pdf(0.0) # 0.3989422804014327 # 非标准形式 X L S*Y等价于 mean1, std2 的正态 norm.pdf(1.0, loc1, scale2) # 仍为 0.39894228040143271.2 一个实用技巧用interval复现 SF/ISF由于 ISF 满足Z(α) G(1−α)interval(confidence)等价于(ppf((1−confidence)/2), isf((1−confidence)/2))它是构造置信区间的高层封装底层正是基于 PPF/ISF 的 loc-scale 变换实现的。2. 矩Moments从 PDF 到偏度与峰度2.1 非中心矩与中心矩非中心矩non-central moments直接用 PDF 定义μ′ₙ ∫₋∞^∞ xⁿ·f(x)dx一个重要技巧令x G(q)即 PPF 变换则q F(x)、dq f(x)dx于是非中心矩可以改写为对分位数的积分μ′ₙ ∫₀¹ Gⁿ(q)dq这个形式在数值上往往更容易计算——它只需要在[0, 1]上对分位函数求积分无需处理 PDF 的尖峰与截断问题。中心矩central moments以均值μ μ′₁为中心可以展开为μₙ ∫₋∞^∞ (x−μ)ⁿ·f(x)dx ∫₀¹ (G(q)−μ)ⁿ dq Σₖ₌₀ⁿ C(n,k)·(−μ)ᵏ·μ′ₙ₋ₖ特别地三阶与四阶中心矩与非中心矩的关系为μ₃ μ′₃ − 3μ·μ′₂ 2μ³ μ′₃ − 3μ·μ₂ − μ³ μ₄ μ′₄ − 4μ·μ′₃ 6μ²·μ′₂ − 3μ⁴ μ′₄ − 4μ·μ₃ − 6μ²·μ₂ − μ⁴2.2 偏度与峰度偏度skewnessγ₁ √β₁ μ₃/μ₂^{3/2}Fisher峰度kurtosisγ₂ μ₄/μ₂² − 3采用减去 3的约定后正态分布的峰度恰好为零因此γ₂ 0表示厚尾、γ₂ 0表示相对平坦的分布。由前一节变换表可知这两个指标对 loc/scale 变换保持不变刻画的是分布形状的固有属性。2.3 在scipy.stats中计算矩连续分布对象的moment(order, ...)方法返回指定阶数的非中心矩见 scipy/stats/_distn_infrastructure.py。其实现思路正是本文的数学框架对n 5的低阶矩优先调用各分布自行实现的_stats闭式解析公式对高阶矩或没有闭式公式的情况退化为_munp基于 PPF 的数值积分最后应用 loc-scale 展开E[Xⁿ] Σₖ C(n,k)·Lⁿ⁻ᵏ·Sᵏ·E[Yᵏ]即源码注释中的E[X^n] E[(LS*Y)^n] L^n sum(comb(n, k)*(S/L)^k E[Y^k], k0...n)。stats(momentsmvsk)则一次性返回四种统计量见 scipy/stats/_distn_infrastructure.pym均值、v方差、sFisher偏度、kFisher峰度默认返回mvfrom scipy.stats import norm, gamma # 标准正态均值 0方差 1偏度 0峰度 0 norm.stats(momentsmvsk) # (0.0, 1.0, 0.0, 0.0) # 伽马分布形状 a2尺度 scale2 # 非中心矩依次为 μ′₁LS·μ、μ′₂...偏度与峰度仅由形状参数决定 gamma.stats(a2, scale2, momentsmvsk) # (4.0, 8.0, 1.4142135623730951, 3.0)3. 中位数与众数Median and mode中位数mₙ定义为密度两侧各占一半的点即F(mₙ) 1/2因此mₙ G(1/2)——它直接就是 PPF 在 0.5 处的取值对应源码中median(shapes, loc0, scale1)方法默认loc0, scale1。利用变换表可进一步得到非标准形式mₙ(L,S) L S·G(1/2)。众数m_d是概率密度函数达到峰值的点m_d arg maxₓ f(x)注意并非所有分布都有唯一的解析众数例如均匀分布处处达到相同高度、双峰分布有两个局部极大对这类情况需要借助数值优化求解。4. 数据拟合Fitting dataMLE 与矩法4.1 最大似然估计的数学原理设f(x; θ)是随机变量的 PDFθ是参数向量例如L与S。对N个独立同分布样本x (x₁, …, xₙ)联合分布为f(x; θ) ∏ᵢ₌₁ᴺ f(xᵢ; θ)最大似然估计是使上述联合密度在数据给定的条件下达到最大的参数值θ̂ arg max_θ f(x; θ) arg min_θ l_x(θ)其中负对数似然negative log-likelihood为l_x(θ) −Σᵢ₌₁ᴺ log f(xᵢ; θ) −N·mean(log f(xᵢ; θ))若θ只包含形状参数则位置与尺度参数可以并入似然函数把xᵢ替换为(xᵢ−L)/S并加上N·log S项后一并最小化l_x(L, S; θ) N·log S − Σᵢ₌₁ᴺ log f((xᵢ−L)/S; θ) N·log S l_{(x−L)/S}(θ)4.2 从样本矩估计 L 与 S 的出发点若只想要 L 与 S 的不一定是最大似然的估计可以用样本均值与方差的矩估计Ŝ √(μ̂₂/μ₂) L̂ μ̂ − Ŝ·μ其中μ与μ₂是未变换分布L0, S1的已知均值与方差样本量定义如下μ̂ (1/N)·Σ xᵢ mean(x) μ̂₂ (1/(N−1))·Σ (xᵢ − μ̂)²注意方差使用N−1的无偏修正。从源码结构看这正是fit内部_fitstart/_fit_loc_scale_support生成迭代起点的基础见 scipy/stats/_distn_infrastructure.py 与 同文件 L2793-L2856先按矩法得到(L̂, Ŝ)再检查按支撑support推算的区间[L̂a·Ŝ, L̂b·Ŝ]是否覆盖全部数据若不覆盖常见于有界分布则改用与数据边界相容的保守估计带 10% 相对余量rel_margin 0.1以保证后续优化在可行域内进行。4.3fit方法的完整参数用法每个连续分布对象都提供fit(data, *args, **kwds)方法见 scipy/stats/_distn_infrastructure.py。核心要点如下参数作用说明data待拟合数据一维数组或scipy.stats.CensoredData实例支持删失数据arg1, arg2, …形状参数的起始值未提供时由_fitstart(data)自动生成loc/scale位置/尺度参数的初始猜测未提供时由_fitstart(data)自动生成floc/fscale固定位置/尺度参数例如floc0, fscale1表示仅拟合形状参数f0, f1, …, fn固定第 n 个形状参数也支持按名字fa、fb或fix_a、fix_bmethod估计方法MLE默认最大似然或MM矩法optimizer自定义优化器签名须为optimizer(func, x0, args(), disp0)methodMLE默认最小化负对数似然函数带惩罚项。对于落在分布支撑之外的数据点施加一个大而有限的惩罚而非无限负对数似然从而保证数值稳定性。methodMM矩法最小化前k阶数据矩与分布矩之间相对误差的 L2 范数其中k等于非固定参数的个数。目标函数精确形式为源码 L2626-L2640(((data_moments - dist_moments) / np.maximum(np.abs(data_moments), 1e-8))**2).sum()1e-8用于避免数据矩为 0 时的除零错误。源码在 scipy/stats/_distn_infrastructure.py#L2465-L2517 的_reduce_func中按所选方法切换目标函数MM 用_moment_errorMLE 用_penalized_nnlf并在 同文件 L2785-L2791 对收敛结果做合法性校验形状参数满足约束且scale 0否则抛出FitError。此外若数据包含np.nan、np.inf或-np.inffit会直接抛出异常CensoredData输入时仅允许methodMLE此时似然由左删失、右删失与区间删失各自的 CDF/SF 贡献合成。4.4 实战示例import numpy as np from scipy.stats import beta, norm # 1) 生成 beta(1, 2) 数据并拟合全部四个参数 (a, b, loc, scale) rng np.random.default_rng(42) x beta.rvs(1.0, 2.0, size1000, random_staterng) a1, b1, loc1, scale1 beta.fit(x) # a1≈1.02, b1≈1.95, loc1≈0.00004, scale1≈0.998不同随机种子略有差异 # 2) 使用自定义优化器例如 SLSQP from scipy.optimize import minimize def custom_optimizer(func, x0, args(), disp0): res minimize(func, x0, args, methodslsqp, options{disp: disp}) if res.success: return res.x raise RuntimeError(optimization routine failed) beta.fit(x, methodMLE, optimizercustom_optimizer) # 3) 利用先验知识固定 loc 与 scale a1, b1, loc1, scale1 beta.fit(x, floc0, fscale1) # loc1 0, scale1 1 # 4) 固定形状参数fa1 等价于 f01 a1, b1, loc1, scale1 beta.fit(x, fa1, floc0, fscale1) # 5) 并非所有分布都返回形状参数——norm 只返回 (loc, scale) loc1, scale1 norm.fit(x)5. 反复出现的特殊函数在阅读 SciPy 各连续分布教程continuous_*.rst时一批特殊函数会反复出现它们是分布 CDF、矩与参数估计的数学构件。下表汇总了它们的记号与定义符号名称定义γ(s, x)下不完全 Gamma 函数∫₀ˣ tˢ⁻¹ e⁻ᵗ dtΓ(s, x)上不完全 Gamma 函数∫ₓ^∞ tˢ⁻¹ e⁻ᵗ dtB(x; a, b)不完全 Beta 函数∫₀ˣ tᵃ⁻¹(1−t)ᵇ⁻¹ dtI(x; a, b)正则化不完全 Beta 函数Γ(ab)/(Γ(a)Γ(b)) · ∫₀ˣ tᵃ⁻¹(1−t)ᵇ⁻¹ dtφ(x)标准正态 PDF(1/√(2π))·e^(−x²/2)Φ(x)标准正态 CDF∫₋∞ˣ φ(t)dt 1/2 1/2·erf(x/√2)ψ(z)digamma 函数d/dz log(Γ(z))ψₙ(z)polygamma 函数dⁿ⁺¹/dzⁿ⁺¹ log(Γ(z))Iᵥ(y)第一类修正 Bessel 函数—Ei(z)指数积分−∫₋z^∞ e⁻ᵗ/t dtζ(n)Riemann zeta 函数Σₖ₌₁^∞ 1/kⁿζ(n, z)Hurwitz zeta 函数Σₖ₌₀^∞ 1/(kz)ⁿₚF_q(…; …; z)超几何函数Σₙ₌₀^∞ ((a₁)ₙ⋯(aₚ)ₙ)/((b₁)ₙ⋯(b_q)ₙ)·zⁿ/n!作为补充这些特殊函数中的绝大多数在 scipy/special 模块中都有高性能数值实现如gammainc/gammaincc、betainc、digamma/polygamma、iv、expi、zeta等这也是 SciPy 连续分布 CDF 与矩计算高效而准确的重要底层支撑。6.scipy.stats中的连续分布全家福原教程在理论部分之后以目录toctree形式给出了 SciPy 所覆盖的全部连续分布的逐页详解各页位于 doc/source/tutorial/stats/ 目录下的continuous_*.rst。完整清单如下基础分布族alpha、anglit、arcsine、beta、betaprime、bradford、burr、burr12、cauchy、skewcauchy、chi、chi2、cosine、dgamma、dpareto_lognorm、dweibull、erlang、expon、exponweib、exponpow、fatiguelife、fisk、foldcauchy、foldnorm、f、gamma、genlogistic、genpareto、genexpon、genextreme、gengamma、genhalflogistic、genhyperbolic、geninvgauss、gennorm、gibrat、gompertz、gumbel_r、gumbel_l、halfcauchy、halfnorm、halflogistic、hypsecant、gausshyper、invgamma、invgauss、invweibull、jf_skew_t、johnsonsb、johnsonsu、ksone、kstwo、kstwobign、landau、laplace、laplace_asymmetric、levy_l、levy、logistic、loglaplace、loggamma、lognorm、loguniform、maxwell、mielke、nakagami、ncx2、ncf、nct、norm、norminvgauss、pareto、lomax、powerlognorm、powernorm、powerlaw、rdist、rayleigh、rice、recipinvgauss、rel_breitwigner、semicircular、studentized_range、t、trapezoid、triang、truncexpon、truncnorm、truncpareto、truncweibull_min、tukeylambda、uniform、vonmises、wald、weibull_max、weibull_min、wrapcauchy例如想深入某个具体分布可直接阅读对应教程页如 连续 Beta 分布、连续正态分布、连续学生 t 分布、连续对数正态分布。这些页面会逐一给出该分布的 PDF/CDF/PPF 解析式、形状参数含义与示例代码。每个分布在代码层面的实现位于 scipy/stats/_continuous_distns.py通过继承rv_continuous基类、覆写_pdf/_cdf/_ppf/_stats等方法注册而成基类的通用 loc-scale 变换、数值积分与优化逻辑则统一由 scipy/stats/_distn_infrastructure.py 提供。7. 参考资源仓库内教程总目录doc/source/tutorial/stats/continuous.rst分布基类与fit/moment/stats实现scipy/stats/_distn_infrastructure.py各连续分布的具体实现scipy/stats/_continuous_distns.py分布拟合工具含参数边界约束、拟合诊断scipy/stats/_fit.py特殊函数数值实现scipy/special单样本统计推断与分布参数结合使用doc/source/tutorial/stats/analysing_one_sample.rst原文档的理论来源可参见 Johnson、Kotz 与 Balakrishnan 所著《Continuous Univariate Distributions》Wiley Sons, 1994, 第二版以及 NIST 的《Engineering and Statistics Handbook》等经典文献——本文给出的全部公式与 SciPy 教程保持一致并已在上述源码路径中验证了其工程实现。【免费下载链接】scipySciPy library main repository项目地址: https://gitcode.com/gh_mirrors/sc/scipy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Ubuntu离线安装Ollama v0.3.12完整方案
Ubuntu离线安装Ollama v0.3.12完整方案

简介:本资源面向Ubuntu系统下的AI开发者与本地大模型部署工程师,提供Ollama v0.3.12全链路离线部署能力,解决无网络环境或企业内网中无法在线拉取模型、安装服务的核心痛点。压缩包共24个文件,含19张关键操作截图(PNG&… · 2026/9/23 1:34:09

四级作文题目保姆级教程
四级作文题目保姆级教程

四级作文题目性能优化指南 CET-4 备考圈里有个怪现象:大家盯着官方样题卷翻来覆去,觉得那几百页 PDF 像砖头一样厚重。想找个能直接上手的“性能优化”方案,结果往往在冗长的解析里迷路。官方文档确实权威,但就像给刚学开车的人塞了一本发动机… · 2026/9/23 1:34:03

Z3 Java 绑定集成指南:Eclipse、IntelliJ IDEA 与 VS Code 环境搭建实战
Z3 Java 绑定集成指南:Eclipse、IntelliJ IDEA 与 VS Code 环境搭建实战

开发工具 【免费下载链接】z3 The Z3 Theorem Prover 项目地址: https://gitcode.com/gh_mirrors/z3/z3 点击查看 免费下载 Z3 提供了完整的 Java 绑定(com.microsoft.z3),允许在 JVM 生态中直接构建约束、求解 SMT 公式并读取模… · 2026/9/23 1:33:45

从VOC到YOLOv8:水稻害虫数据集目标检测实战
从VOC到YOLOv8:水稻害虫数据集目标检测实战

简介:这份以5229张水稻害虫图像为基础的目标检测数据资源,面向农业植保、计算机视觉研究与深度学习开发者,覆盖褐飞虱、绿叶蝉、叶夹、稻蝽、蛀干虫、轮生蛆等常见害虫类别,可直接用于训练和评估害虫检测模型。压缩包共2000个文件… · 2026/9/23 2:26:27

TorchTitan 自定义模型接入实战:基于 TrainSpec 协议从零扩展新模型架构
TorchTitan 自定义模型接入实战:基于 TrainSpec 协议从零扩展新模型架构

TorchTitan 自定义模型接入实战:基于 TrainSpec 协议从零扩展新模型架构 【免费下载链接】AI-Research-SKILLs Comprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/codex/gemini… · 2026/9/23 2:26:27

3个维度拆解地图导航地图实战项目选型
3个维度拆解地图导航地图实战项目选型

3个维度拆解地图导航地图实战项目选型 官方文档动辄几百页,翻到第三章就头晕,根本抓不住重点。很多团队做 实战项目 时,卡在技术选型的泥潭里,到底是用WebGL还是原生Canvas,是用Leaflet还是Mapbox,往往决定了一个导航应用是… · 2026/9/23 2:26:27

基于深度学习的智能FAQ问答系统:意图分类、BM25与HNSW召回及BERT精排实战
基于深度学习的智能FAQ问答系统:意图分类、BM25与HNSW召回及BERT精排实战

简介:这份资源面向希望入门或实践智能问答系统的开发者与个人学习者,提供了一套基于深度学习的FAQ问答系统完整实现方案,可用于客服、教育、技术支持等场景的问答检索与答案匹配。压缩包共45个文件,约49KB,以24个Pytho… · 2026/9/23 2:26:20

疫情数据分析课设实战:从Pandas清洗到可视化呈现的完整指南
疫情数据分析课设实战:从Pandas清洗到可视化呈现的完整指南

简介:面向新冠肺炎疫情数据分析与可视化的Python完整课设资料包,主要适用于计算机、电子信息工程、数学等专业大学生,可作为课程设计、期末大作业或毕业设计的参考资料。项目基于真实疫情数据,完整覆盖数据采集、清洗、时序预测、… · 2026/9/23 2:26:20

YOLO交通标志检测数据集实战:从格式转换到模型部署全流程指南
YOLO交通标志检测数据集实战:从格式转换到模型部署全流程指南

简介:面向YOLO交通标志检测任务的数据集资源,适合计算机视觉初学者与目标检测项目开发者使用。包含右转、左转、禁止停车、停车、直行等10类常见交通标志,标注格式同时提供xml与txt两种,既适配VOC格式训练,也能直接用于… · 2026/9/23 2:26:20

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码