您有一個整數值的大型數據集,旨在計算p 值,即機率遇到更高的價值。為了確定這些機率,您需要尋找近似資料分佈的理論分佈。本文探討如何使用 Python 的 Scipy 套件來實現此目的。
Scipy 的 scipy.stats 模組提供了連續和離散的廣泛集合機率分佈。每個分佈都有自己的參數來表徵其形狀和行為。目標是根據適合度檢定找到最適合您的經驗數據的分佈。
One方法是利用誤差平方和 (SSE) 作為擬合優度量。 SSE 計算經驗機率密度函數和理論機率密度函數之間的平方差。具有最小 SSE 的分佈被認為是最佳擬合。
以下Python 程式碼示範如何讓資料符合理論分佈使用SSE:
<br>導入pandas 作為pd<br>導入numpy as np<br>import scipy.stats as st<br>import matplotlib.pyplot as plt<p>data = 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>for dist in dist_names:</p><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中文網其他相關文章!