整数値の大規模なデータセットと計算を目的としています。 p 値、より高い値が発生する確率。これらの確率を決定するには、データ分布に近似する理論的な分布を求めます。この記事では、Python の Scipy パッケージを使用してこれを実現する方法について説明します。
Scipy の scipy.stats モジュールは、連続および離散の広範なコレクションを提供します。確率分布。各分布には、その形状と動作を特徴付ける独自のパラメーターがあります。目標は、適合度検定に基づいて経験的データに最もよく適合する分布を見つけることです。
Oneこのアプローチは、適合度の尺度として二乗誤差和 (SSE) を利用することです。 SSE は、経験的確率密度関数と理論的確率密度関数間の二乗差を計算します。最小限の SSE を持つ分布が最適であると考えられます。
次の Python コードは、データを理論的な分布に適合させる方法を示しています。使用してSSE:
<br>pdas を pd としてインポート<br>numpy を np としてインポート<br>scipy.stats を st としてインポート<br>matplotlib.pyplot を plt としてインポート</p> <p>データ = pd.read_csv('data.csv') # データファイルに置き換えます</p> <h1>データのヒストグラム</h1> <p>plt.hist(data, bins=50)<br>plt.show() </p> <h1>候補分布</h1> <p>dist_names = ['norm', 'expon', 'gamma', 'beta']</p> <h1>各分布を当てはめて SSE を計算します</h1> <p>best_distribution = None<br>min_sse = np.inf<br> dist in dist_names:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">dist = getattr(st, dist) params = dist.fit(data) # Calculate SSE sse = np.mean((dist.pdf(data, *params) - np.histogram(data, bins=50, density=True)[0]) ** 2) # Update the best distribution if necessary if sse < min_sse: min_sse = sse best_distribution = dist, params
print(best_distribution[0].name, best_distribution[1])
このコードは、最適な分布の名前を提供します。推定されたパラメータを使用します。これらのパラメーターを使用して p 値を計算し、分布の適合度を評価できます。
以上がPython で Scipy を使用して経験データを理論分布に適合させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。