Weibull Fitting Best Practices: What to Do When Your Cross-Section Fit Won't Converge

You have your SEE cross-section data, you fire up your fitting routine, and the four-parameter Weibull just won’t converge, or it converges to something physically unreasonable (negative threshold, shape parameter of 47, etc.).

The standard 4-parameter Weibull is:

σ(LET) = σ_sat × {1 - exp[-((LET - LET_th) / W)^s]}

An important thing to understand upfront: the Weibull function has no basis in device physics. It is purely a convenient mathematical curve that happens to have the right general shape: starting at zero, rising through a transition region, and saturating at a limiting value. It was adopted by the SEE community because it’s flexible enough to fit most cross-section datasets reasonably well and because it has a closed-form integral that makes rate prediction calculations tractable. But the four parameters (σ_sat, LET_th, W, s) don’t correspond to physical properties of the device. There is no reason rooted in semiconductor physics why SEE cross-sections should follow a Weibull CDF; they just approximately do for many devices, and so the community has standardized on it.

This matters because when fitting problems arise, people sometimes try to reason about what the parameters “should” be from a physics standpoint. That reasoning doesn’t apply here. The fit is empirical. If the Weibull doesn’t fit your data well, it may not be a fitting problem; it may be that your device’s actual response simply isn’t Weibull-shaped.

With that caveat, four free parameters with often only 5-8 data points means the fit is inherently underdetermined, especially if your data doesn’t clearly define both the onset and the saturation region.

Some things that help:

Fix what you can. If your highest-LET data points have clearly plateaued, fix σ_sat to the average of those points and fit the remaining three parameters. This alone solves most convergence problems.

Constrain LET_th physically. The threshold should be somewhere below your lowest LET point that showed events. If you have a zero-event point at LET = 5 and first events at LET = 10, LET_th is somewhere in that range. Don’t let the optimizer wander to LET_th = -20.

Watch out for the W-s tradeoff. Width and shape are strongly correlated in the Weibull — you can get a wide curve with low shape or a narrow curve with high shape that both fit the data similarly. Adding reasonable bounds (say s between 0.5 and 10, W between 1 and 100) helps.

Consider whether Weibull is even the right model. Some devices show genuinely non-Weibull behavior — bimodal responses, multiple SEE mechanisms with different thresholds, or proton direct ionization effects at low LETs that don’t follow the heavy-ion trend.

Consider the Edmonds alpha fit as an alternative. Edmonds (IEEE TNS, 2008) proposed a different functional form for the cross-section curve based on modeling the charge collection depth as a function of LET. Instead of the Weibull CDF, the cross-section is expressed as:

σ(LET) = α / LET²

where α is a device-specific fitting constant derived from the proton cross-section upper bound integral. This has some practical advantages: it’s a one-parameter fit (much harder to get wrong), it connects directly to the Edmonds proton estimation methodology, and it tends to be conservative in the transition region where the Weibull shape is most uncertain. The tradeoff is that it doesn’t capture saturation behavior — it’s most useful in the sub-saturation regime that drives rate predictions for many environments. For devices where your rate is dominated by ions near threshold rather than the saturated region, the alpha fit can actually be more appropriate than a Weibull that may be poorly constrained in exactly the LET range that matters.

Notes on weighting. When fitting a Weibull model to SEE data, weighting choices significantly influence key parameters, especially the threshold LET. Because datasets often contain sparse low-cross-section points and dense saturation regions, equal weighting can bias the fit toward high-LET data and underrepresent threshold behavior. Using inverse-variance (Poisson-based) weighting is statistically sound, but alternative approaches like log-space fitting or fluence-based weighting can better emphasize low-cross-section regions. Special care is needed for zero-count points (e.g., using upper bounds or censored methods). In practice, analysts often compare multiple weighting schemes to assess parameter sensitivity, and should clearly document their approach since different methods can yield meaningfully different results.

What fitting approaches and tools do people use? Least-squares on linear or log scale? Maximum likelihood? Manual adjustment? Has anyone compared rate predictions using Weibull vs. Edmonds alpha fits for the same dataset? How do you handle data sets with only 2-3 non-zero points?