2012-10-03 33 views
5

Xin chào Tôi muốn tính toán sai số về độ dốc và đánh chặn được tính bằng hàm scipy.polyfit. Tôi có (+/-) sự không chắc chắn đối với ydata vì vậy làm thế nào tôi có thể bao gồm nó để tính toán độ không chắc chắn vào độ dốc và chặn? Mã của tôi là,Cách tính sai số cho phụ kiện đa thức (theo độ dốc và chặn)

from scipy import polyfit 
import pylab as plt 
from numpy import * 

data = loadtxt("data.txt") 
xdata,ydata = data[:,0],data[:,1] 


x_d,y_d = log10(xdata),log10(ydata) 
polycoef = polyfit(x_d, y_d, 1) 
yfit = 10**(polycoef[0]*x_d+polycoef[1]) 


plt.subplot(111) 
plt.loglog(xdata,ydata,'.k',xdata,yfit,'-r') 
plt.show() 

Thanks a lot

Trả lời

4

Bạn có thể sử dụng scipy.optimize.curve_fit thay vì polyfit. Nó có thông số sigma vì lỗi của ydata. Nếu bạn có lỗi của bạn cho mỗi giá trị y trong một chuỗi yerror (để yerror có chiều dài tương tự như chuỗi y_d bạn), bạn có thể làm:

polycoef, _ = scipy.optimize.curve_fit(lambda x, a, b: a*x+b, x_d, y_d, sigma=yerror) 

Đối với một sự lựa chọn xem đoạn Lắp một cường quốc-pháp luật để dữ liệu có lỗi trong số Scipy Cookbook.

+0

Cảm ơn bạn đã trả lời. Có, tôi đã thấy chức năng luật quyền lực đó nhưng làm thế nào tôi có thể kết hợp lỗi +/- của tôi cùng với ydata? Ví dụ: ydata của tôi trông giống như Y = 5 (+0.1, -0.4), 4.7 (+ 0.7, -0.4), .. v.v. –

+0

@viralparekh Bạn có độ lệch không đối xứng về giá trị của bạn? Không bao giờ thấy rằng trước khi :) Bạn có thể xây dựng một chút về lý do tại sao độ lệch dương là khác nhau từ tiêu cực. – halex

+0

Nó hiển thị vùng tin cậy. vì vậy giá trị Y thứ nhất nằm trong khoảng từ 5.09 đến 4.59 và cứ thế. Nó chỉ hiển thị lỗi + (cao) và -ve (thấp). –

Các vấn đề liên quan