Panoramica
Scopo
Eseguire un fit lineare pesato y = m x + c su dati sperimentali con incertezze su y e, opzionalmente, anche su x.
Parametri
x,y: dati sperimentali.sigma_y: incertezze suy, strettamente positive.sigma_x: incertezze opzionali sux, anch’esse strettamente positive.decimals: precisione testuale usata nelle etichette del fit. Deve essere un intero compreso tra 0 e 20.tol: tolleranza relativa usata nel criterio di convergenza quandosigma_xe presente.max_iter: massimo numero di aggiornamenti dei pesi.style:Noneusa glircParamscorrenti,"mespy"carica lo stile del package, qualunque altra stringa viene passata a Matplotlib come nome stile.show_plot,show_band,show_legend,show_fit_params,show_grid: controllano la parte grafica.xlabel,ylabel,title,xlim,ylim,figsize,dpi,save_path: regolano la figura.figsizeedpivengono passati alla creazione della figura solo quando esplicitati.title_fontsize,title_pad,legend_fontsize,legend_loc: override puntuali di titolo e legenda. Se lasciati aNone, la funzione usa lo stile attivo.point_color,fit_color,band_color,data_alpha,band_alpha,grid_alpha: regolano colori e trasparenze di punti, retta, banda e griglia.point_color=Noneegrid_alpha=Nonelasciano decidere allo stile attivo.
Restituisce
Un LinearFitResult con parametri del fit, incertezze, residui, diagnostiche e figura opzionale.
Errori ed eccezioni
ValueErrorsex,yesigma_ynon hanno la stessa lunghezza.ValueErrorse ci sono meno di 3 punti.ValueErrorse gli input contengono valori non finiti.ValueErrorsesigma_yosigma_xcontengono valori non positivi.ValueErrorsedecimalsnon e un intero valido tra 0 e 20.ValueErrorsetolomax_itersono invalidi.ValueErrorsexnon contiene almeno due valori distinti.ValueErrorsesave_pathviene usato conshow_plot=False.RuntimeErrorse il caso consigma_xnon converge entromax_iter.
Esempio
import numpy as np
from mespy import lin_fit
x = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
y = np.array([1.8, 3.1, 4.1, 5.2, 6.1])
sigma_y = np.full_like(x, 0.2)
result = lin_fit(
x,
y,
sigma_y,
style="mespy",
xlabel="tempo [s]",
ylabel="spazio [m]",
show_plot=False,
)
Note
Nel caso base i pesi sono
1 / sigma_y**2.Se
sigma_xe presente, i pesi vengono aggiornati con la varianza efficacesigma_y^2 + m^2 sigma_x^2.La parte grafica riusa
_style_context, quindi il comportamento distylee degli override e coerente conhistogram.I coefficienti iniziali e gli aggiornamenti intermedi passano per
_fit_coefficients.