Run the cheapest global sensitivity method — the Morris Elementary Effects (EE) screening — directly in your browser. Change the number of factors, trajectories and grid levels to see μ* (importance) and σ (non-linearity / interaction) at the same time, and decide which inputs to keep for a more expensive Sobol analysis.
Parameters
Factor count k
Number of input factors to screen (model dimension)
Trajectory count r
Number of OAT trajectories. Drives μ* and σ accuracy
Grid level p
Discretisation of input space (even, Δ = p/(2(p−1)))
Test function
Surrogate model used for the screening
G* coefficient a
Smaller a → larger factor influence (dominant as a→0)
Results
—
Factors k
—
Samples r·(k+1)
—
Step Δ
—
Top factor μ*
—
Important factors (μ* > mean)
—
Interaction-heavy factors
—
OAT trajectory sampling (μ-σ plane)
Each factor is plotted on the μ* (x) and σ (y) plane. Points in the upper right are "important and non-linear / interacting". The animated trail shows how r OAT trajectories are sampled.
Sobol-g function (standard benchmark). Factors with smaller a_i contribute more to the output.
What is Morris Elementary Effects Screening?
🙋
I've heard of "sensitivity analysis", but what makes the Morris method special, and how does it actually differ from Sobol?
🎓
Great question. The simplest summary is: Morris is "cheap screening", Sobol is "high-precision quantification". A clean Sobol study on every factor typically needs N·(2k+2) runs — say N=1000, k=20, that's 42,000 evaluations. If one CAE run takes an hour, that's months. Morris does the same screening job in roughly r·(k+1), say 10·21=210 runs, and tells you "these factors look important, those don't".
🙋
So Morris filters first, then Sobol does the heavy lifting. But the abstract says "OAT" — wasn't OAT the textbook example of a bad sensitivity method?
🎓
Nice memory! Classical OAT (perturb one factor at a fixed base point) really is bad — it sees only one local neighbourhood. The clever Morris twist is to make OAT just one trajectory and then take r trajectories scattered randomly through the input space. Each trajectory visits (k+1) points, so r·(k+1) finite differences are collected at many different locations, and the average becomes a genuinely global sensitivity measure.
🙋
The μ-σ plane on the right is fun — points in the upper right look special. What are we actually reading there?
🎓
A large σ means "this factor's effect changes depending on the values of the other factors" — strong interactions or non-linearity. A large μ* means "this factor matters overall". So upper-right points are "important but tricky". Lower-left points can be dropped safely. The real strength of Morris is putting every factor into one of these four quadrants on a single chart.
🙋
So the upper-right factors are the ones I should pass to Sobol for a deeper look?
🎓
Exactly. For each upper-right factor, compare Sobol's first-order S_1 with the total-order S_T and the gap tells you which other factors it teams up with. In practice you often find pairs like "bearing friction coefficient × lubricant temperature" — neither alone is dominant but their product is. Anything Morris places upper-right also deserves a sanity check on the mesh and modelling assumptions before going further.
Frequently Asked Questions
Use Morris for cheap screening and Sobol for rigorous quantification. Morris produces μ* and σ from only r·(k+1) model runs and is ideal for picking out important factors and flagging non-linearities. Sobol returns mathematically clean first-order and total-order indices through variance decomposition, but typically needs N·(2k+2) runs (with N≈1000), an order of magnitude more. The standard industrial workflow is to run Morris first on an expensive CAE model to narrow the input set to 5-10 factors, then run Sobol only on the survivors.
μ* is the mean of the absolute elementary effects and captures the overall influence (importance) of a factor on the output. σ is the standard deviation of the elementary effects and measures how strongly the effect depends on other factors or on the location in the input space — i.e. non-linearity plus interactions. Four typical quadrants: (1) low μ, low σ — negligible, drop it. (2) high μ, low σ — important and linear. (3) high μ, high σ — important but non-linear or interacting, handle with care. (4) low μ, high σ — small on its own but couples with other factors.
Reasonable defaults are r = 10-20 and p = 4 or 6 (even, with Δ = p/(2(p-1))). Increasing r reduces the estimation error of μ* and σ roughly as 1/√r, but the cost grows linearly as r·(k+1). Larger p samples the input space more finely yet shrinks Δ, so finite-difference noise becomes a concern. Replacing the random OAT trajectories with the maximised-spread design of Campolongo (2007) or Saltelli's radial design improves coverage at the same r and gives more stable estimates.
Three cases. (1) Discontinuous or threshold outputs: finite-difference EE explodes and σ becomes meaningless — smooth the output first or compute the indices with Sobol directly. (2) Strong interactions: μ and μ* diverge, sign information is destroyed, so use the Campolongo μ* variant (this tool already does). (3) Very large k (k>100): even r·(k+1) reaches thousands of runs, so group the factors first and use a coarse group-wise Morris, then a detailed within-group Morris on the surviving groups.
Real-world Applications
Crash CAE model calibration: In automotive crashworthiness, yield stress, hardening exponent, shell thickness, contact friction, damping and many other uncertain parameters easily reach a few dozen. Each run lasts 6-12 hours, so running Sobol directly takes weeks. The accepted recipe is to first run Morris with r=10 and k≈30 overnight, then push only the top 5-7 factors into Sobol. Remeasuring just these factors on the physical car also cuts the calibration budget significantly.
Climate and hydrology models with sparse observations: Surface energy balance and soil moisture models often run in regions with little ground truth, so parameter ranges are wide. Morris distinguishes "factors you can leave unobserved" from "factors whose observation accuracy drives the forecast spread", which directly informs where to invest your limited observation budget. Saltelli and co-authors explicitly recommend Morris-style screening for climate models.
Drug development PK/PD models: Population pharmacokinetic models become heavy once individual variability is included over dozens of variables. Morris is used to pick the few parameters whose between-subject variability really matters (clearance, volume of distribution, absorption rate), so that MCMC can fix the rest and run faster. FDA submission packages routinely contain Morris-based screening as a sensitivity step.
Control systems and robust design: For gain, time constants, delays and sensor noise in a control loop, Morris quickly highlights the parameters that drive robustness. Monte Carlo then runs only those, while the negligible factors stay at the median, slashing simulation count. Combined with Six Sigma DOE, Morris is also a great "pre-experiment to shrink the experiment".
Common Misconceptions and Pitfalls
The biggest pitfall is declaring a factor "irrelevant" from a small μ. The original Morris paper uses μ (signed mean), but when the elementary effect changes sign across the input space, positive and negative contributions cancel and μ collapses toward zero, hiding a strongly influential factor. Campolongo's μ* (absolute mean) fixes this, and this tool reports μ* as the primary metric. Modern libraries (SALib, UQLab) return μ* by default, but older code may still return μ — check the convention before drawing conclusions.
Second, "more trajectories means strictly more accuracy" is misleading. The estimation error does scale like 1/√r, but the gap between r=4 and r=10 dwarfs the gap between r=20 and r=50, and the cost is multiplied by (k+1). With r=50, k=20 you are already at 1050 runs. A pragmatic stopping rule is r=10-20, or stop when the top-3 ranking stops changing. Campolongo's maximised-spread trajectories deliver the same accuracy at a smaller r — try SALib's morris.sample(num_levels=p, optimal_trajectories=r).
Third, never treat a Morris score as a Sobol-style contribution share. μ* is the mean magnitude of the gradient, mathematically different from Sobol's variance-based decomposition. If a paper needs a number like "30% of the variance", that number must come from Sobol (or a PCE surrogate). Treat Morris results as a ranking and significance threshold, not as an absolute contribution. Also remember that Morris is unsuited to discontinuous or threshold outputs — tree-based methods such as SHAP can be more appropriate there.
How to Use
Set kNum (number of factors, typically 4–20 for screening problems like CFD mesh sensitivity or material property variation).
Define kRange as min/max bounds for each factor; the simulator generates r random trajectories through this space.
Specify rNum (repetitions, usually 10–100) and step size Δ to control sampling resolution and computational cost.
Configure pNum, pRange, aNum, aRange for parameter sweeps across your model outputs.
Run Morris screening; examine μ* (main effect magnitude) and σ (interaction variance) to rank factors.
Worked Example
Structural FEA model with 8 factors: material density (ρ: 7750–7850 kg/m³), Young's modulus (E: 190–210 GPa), plate thickness (t: 4–6 mm), mesh element size (h: 0.5–2 mm), load magnitude (F: 5–15 kN), boundary condition stiffness (k_bc: 1e5–1e7 N/m), damping ratio (ζ: 0.01–0.05), and solver convergence tolerance (tol: 1e-4–1e-2). Running r=20 trajectories with Δ=0.5 (normalized) and monitoring natural frequency output reveals: E exhibits μ*=45 Hz (dominant), t shows μ*=12 Hz (secondary), while mesh size yields μ*=2 Hz (negligible for this output). The simulator identifies E and t as screening factors; solver tolerance interactions with damping drive high σ values, warranting detailed analysis.
Practical Notes
Morris screening costs r·(k+1) model evaluations (low budget: 20 factors, 50 trajectories = 1050 runs versus Sobol requiring 10,000+).
Use μ* > mean threshold to classify "important" factors and eliminate insensitive inputs before expensive variance-based methods (Sobol, PCE).
High σ without high μ* signals factor interactions; useful for detecting nonlinear coupling (e.g., load × thickness in deflection).
Normalize all factor ranges to [0,1] to compare elementary effects across different units (GPa, mm, kN, °C).
For expensive simulators, reduce rNum to 5–10 and increase Δ (step size); screening still identifies top 2–3 influential factors reliably.