Hướng dẫn curve fit with error bars python - đường cong phù hợp với các thanh lỗi python

Phần đầu tiên của vấn đề này là tính toán các thanh lỗi. Không có thứ gọi là tính toán một thanh lỗi, bởi vì một thanh lỗi thể hiện độ chính xác của từng điểm dữ liệu và như vậy, bạn không thể chỉ sử dụng dữ liệu bạn đã phải tính toán.calculating the error bars. There is no such thing as calculating an error bar, because an error bar represents the accuracy of each data point, and as such, you cannot just use the data you already have to calculate it.

Ví dụ, nếu bạn đang vẽ tuổi so với chiều cao (chỉ là một ví dụ tùy ý), bạn sẽ tìm hiểu mức độ chính xác của phép đo chiều cao của bạn - thông thường điều này được thực hiện bằng cách thực hiện trung bình nhiều phép đo.

Phần tiếp theo là vẽ một thanh lỗi. Với matplotlib, điều này khá đơn giản, vì bạn chỉ có thể sử dụng plt.errorbar(x, y, yerr = error_array, fmt = 'o'), trong đó error_array là mảng chứa chiều cao thanh lỗi cho mỗi điểm của bạn và 'o' chỉ là định dạng của thanh lỗi - trong trường hợp này là một đường thẳng đứng. Ví dụ:

import matplotlib.pyplot as plt

X = sorted([35,12,58,43,27,39,68])                              # Age
Y = sorted([1.75, 1.32, 1.65, 1.49, 1.80, 1.67, 1.83])          # Height
error_array = [0.02, 0.1, 0.04, 0.03, 0.09, 0.12, 0.01]         # Error bar for height

fig, ax = plt.subplots()
plt.scatter(X, Y)
plt.errorbar(X, Y, yerr=error_array)

plt.show()

Hướng dẫn curve fit with error bars python - đường cong phù hợp với các thanh lỗi python

EDIT: Ồ, một điều tôi quên đề cập là bạn phải đặt hàng dữ liệu X của mình và có dữ liệu y của bạn tương ứng với thứ tự đó, để bạn có một biểu đồ dòng có ý nghĩa. Làm điều này bằng cách sử dụng hàm inbuild sorted() trong Python. Oh, one thing I forgot to mention is that you must order your X data, and have your Y data corresponding to that order, so that you have a line graph that makes sense. Do this using the sorted() inbuild function in Python.

Trong một số bài viết trước đó, tôi đã thảo luận về sự phù hợp thống kê với PYMC và EMCEE. Ưu điểm của các phương pháp thống kê là chúng không nhạy cảm với dạng hàm chi bình phương. Điều này rất quan trọng trong một số trường hợp mà chức năng công đức doe snot có mức tối thiểu được xác định rõ. Ưu điểm của các phương pháp Chi-Square là chúng thường nhanh hơn nhiều. Trong bài đăng này, tôi hiển thị một ví dụ điển hình về sự phù hợp bình phương nhỏ nhất với lỗi đo lường. Như thường lệ, chúng tôi quan tâm để ước tính một tham số phù hợp cũng như sự không chắc chắn của chúng.

Hướng dẫn curve fit with error bars python - đường cong phù hợp với các thanh lỗi python
Như bạn thấy trong ví dụ trên, chúng tôi phù hợp với một hàm đơn giản với lỗi y được đo, ước tính các tham số phù hợp và độ không đảm bảo của chúng và vẽ một mức độ tin cậy của một phạm vi nhất định. Chương trình được hiển thị dưới đây:

Nhập Numpy dưới dạng NPFrom pylab Nhập *từ scipy.
from pylab import *
from scipy.optimize import curve_fit

def func (x, a, b, c):

Trả lại A *X *X + B *X + C

# Kiểm tra dữ liệu và ERRORX = NP.LINSPACE (-10, 10, 100) Y0 =-0.07 * X * X + 0.5 * X + 2. NIEIO = y0 + tiếng ồn
x = np.linspace(-10, 10, 100)
y0 = – 0.07 * x * x + 0.5 * x + 2.
noise = np.random.normal(0.0, 1.0, len(x))
y = y0 + noise

# đường cong phù hợp [chỉ có y-error] popt, pcov = curve_fit (func, x, y, sigma = 1 ./ (nhiễu*nhiễu)) perr = np.sqrt (np.diag (pcov))
popt, pcov = curve_fit(func, x, y, sigma=1./(noise*noise))
perr = np.sqrt(np.diag(pcov))

#dấu hiệu phù hợp với các tham số và ước tính 1-sigma (popt [i])+'+-'+str (perr [i]))
print(‘fit parameter 1-sigma error’)
print(‘———————————–‘)
for i in range(len(popt)):
print(str(popt[i])+’ +- ‘+str(perr[i]))

