Skip to content

EIS Equivalent-Circuit Fitting

Fit EIS data with equivalent-circuit models and export curves, parameters, and residual diagnostics.

EIS Equivalent-Circuit Fitting

Once you have generated Nyquist and Bode plots, you can use this workflow to convert the resistance, capacitance, diffusion, or transmission-line features in the spectrum into comparable parameters.

It fits EIS data with an equivalent circuit and outputs fitted curves, parameter tables, and residual diagnostics for each sample. This workflow is suitable for comparing interfacial kinetic differences among samples, under different treatment conditions, or before and after cycling.

Input Data

Select a folder containing instrument-exported raw EIS data, or multi-select a group of raw EIS data files. Common text, CSV, Excel, EC-Lab .mpr, Gamry .dta, and VersaStudio .par files can be recognized automatically.

Procedure

  1. Select EIS Data: choose a folder, or multi-select a group of files from the same experiment.
  2. Select a Circuit Model: use a preset model directly, or enter a custom circuit expression.
  3. Configure Fit Parameters: use the default settings for initial values, bounds, and fixed values; enter parameter rules to set them manually when needed.
  4. Review the Fit: after fitting, review the Nyquist fit, frequency-residual plot, and KK test to decide the next analysis step.
  5. Optionally Export a Word Analysis Report: click to generate a .docx batch report.
  6. Optionally Export an Origin Project: generate an .opju file if you need further figure editing.

Circuit Expression Syntax

  • Use - for series connection, such as R0-C1.
  • Use p(...) for parallel connection. For example, R0-p(C1,R1) means a series resistance followed by a capacitor/resistor parallel branch.
  • Use numeric suffixes to distinguish elements of the same type, such as R0, R1, and C1.
  • If an element is entered without a numeric suffix, the workflow adds one automatically. For example, R0-p(C1,R1)-G-L is treated as R0-p(C1,R1)-G1-L1. If element identifiers are repeated, the workflow normalizes them and shows the normalized expression. For example, R0-p(CPE1,R1)-p(CPE1,R1) is normalized to R0-p(CPE1,R1)-p(CPE2,R2).
  • Multi-parameter elements are expanded into multiple fit parameters. For example, CPE1 corresponds to CPE1_0 and CPE1_1; Wo1 corresponds to Wo1_0 and Wo1_1.

Common preset models are listed below.

  • R0-C1 — series resistance + a single capacitor
  • R0-p(C1,R1) — series resistance + parallel capacitor/resistor (the typical double-layer capacitance with charge-transfer resistance)
  • R0-CPE1 — series resistance + constant phase element (non-ideal capacitance)
  • R0-p(CPE1,R1) — series resistance + parallel CPE/resistor (useful for rough interfaces, porous structures, or distributed time constants)
  • R0-p(C1,R1)-W1 — series resistance + (parallel capacitor/resistor) + Warburg (adds semi-infinite diffusion impedance after interfacial charge transfer)

See the "Element Overview" section below for the full list of supported elements with their units and impedance equations.

How to Configure Fit Parameters

In most cases, use the default settings. All parameters participate in the fit, while the workflow estimates initial values separately for each sample and uses recommended parameter bounds.

The parameter section lists every parameter in the current circuit with its units and recommended range. Leave the rule input blank to fit every parameter with automatic initial values and recommended bounds. Enter rules only when you need to override those settings, as shown below.

  • R0=1.0: fix R0 at 1.0, excluding it from optimization and fitted confidence intervals.
  • R1~100: fit R1 with an initial value of 100.
  • R1>0 or R1<=1e6: set a one-sided fitting bound.
  • 0<CPE1_1<=1: set both lower and upper bounds.
  • R1~100, 0<R1<1e6: combine an initial value with bounds.

Separate rules with commas or semicolons. Parameters omitted from the rules retain automatic settings. Every rule applies to all samples selected for the run.

Fixed values should come from an explicit model hypothesis. When a fixed value or input bound exceeds the recommended range, the result shows a reminder; continue fitting when you have a clear basis. If an automatic initial value falls outside input bounds, it is moved inside those bounds and the adjustment is recorded.

If the initial values are uncertain or the circuit structure is complex, you can enable global optimization. It explores a wider parameter space, but it also takes noticeably longer.

