使用scipy为负值拟合对数正态分布的归类疑问
移位三参数对数正态分布的归属与拟合建议
移位后的三参数对数正态分布不属于标准对数正态分布。标准对数正态分布的核心定义是:若随机变量$X$的自然对数$\ln(X)$服从正态分布,则$X$服从对数正态分布,其定义域严格为正实数。而Scipy中带loc参数的版本本质是对标准对数正态分布做了平移变换——即$Y = X + \text{loc}$,其中$X$是标准对数正态变量。此时只有$\ln(Y - \text{loc})$服从正态分布,$Y$本身已经不符合原始对数正态分布的定义。
针对你的拟合问题:
- 固定
loc=0使用mu/sigma参数化时报错,是因为原始数据中的负值违反了标准对数正态分布的定义域要求,属于合理现象。 - 若你偏好标准参数化但拟合效果差,可尝试两种思路:
- 先排查数据中的负值是否为测量误差,若是则剔除或修正;若为真实的水位负异常(如低于基准面),可基于物理意义给所有数据加一个常数偏移量,转成正值后再拟合标准对数正态分布。
- 换用天然支持负值定义域的分布模型,比如正态分布、广义极值分布(常用于水文极值序列)、偏态正态分布等,这些模型可能更适配你的海洋水位数据特征。
内容的提问来源于stack exchange,提问作者jchristiaanse
相关产品推荐
相关产品推荐

