如何使用 Python 中的 SciPy 將經驗分佈擬合到理論分佈?

Mary-Kate Olsen
發布: 2024-11-24 09:58:11
原創
237 人瀏覽過

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)
登入後複製

範例

在上面的範例中,資料的經驗分佈適合三種不同的理論分佈(正常、β 和伽瑪)。發現伽瑪分佈具有最低的 SSE,因此是最佳擬合。然後將值 5 的 p 值計算為在 5 處評估的伽瑪分佈的累積分佈函數。

以上是如何使用 Python 中的 SciPy 將經驗分佈擬合到理論分佈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板