LabFit Logo
  • Quickstart
    • Installation
    • Dependencies
    • Input format
    • CSV → fit → plot (10 seconds)
    • Working with arrays directly
    • Choosing a built-in model
    • Initial guesses (p0)
    • Parameter bounds
    • Reading the fit result
    • Interpreting reduced χ²
    • Plotting multiple series
    • Fitting a subset of your data
    • Next steps
  • Concepts: reduced χ² and error propagation
    • What is reduced χ²?
    • Correlated errors
    • Asymmetric errors
    • Errors on derived quantities
    • Initial guesses and bounds
    • Choosing weights
  • How least-squares fitting works
    • 1. What is a residual?
    • 2. Why square the residuals?
    • 3. The \(\chi^2\) landscape
    • 4. How the optimiser walks downhill
    • 5. Goodness-of-fit: reduced \(\chi^2\)
    • 6. Parameter uncertainties
  • Fitting functions
    • Entry points
      • fit()
      • fit_curve()
      • fit_multi()
      • plot_fit()
      • plot_multi_fit()
      • plot_residuals()
    • Built-in model functions
      • constant
        • constant()
        • Equation
        • Variables
      • linear
        • linear()
        • Equation
        • Variables
      • quadratic
        • quadratic()
        • Equation
        • Variables
      • cubic
        • cubic()
        • Equation
        • Variables
      • gaussian
        • gaussian()
        • Equation
        • Variables
      • lorentzian
        • lorentzian()
        • Equation
        • Variables
      • exponential
        • exponential()
        • Equation
        • Variables
      • power_law
        • power_law()
        • Equation
        • Variables
      • logistic
        • logistic()
        • Equation
        • Variables
      • sine
        • sine()
        • Equation
        • Variables
      • cosine
        • cosine()
        • Equation
        • Variables
      • damped_oscillator
        • damped_oscillator()
        • Equation
        • Variables
      • damped_sine
        • damped_sine()
        • Equation
        • Variables
      • sinc
        • sinc()
        • Equation
        • Variables
      • exponential_rise
        • exponential_rise()
        • Equation
        • Variables
      • double_exponential
        • double_exponential()
        • Equation
        • Variables
      • moffat
        • moffat()
        • Equation
        • Variables
      • gaussian_baseline
        • gaussian_baseline()
        • Equation
        • Variables
      • bimodal_gaussian
        • bimodal_gaussian()
        • Equation
        • Variables
      • voigt
        • voigt()
        • Equation
        • Variables
      • skew_normal
        • skew_normal()
        • Equation
        • Variables
      • gaussian_fwhm
        • gaussian_fwhm()
        • Equation
        • Variables
      • lorentzian_fwhm
        • lorentzian_fwhm()
        • Equation
        • Variables
      • exgaussian
        • exgaussian()
        • Equation
        • Variables
      • stretched_exponential
        • stretched_exponential()
        • Equation
        • Variables
      • tanh
        • tanh()
        • Equation
        • Variables
      • arctan
        • arctan()
        • Equation
        • Variables
      • beat
        • beat()
        • Equation
        • Variables
      • rational
        • rational()
        • Equation
        • Variables
      • quartic
        • quartic()
        • Equation
        • Variables
      • quintic
        • quintic()
        • Equation
        • Variables
  • API Reference
    • Core data containers and result objects
      • AsymmetricError
        • AsymmetricError.__init__()
        • AsymmetricError.effective
        • AsymmetricError.lower
        • AsymmetricError.upper
      • DataSeries
        • DataSeries.__init__()
        • DataSeries.effective_sigma
        • DataSeries.error()
        • DataSeries.label
        • DataSeries.sigma
        • DataSeries.sigma_cov
        • DataSeries.sigma_high
        • DataSeries.sigma_low
        • DataSeries.with_label()
        • DataSeries.x
        • DataSeries.y
        • DataSeries.y_err
        • DataSeries.y_error
      • Series
      • Dataset
        • Dataset.__init__()
        • Dataset.append()
        • Dataset.extend()
        • Dataset.series
      • FitResult
        • FitResult.__init__()
        • FitResult.covariance
        • FitResult.is_weighted
        • FitResult.items()
        • FitResult.keys()
        • FitResult.message
        • FitResult.model
        • FitResult.model_name
        • FitResult.p_value
        • FitResult.param_names
        • FitResult.parameter_uncertainties
        • FitResult.params
        • FitResult.predict()
        • FitResult.reduced_chi2
        • FitResult.residuals
        • FitResult.series
        • FitResult.sigma
        • FitResult.success
        • FitResult.uncertainties
        • FitResult.values()
        • FitResult.x
        • FitResult.y
        • FitResult.y_fit
      • Fitter
        • Fitter.__init__()
        • Fitter.bounds
        • Fitter.fit()
        • Fitter.fit_multi()
        • Fitter.model
        • Fitter.p0
      • Plotter
        • Plotter.__init__()
        • Plotter.add_series()
        • Plotter.axes
        • Plotter.figure
        • Plotter.plot()
        • Plotter.save()
        • Plotter.series
    • Related reference pages
  • Utilities and I/O
    • Data loading helpers
      • load_csv()
      • load_txt()
      • combine_series()
    • Uncertainty helpers
      • propagate_errors()
      • effective_sigma()
  • Gallery
    • Linear fit with residuals
      • Linear fit console output
    • Gaussian fit
      • Gaussian fit console output
    • Multi-series damped oscillator comparison
      • Damped oscillator console output
    • Bimodal Gaussian fit
      • Bimodal Gaussian fit console output
    • Exponential decay with per-point errors
      • Exponential fit console output
    • Fitting a subset of your data
      • Subset fit console output
    • Comparing two models on the same data
      • Gaussian (correct model) console output
      • Lorentzian (close but wrong) console output
  • FAQ
    • What units should errors be in?
    • Should I pass sigma_low and sigma_high?
    • Why is reduced χ² not near 1?
    • Why did my fit not converge?
    • What’s the difference between fit() and fit_curve()?
    • How do I use a custom model with Fitter?
    • How do I interpret the p-value?
LabFit
  • Search


© Copyright 2026, matt@matthewd0yle.com.

Built with Sphinx using a theme provided by Read the Docs.