Output

Each sample produces the following files.

  • *_circuit_fit.csv: experimental/fitted impedance, modulus, phase, pointwise normalized residuals, and frequency-band labels.
  • *_circuit_fit.png: Nyquist, Bode modulus, Bode phase, and frequency-dependent normalized residuals.
  • circuit_summary.json: circuit and parameter settings, fitted parameters, standard errors, full-spectrum metrics, frequency-band errors, trajectory metrics, and residual-structure diagnostics.

Batch-level results include the following files.

  • fit_summary.csv: fitted parameters for all samples.
  • fit_diagnostics.csv: per-sample quantitative error, trajectory, residual-structure, and parameter diagnostics.
  • fit_diagnostics.md: a quick-readable fitting report.
  • filter_circuit_report.docx: an illustrated analysis report generated after clicking Export Word report.
  • filter_circuit_fit.opju: optional Origin project.

The fitting report also contains a table with one row per sample and parameter. Its "Fixed rule" column uses the parameter=value format so that a result can be copied and fixed on a later run. In a batch run, a manually entered fixed value applies to every sample, so confirm that it fits the selected samples before using it.

Word Analysis Report

The workflow exports one filter_circuit_report.docx for each fitting batch. It contains the following:

  • sample names, source file names, detected formats, file sizes, modification times, valid point counts, and frequency ranges;
  • the preprocessing steps actually applied, plus explicit confirmation that smoothing, outlier removal, blank subtraction, and baseline correction were not applied;
  • the circuit expression, fitting method, Lin-KK, parameter rules, initial guesses, bounds, fixed parameters, and parameter warnings;
  • batch fitting summaries, data-integrity/high-frequency-real/KK checks, and the related reminders;
  • the circuit diagram, per-sample Lin-KK figures, Nyquist/Bode/residual diagnostic figures, and complete parameter tables;
  • fit-result interpretation, analysis workflow version, analysis time, and scientific package versions.

If the button shows Word export unavailable, upgrade Oparic and try again; fitting remains available.

How to Read the Fit Results

  • The fitted line should closely follow the experimental points in the Nyquist plot, especially near the semicircle apex, low-frequency diffusion tail, and high-frequency intercept.
  • rmse_rel is the complex-impedance RMSE divided by mean impedance magnitude and summarizes the full-spectrum error. Pointwise relative-error P50/P95, real/imaginary errors, and frequency-band results show its distribution.
  • Every fit residual is defined as fitted minus experimental. Positive values mean that the model overestimates the corresponding real or imaginary component; negative values mean that it underestimates it.
  • Bode modulus, phase error, and the Nyquist trajectory angle show how closely the model follows the frequency-response trend.
  • Residual lag-one correlation, runs, and the longest same-sign interval show systematic deviations and their frequency ranges.
  • Parameter relative standard errors and bound status show parameter stability; parameter magnitudes support physical interpretation.
  • Compare candidate circuits with the same frequency points, residual definition, and weighting, and prefer models with simple structures and clear physical meaning.

Element Overview

The following table lists the equivalent-circuit elements supported by this workflow. Let ω=2πf\omega = 2\pi f and j=−1j=\sqrt{-1}.

ElementFit ParametersUnitsCommon Meaning
RR0Ω\OmegaOhmic, solution, or charge-transfer resistance
CC0F\mathrm{F}Ideal capacitance, such as ideal double-layer capacitance
LL0H\mathrm{H}Inductance or high-frequency parasitic response
WW0Ω s−1/2\Omega\,\mathrm{s}^{-1/2}Semi-infinite Warburg diffusion impedance
WoWo0_0, Wo0_1Ω\Omega, s\mathrm{s}Open finite-space Warburg element
WsWs0_0, Ws0_1Ω\Omega, s\mathrm{s}Short finite-length Warburg element
CPECPE0_0, CPE0_1Ω−1 sα\Omega^{-1}\,\mathrm{s}^{\alpha}, dimensionlessConstant phase element for non-ideal capacitance
LaLa0_0, La0_1H s\mathrm{H}\,\mathrm{s}, dimensionlessModified inductance for non-ideal inductive behavior
GG0_0, G0_1Ω\Omega, s\mathrm{s}Gerischer element for coupled reaction-diffusion response
GsGs0_0, Gs0_1, Gs0_2Ω\Omega, s\mathrm{s}, dimensionlessFinite-length Gerischer element
KK0_0, K0_1Ω\Omega, s\mathrm{s}Single RC relaxation process
ZarcZarc0_0, Zarc0_1, Zarc0_2Ω\Omega, s\mathrm{s}, dimensionlessDepressed semicircle or Cole-Cole-type relaxation
TLMQTLMQ0_0, TLMQ0_1, TLMQ0_2Ω\Omega, F sγ−1\mathrm{F}\,\mathrm{s}^{\gamma-1}, dimensionlessSimplified transmission-line model with non-ideal interfacial capacitance
TT0_0, T0_1, T0_2, T0_3Ω m2\Omega\,\mathrm{m}^2, Ω m2\Omega\,\mathrm{m}^2, dimensionless, s\mathrm{s}Macrohomogeneous porous-electrode transmission-line model

