2012-10-03 10 views
5

Merhaba Scipy.polyfit işlevi tarafından hesaplanan eğim ve kesişme noktalarındaki hataları hesaplamak istiyorum. Ydata için (+/-) belirsizliğim var, bu yüzden belirsizliği eğime ve kesişme noktasına hesaplamak için nasıl ekleyebilirim? Kodum,Polinom uydurma hatası (eğim ve kesişme noktası) nasıl hesaplanır

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() 

Teşekkür Sen scipy.optimize.curve_fit yerine polyfit kullanabilirsiniz

cevap

4

çok. Ydata hataları için sigma parametresine sahiptir. Eğer bir dizinin yerror her y değerinin için hata varsa (yerror sizin y_d dizisi ile aynı uzunluğa sahiptir, böylece) Yapabileceğiniz: bir alternatifi için

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

güç kanunu göre donanım parçası paragraf bkz Scipy Cookbook numaralı telefondan numaralı hatalarla ilgili veriler.

+0

Cevabınız için teşekkür ederiz. Evet, bu güç kanununun çalıştığını gördüm, fakat +/- hatayı ydata ile nasıl birleştirebilirim? Örneğin ydata'm benziyor, Y = 5 (+0,1, -0,4), 4.7 (+ 0,7, -0,4), vb. –

+0

@viralparekh Değerlerinizin asimetrik sapması var mı? Bunu daha önce hiç görmedim :) Olumlu sapmanın neden olumsuzdan farklı olduğu konusunda biraz bilgi verebilir misiniz? – halex

+0

Güven bölgesini gösterir. böylece 1. Y değeri (5.09 ve 4.59) arasındadır. Sadece + (yüksek) ve -ve (düşük) hatası gösteriyor. –

İlgili konular