2012-10-03 7 views
5

Witam Chcę obliczyć błędy w nachyleniu i przecięciu, które są obliczane przez funkcję scipy.polyfit. Mam (+/-) niepewność dla ydata, więc jak mogę włączyć ją do obliczenia niepewności na nachylenie i przechwycenie? Mój kod jestJak obliczyć błąd dla wielomianu (nachylenie i przecięcie)

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

Odpowiedz

4

Można użyć scipy.optimize.curve_fit zamiast polyfit. Ma parametr sigma dla błędów ydata. Jeśli masz swój błąd dla każdej wartości y w sekwencji yerror (tak, że yerror ma taką samą długość jak swojej sekwencji y_d) można zrobić:

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

alternatywy patrz paragraf Zamontowanie potęgowego do dane z błędami w Scipy Cookbook.

+0

Dzięki za odpowiedź. Tak, widziałem tę funkcję prawa zasilania, ale w jaki sposób mogę połączyć mój błąd +/- z wartością ydata? Na przykład mój ydata wygląda tak: Y = 5 (+0,1, -0,4), 4,7 (+ 0,7, -0,4), itd. –

+0

@viralparekh Masz asymetryczne odchylenie wartości? Nigdy wcześniej tego nie widziałem :) Czy mógłbyś nieco wyjaśnić dlaczego odchylenie dodatnie różni się od ujemnego? – halex

+0

Pokazuje region zaufania. więc pierwsza wartość Y wynosi od (5,09 do 4,59) i tak dalej. Pokazuje tylko błąd + ve (wysoki) i -ve (niski). –