Appendix: Element Equations

The series and parallel combination rules are shown below.

Zseries=Z1+Z2+⋯+ZnZ_{\mathrm{series}} = Z_1 + Z_2 + \cdots + Z_n

Zparallel=11Z1+1Z2+⋯+1ZnZ_{\mathrm{parallel}} = \frac{1}{\frac{1}{Z_1}+\frac{1}{Z_2}+\cdots+\frac{1}{Z_n}}

The impedance expressions for the supported elements are:

ElementEquation
RZR=RZ_R=R
CZC=1jωCZ_C=\frac{1}{j\omega C}
LZL=jωLZ_L=j\omega L
WZW=AW(1−j)ωZ_W=\frac{A_W(1-j)}{\sqrt{\omega}}
WoZWo=Z0jωτcoth⁡(jωτ)Z_{Wo}=\frac{Z_0}{\sqrt{j\omega\tau}}\coth(\sqrt{j\omega\tau})
WsZWs=Z0tanh⁡(jωτ)jωτZ_{Ws}=\frac{Z_0\tanh(\sqrt{j\omega\tau})}{\sqrt{j\omega\tau}}
CPEZCPE=1Q(jω)αZ_{CPE}=\frac{1}{Q(j\omega)^\alpha}
LaZLa=L(jω)αZ_{La}=L(j\omega)^\alpha
GZG=RG1+jωtGZ_G=\frac{R_G}{\sqrt{1+j\omega t_G}}
GsZGs=RG1+jωtGtanh⁡(ϕ1+jωtG)Z_{Gs}=\frac{R_G}{\sqrt{1+j\omega t_G}\tanh(\phi\sqrt{1+j\omega t_G})}
KZK=R1+jωτkZ_K=\frac{R}{1+j\omega\tau_k}
ZarcZarc=R1+(jωτk)γZ_{arc}=\frac{R}{1+(j\omega\tau_k)^\gamma}
TLMQZTLMQ=RionZScoth⁡RionZSZ_{TLMQ}=\sqrt{R_{ion}Z_S}\coth\sqrt{\frac{R_{ion}}{Z_S}}, where ZS=1QS(jω)γZ_S=\frac{1}{Q_S(j\omega)^\gamma}
TZT=Acoth⁡ββ+B1βsinh⁡βZ_T=A\frac{\coth\beta}{\beta}+B\frac{1}{\beta\sinh\beta}, where β=(a+jωb)1/2\beta=(a+j\omega b)^{1/2}

For multi-parameter elements, _0, _1, _2, and _3 follow the parameter order in the equation. For example, CPE1_0 is QQ and CPE1_1 is α\alpha; Wo1_0 is Z0Z_0 and Wo1_1 is τ\tau; Gs1_0, Gs1_1, and Gs1_2 are RGR_G, tGt_G, and ϕ\phi, respectively. Use the units listed in the Element Overview table above.

Practical Tips

We recommend using EIS Plotting: Nyquist and Bode first to review the Nyquist and Bode plots. If the curve contains obvious outliers, inductive tails, or low-frequency drift, address the data quality before fitting an equivalent circuit.

When the circuit parameters are unstable or difficult to interpret, use EIS/DRT Analysis to inspect the distribution of relaxation times, then return to this workflow with a more physically motivated circuit structure.