# Chuẩn bị mức độ tin cậy Curvesnstd = 5. # Để vẽ khoảng 5-Sigma
nstd = 5. # to draw 5-sigma intervals
popt_up = popt + nstd * perr
popt_dw = popt – nstd * perr

fit = func (x, *popt) fit_up = func (x, *popt_up) fit_dw = func (x, *popt_dw)
fit_up = func(x, *popt_up)
fit_dw = func(x, *popt_dw)

#plotfig, ax = plt.subplots (1) rcparams ['xtick.labelsize'] = 18 rcparams ['ytick.labelsize'] = 18 rcparams ['font.size'] , xerr = 0, net = true, ecolor = 'k', fmt = 'none', label = 'data')
fig, ax = plt.subplots(1)
rcParams[‘xtick.labelsize’] = 18
rcParams[‘ytick.labelsize’] = 18
rcParams[‘font.size’]= 20
errorbar(x, y0, yerr=noise, xerr=0, hold=True, ecolor=’k’, fmt=’none’, label=’data’)

xlabel ('x', fontsize = 18) ylabel ('y', fontsize = 18) tiêu đề ('phù hợp chỉ với y-error', fontsize = 18) lô (x, fit, 'r', lw = 2, nhãn = 'Đường cong phù hợp nhất') Lô (x, y0, 'K K Khoảng ') Legend (loc =' dưới bên phải ', fontsize = 18) show ()
ylabel(‘y’, fontsize=18)
title(‘fit with only Y-error’, fontsize=18)
plot(x, fit, ‘r’, lw=2, label=’best fit curve’)
plot(x, y0, ‘k–‘, lw=2, label=’True curve’)
ax.fill_between(x, fit_up, fit_dw, alpha=.25, label=’5-sigma interval’)
legend(loc=’lower right’,fontsize=18)
show()

Xin lưu ý rằng sử dụng lỗi đo lường là tùy chọn. Nếu bạn không có Y-error, chỉ cần bỏ qua lệnh của nó trong quy trình phù hợp:

# đường cong phù hợp [chỉ có y-error] popt, pcov = curve_fit (func, x, y)
popt, pcov = curve_fit(func, x, y)

Bạn vẫn nhận được ước tính cho độ không đảm bảo của các tham số phù hợp, mặc dù nó ít đáng tin cậy hơn. & NBSP; Trong bài tiếp theo, tôi hiển thị một ví dụ về độ phù hợp bình phương nhỏ nhất với lỗi trên cả hai trục.

Làm thế nào để bạn phù hợp với dữ liệu trong các thanh lỗi Python?

Chúng tôi sử dụng Function ErrorBar () để vẽ dữ liệu hiển thị các thanh lỗi trên các điểm dữ liệu. Hàm này hoạt động rất giống với lệnh lô (). Chúng ta chỉ cần chỉ định một mảng phụ gia chứa các độ không đảm bảo với đối số yerr = d_y.use the function errorbar() to plot the data showing error bars on the data points. This function works very much like the plot() command. We just have to specify an additonal array containing the uncertainties with the argument yerr=d_y .

Làm thế nào để bạn phù hợp với một dữ liệu cong trong Python?

Phù hợp với dữ liệu..
Nhập hàm Curve_Fit từ Scipy ..
Tạo một danh sách hoặc mảng numpy của biến độc lập của bạn (giá trị x của bạn). ....
Tạo một danh sách các mảng numpy của các biến expedent của bạn (giá trị y của bạn). ....
Tạo một hàm cho phương trình bạn muốn phù hợp. ....
Sử dụng chức năng Curve_fit để phù hợp với dữ liệu của bạn ..

Làm thế nào để bạn vẽ một đường cong lỗi trong Python?

Thanh lỗi trong các lô hàng..
x = np. không gian linsp (0,5,5,10) y = 10*np. exp (-x) xerr = np. ngẫu nhiên. Random_sample (10) yerr = np. ngẫu nhiên. Random_sample (10).
cây rìu. Thanh lỗi (x, y, xerr = xerr, yerr = yerr, fmt = '-o').
cây rìu. set_xlabel ('x-axis') ax. set_ylabel ('y-trục') ax. set_title ('Line Plot với các thanh lỗi').

Làm thế nào để bạn vẽ một đường cong phù hợp nhất trong Python?

# Xác định hàm mục tiêu thực sự ..
# Tải bộ dữ liệu ..
Data = DataFrame.giá trị.....
x, y = data [:, 4], dữ liệu [:, -1] # đường cong phù hợp ..
popt, _ = curve_fit (mục tiêu, x, y) # tóm tắt các giá trị tham số ..
in ('y = %.5f * x + %.5f' %(a, b)) # sơ đồ đầu vào so với đầu ra ..
pyplot.Phân tán (x, y) ....
x_line = Arange (min (x), tối đa (x), 1).