Fit lineare
Questo notebook mostra due usi tipici di mp.lin_fit con un dataset placebo incluso nella cartella examples.
Import
import mespy as mp
df = mp.load_csv(
"data/test_linear_fit.csv",
required_columns=[
"tempo_s",
"spazio_m",
"sigma_spazio_m",
"sigma_tempo_s",
],
missing="error",
)
tempo = df["tempo_s"]
spazio = df["spazio_m"]
sigma_spazio = df["sigma_spazio_m"]
sigma_tempo = df["sigma_tempo_s"]
Fit lineare con sole incertezze su y
Il primo esempio usa lo stesso dataset ma considera solo le incertezze su y, ignorando la colonna sigma_tempo_s.
fit_base = mp.lin_fit(
tempo,
spazio,
sigma_spazio,
xlabel="tempo [s]",
ylabel="spazio [m]",
title="Fit lineare con sole incertezze su y",
show_fit_params=True,
)
{
"slope": round(fit_base.slope, 3),
"intercept": round(fit_base.intercept, 3),
"reduced_chi2": round(fit_base.reduced_chi2, 3),
}
{'slope': 2.114, 'intercept': 0.65, 'reduced_chi2': 0.2}
Esempio con sigma_x
Se fornisci anche l’incertezza su x, lin_fit usa la varianza efficace e aggiorna iterativamente i pesi del fit.
fit_sigma_x = mp.lin_fit(
tempo,
spazio,
sigma_spazio,
sigma_x=sigma_tempo,
xlabel="tempo [s]",
ylabel="spazio [m]",
title="Fit lineare con sigma_x e sigma_y",
show_fit_params=True,
)
{
"slope": round(fit_sigma_x.slope, 3),
"slope_std": round(fit_sigma_x.slope_std, 3),
"intercept": round(fit_sigma_x.intercept, 3),
"iterations": fit_sigma_x.iterations,
"converged": fit_sigma_x.converged,
}
{'slope': 2.112,
'slope_std': 0.034,
'intercept': 0.66,
'iterations': 4,
'converged': True}