2013-04-21 10 views
5

Sono un utente soddisfatto di scipy.optimize.leastsq.esempio python scipy.odrpack.odr (con esempio di input/output)?

Ora ho - ho sempre avuto - dati x, y con barre di errore variabili, e sembra che scipy.odrpack.odr sia quello che devo usare per rispettare la maggiore incertezza in alcuni dati.

Purtroppo, non riesco a trovare un tutorial online che includa codice di esempio con input e output di esempio. (Sto cercando di renderlo il più semplice possibile.)

Apprezzerei se qualcuno potesse pubblicare un codice di esempio con I/O di esempio. Questo sarebbe facile per qualcuno che usa molto la routine.

Grazie! Bill

risposta

11

Questa è una versione polpa-out dell'esempio in the docs:

import numpy as np 
import scipy.odr.odrpack as odrpack 
np.random.seed(1) 

N = 100 
x = np.linspace(0,10,N) 
y = 3*x - 1 + np.random.random(N) 
sx = np.random.random(N) 
sy = np.random.random(N) 

def f(B, x): 
    return B[0]*x + B[1] 
linear = odrpack.Model(f) 
# mydata = odrpack.Data(x, y, wd=1./np.power(sx,2), we=1./np.power(sy,2)) 
mydata = odrpack.RealData(x, y, sx=sx, sy=sy) 

myodr = odrpack.ODR(mydata, linear, beta0=[1., 2.]) 
myoutput = myodr.run() 
myoutput.pprint() 
# Beta: [ 3.02012862 -0.63168734] 
# Beta Std Error: [ 0.01188347 0.05616458] 
# Beta Covariance: [[ 0.00067276 -0.00267082] 
# [-0.00267082 0.01502792]] 
# Residual Variance: 0.209906660703 
# Inverse Condition #: 0.105981202542 
# Reason(s) for Halting: 
# Sum of squares convergence