Conditioning a Gaussian graph

Pin a node, and a Schur complement ripples through the network.

The point: fixing a variable in a multivariate Gaussian at a known value and asking what the others' new mean is — conditioning — is exactly the same operation as taking a Schur complement of the precision matrix. Below, that operation is a spring network: pin a bead at a value, let go, and wherever the rest of the network comes to rest is the conditional mean. No matrix algebra is running — the springs are doing the elimination.

Six beads on frictionless vertical rods, joined by springs along a chain — plus one shortcut edge from node 1 to node 4. Both ends (0 and 5) start pinned (red), so the four beads in between are already showing you a real conditional mean, not an arbitrary resting point. Drag any bead and it pins wherever you drop it — that is you asserting a new conditioning value. Tap a bead without dragging to unpin it (or pin it in place); Unpin all releases every constraint, and the whole network relaxes toward the faint dashed “flat prior” line — a very weak default belief every node has, needed only so the system has a well-defined rest state when nothing else is fixed.

With both ends still pinned, watch node 2 in the middle as you drag node 0: it moves — correlation propagates along every path, attenuated by distance and by the shortcut. Now pin node 1 and drag it: node 4 twitches immediately, skipping straight past nodes 2 and 3 — conditioning on a graph is not local the way the chain smoother was, where influence only ever passed to an immediate neighbour.

Switch to the star topology and the same mechanics tell a collaborative story: node 0 is a shared hub, and nodes 1–5 are five independent observers, each with their own spring of stiffness $\phi_i$ to the hub. Two spokes start pinned at different values, and the hub already sits at their precision-weighted average — the fusion demo, generalised to five voices instead of two. Pin a third spoke, or unpin one mid-way through, and watch the consensus shift as that vote is added or withdrawn.

pinned: none click a bead to pin/unpin; drag to move it

This is the multivariate generalisation the introduction promises in step 6: “pinning part of a spring network to the wall” is a Schur complement of the joint precision matrix, and the sister site schur.microprediction.org works out the block version of exactly this move for hierarchical portfolio allocation.