ホームページ >バックエンド開発 >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 サイトの他の関連記事を参照してください。