Python |プロット&形式でデータフィットをフィッティング(1/A)E^- Aを検索し、私が選択した答えを見つけることができない多くの後、一定
をである(X/A)私の質問をここに入れてください。
私は指数関数をy =(1/A)e ^( - x/A)の形で表示データにフィットさせ、この関数をプロットしますか?私はまだPythonでのフィッティングに慣れる必要があります。ヘルプは高く評価されます!
ありがとうございます。
Python |プロット&形式でデータフィットをフィッティング(1/A)E^- Aを検索し、私が選択した答えを見つけることができない多くの後、一定
をである(X/A)私の質問をここに入れてください。
私は指数関数をy =(1/A)e ^( - x/A)の形で表示データにフィットさせ、この関数をプロットしますか?私はまだPythonでのフィッティングに慣れる必要があります。ヘルプは高く評価されます!
ありがとうございます。
私はそれを理解したように見えます。
def exponential_fit(x, a, c):
"""
Logarithmic fit used for the MuonLab life time measurements.
:param x:
:param a:
:param c:
:return:
"""
return (1/a)*np.exp(-x/a)+c
DEF logarithmic_fit_plot(X、Y):#1 WIP フォント= { '家族': '正常' '体重': '太字' 'サイズ':20}
matplotlib.rc('font', **font)
xdata = x
ydata = y
plt.rc('text', usetex=True)
plt.plot(xdata, ydata, '.', label='sample')
popt, pcov = sp.optimize.curve_fit(exponential_fit, xdata, ydata)
plt.plot(xdata, exponential_fit(xdata, *popt), 'r-',
label=r"$\frac{1}{\tau_0}e^{\frac{-x}{\tau_0}}, \tau_0=%5.3f, c=%5.3f$" % tuple(popt))
plt.legend()
plt.show()
悲しいことに、データにはうまく適合しませんが、それは私が推測する数学の問題です。
このコードは適切なフィット感をもたらします。
first = True
lifetimes = []
counts = []
with open('Werkverkeer.txt') as w:
next(w)
for line in w:
_, life, count = line.rstrip().split()
life, count = float(life), int(count)
if count==0:
continue
lifetimes.append(life-0.005)
counts.append(count)
probs = [_/sum(counts) for _ in counts]
print (probs)
from scipy.optimize import leastsq
from scipy.stats import expon
from numpy import exp
def residual(params, X, data):
model = [expon.cdf(x+0.005, scale=params[0])-expon.cdf(x-0.005, scale=params[0]) for x in X]
return [d-m for (d,m) in zip(data, model)]
r = leastsq(residual, [140], args=(lifetimes, probs))
estimate = r[0][0]
print (estimate)
fitted = [expon.cdf(x+0.005, scale=estimate)-expon.cdf(x-0.005, scale=estimate) for x in lifetimes]
print(fitted)
from matplotlib import pyplot as plt
plt.plot(lifetimes, probs, 'r.')
plt.plot(lifetimes, fitted, 'b-')
plt.show()
注意観光:
counts
にフィット数が本当に得るための方法ですので、私は、確率の推定値である正規化counts
に装着しました生涯の確率密度関数の推定値で計算する。model =
。residual
の最終行は、観測された確率(カウントに基づく)と仮計算された確率の差を返します。leastsq
は、パラメータとして0.0497646352872の値を返します。
既に[scipy](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html)を試しましたか?上記のリンクを見つけたが、それを使用する方法がわからない場合は、あなたの質問にリンクしている画像を生成するために使用されたデータを共有することは可能ですか? –
私は、左上のデータムは、寿命がわずかにゼロ以上の約160のイベントを観察したことを意味しています。そうですか? –
ありがとうございました!私はSciPyで遊んでみましたが、良い結果はまだありません。私が必要とするものは、そこにある例とは少し異なるようです。さらに、私はあくまでフィッティングに精通しているわけではありません。これまでにガウスフィットと線形回帰がありました。使用されたデータは、https://pastebin.com/i3H4ZfLQにあります。 – Werkverkeer