ホームページ >バックエンド開発 >Python チュートリアル >Python で SciPy を使用して経験的分布を理論的分布に当てはめるにはどうすればよいですか?

Python で SciPy を使用して経験的分布を理論的分布に当てはめるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-24 09:58:11239ブラウズ

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

Scipy を使用した理論分布への経験的分布の当てはめ (Python)

統計では、多くの場合、観察されたデータから得られた経験的分布を、データを最もよく表す理論的分布に変換します。これにより、確率やその他の統計的推論の計算が可能になります。

Python での実装 (Scipy)

Scipy は、データに適合できる多数の分布関数を提供します。 。最適な分布を見つけるには、データのヒストグラムと近似分布のヒストグラムの間の誤差二乗和 (SSE) を最小化するために最小二乗法がよく使用されます。 h2>例

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)
上記の例では、データの経験的分布が 3 つの異なる理論的分布に当てはめられています。分布 (正規分布、ベータ分布、ガンマ分布)。ガンマ分布は SSE が最も低く、したがって最もよく適合することがわかります。次に、値 5 の p 値が、5 で評価されたガンマ分布の累積分布関数として計算されます。

以上がPython で SciPy を使用して経験的分布を理論的分布に当てはめるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。