如何使用 Python 中的 SciPy 将经验分布拟合到理论分布?

Mary-Kate Olsen
发布: 2024-11-24 09:58:11
原创
206 人浏览过

How Can I Fit an Empirical Distribution to a Theoretical One Using SciPy in Python?

使用 Scipy (Python) 将经验分布拟合到理论分布

在统计中,通常需要拟合从观测数据获得的经验分布到最能描述数据的理论分布。这允许计算概率和其他统计推断。

在 Python (Scipy) 中实现

Scipy 提供了许多可以拟合数据的分布函数。为了找到最合适的分布,通常使用最小二乘法来最小化数据直方图与拟合分布直方图之间的平方误差之和(SSE)。

import numpy as np
import scipy.stats as st

# Data points
data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# Candidate theoretical distributions
distributions = ['norm', 'beta', 'gamma']

# Iterate over distributions and find best fit
best_dist = None
lowest_sse = float('inf')
for dist_name in distributions:
    dist = getattr(st, dist_name)

    # Fit distribution to data
    params = dist.fit(data)

    # Evaluate SSE
    sse = np.sum((np.histogram(data, bins=10, density=True)[0] - dist.pdf(np.linspace(0, 10, 100), *params))**2)

    # Update best distribution if lower SSE found
    if sse < lowest_sse:
        lowest_sse = sse
        best_dist = dist

# Calculate p-value for a given value
value = 5
p_value = best_dist.cdf(value)
登录后复制

< h2>示例

在上面的示例中,数据的经验分布适合三种不同的理论分布(正常、β 和伽马)。发现伽马分布具有最低的 SSE,因此是最佳拟合。然后将值 5 的 p 值计算为在 5 处评估的伽马分布的累积分布函数。

以上是如何使用 Python 中的 SciPy 将经验分布拟合到理论分布?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板