首頁 > 後端開發 > Python教學 > 如何使用 Python 中的 Scipy 將經驗資料擬合到理論分佈?

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

Susan Sarandon
發布: 2024-11-29 21:30:14
原創
212 人瀏覽過

How Can I Fit Empirical Data to Theoretical Distributions Using Scipy in Python?

使用Scipy 將經驗分佈擬合到理論分佈

簡介


您有一個整數值的大型數據集,旨在計算p 值,即機率遇到更高的價值。為了確定這些機率,您需要尋找近似資料分佈的理論分佈。本文探討如何使用 Python 的 Scipy 套件來實現此目的。


擬合分佈


Scipy 的 scipy.stats 模組提供了連續和離散的廣泛集合機率分佈。每個分佈都有自己的參數來表徵其形狀和行為。目標是根據適合度檢定找到最適合您的經驗數據的分佈。


適合度檢定


適合度檢定測量經驗分佈與理論分佈之間的差異。常見的檢定包括柯爾莫哥洛夫-斯米爾諾夫檢定和卡方檢定。 Scipy 提供了執行這些測試的函數,可讓您評估候選分佈的適合度。

誤差平方和 (SSE)


One方法是利用誤差平方和 (SSE) 作為擬合優度量。 SSE 計算經驗機率密度函數和理論機率密度函數之間的平方差。具有最小 SSE 的分佈被認為是最佳擬合。


Python 實作


以下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中文網其他相關文章!

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