vonMises 分布に個別に非常によく適合するいくつかのデータセットがあります。私はそれらすべてを共有する方法を探していますが、ビンの選択を気にせずにmu
異なっています。kappas
1 つのモデルのみに適合させたい場合は、非常に簡単です。scipy
ここでは、生データを適合させます。symfit
しかし、私はor lmfit
、またはいくつかの投稿 ( hereおよびhere )を使用してグローバルフィッティングを探していました。すべての場合で、x 座標と y 座標を指定する必要があります。つまり、以前に分布のビンサイズを選択する必要がありました。 .
これは、必要なものの例として役立つ可能性のある 2 つのデータ セットのみの人為的なデータですが、scipy
. (ビンの選択を気にする必要がないことに注意してください)。
import numpy as np
import scipy.stats as st
import matplotlib.pyplot as plt
# creating the data
mu1, mu2 = .05, -.05
sigma1, sigma2 = 3.1, 2.9
n1, n2 = 8000, 9000
y1 = np.random.vonmises(mu1, sigma1, n1)
y2 = np.random.vonmises(mu2, sigma2, n2)
# fitting
dist = st.vonmises
*args1, loc1, scale1 = dist.fit(y1, fscale=1)
*args2, loc2, scale2 = dist.fit(y2, fscale=1)
x1 = np.linspace(np.min(y1), np.max(y1), 200)
x2 = np.linspace(np.min(y2), np.max(y2), 200)
pdf_fitted1 = dist.pdf(x1, *args1, loc=loc1, scale=scale1)
pdf_fitted2 = dist.pdf(x2, *args2, loc=loc2, scale=scale2)
# plotting
plt.hist(y1, bins=40, density=True, histtype='step', color='#1f77b4')
plt.hist(y2, bins=40, density=True, histtype='step', color='#ff7f0e')
plt.plot(x1, pdf_fitted1, color='#1f77b4')
plt.plot(x2, pdf_fitted2, color='#ff7f0e')
plt.show()
誰かがそれを手伝ってくれたらうれしいです、事前に感謝します。回答やコメントをいただければ幸いです。