LiNGAM (direction from non-Gaussian noise)
LiNGAM finds the direction of every link when relationships are linear and the noise is not bell-shaped. How it works, ICA-LiNGAM versus DirectLiNGAM, its assumptions and how to check them.
In short
LiNGAM (Linear Non-Gaussian Acyclic Model) can orient every link, which methods such as PC and GES often cannot. It relies on one property of the data: the variation not explained by causes (the noise) is not bell-shaped.
Why non-Gaussian noise reveals direction
Suppose Y = 2·X + noise. Regress Y on X and the leftover is independent of X. Regress X on Y instead and the leftover is still tied to Y. With bell-shaped (Gaussian) noise both directions look the same, so the direction cannot be told. With skewed, flat or heavy-tailed noise, only the true direction leaves an independent leftover. LiNGAM uses that asymmetry for every link.
ICA-LiNGAM and DirectLiNGAM
| Variant | How it finds the order | In practice |
|---|---|---|
| ICA-LiNGAM | Independent component analysis (FastICA) of the whole table | The original method; can vary between runs on small data |
| DirectLiNGAM | Finds the most upstream variable one at a time with independence measures | Steadier; the usual first choice |
Both come from the lingam library and return a fully directed graph with a weight on each link (the size of the linear effect).
What they assume
- Linear relationships.
- Non-Gaussian noise on every variable.
- No hidden common causes.
- No feedback loops.
How to check the assumptions
- Plot related pairs: straight-line clouds are a good sign; curves are not.
- Look at histograms: skew, long tails or a flat shape are what LiNGAM needs. Counts, prices, durations and amounts are often skewed.
- If the noise is close to bell-shaped, LiNGAM still returns directions, but they are much less reliable. Prefer PC or GES and accept undirected links.
UCMT Labs' data check looks at linearity and noise shape on upload and may suggest DirectLiNGAM as the comparison method for linear, non-Gaussian data.
Practical tips
- Do not log-transform a skewed column just to make it look normal before running LiNGAM: the skew is the signal it uses. Transform only when the relationship itself is curved.
- Weights are in the units of the columns: compare them only between columns on the same scale.
- Compare with a method from another family; a direction both agree on is firmer.