Least squares, and the road not to take

The observation that cannot be removed

Removing a rank-one term from a Cholesky factor needs a rotation that is not orthogonal, and the number under its square root is 1 − h, where h is the leverage of the row being removed. The algorithm's breakdown condition and the statistician's warning are the same quantity, arrived at from opposite ends, and neither field states it in the other's language.

Worth reading first: A correction cheaper than the problem · The projection and the right angle · A factorisation with nothing to pivot for.

Adding a rank-one term to a Cholesky factor is easy and safe. A sequence of Givens rotations — orthogonal, each of them, and therefore each of them incapable of amplifying anything — takes R to the factor of RᵀR + xxᵀ in 2p² operations, and the result is as accurate as a fresh factorisation.

Removing one is a different problem, and the difference is not a matter of degree.

An orthogonal transformation preserves the Frobenius norm. Removing a term makes the matrix smaller. So no sequence of orthogonal transformations can perform a downdate, and the algorithm that does is built from rotations that are not orthogonal:

[ c  −s ]        with  c² − s² = 1   rather than   c² + s² = 1
[ −s  c ]

a hyperbolic rotation. It preserves a² − b² instead of a² + b², which is exactly what removing a term needs. And the property that made the orthogonal version safe — that ‖G‖ = 1, so nothing it touches can grow — is precisely the property it has given up. c and s are both unbounded.

The measurement

A 40×6 design matrix, with the leverage of its first row set rather than measured — the row is scaled until h takes a chosen value, so the axis is an input. The Gram matrix G = AᵀA is factorised; then aaᵀ is removed from it two ways.

h ‖R̄ᵀR̄ − (G − aaᵀ)‖ / ‖·‖, downdated refactorised κ(G − aaᵀ)
0.3 2.1·10⁻¹⁶ 1.2·10⁻¹⁶ 4.3
0.99 3.6·10⁻¹⁵ 1.6·10⁻¹⁶ 3.3
1 − 10⁻⁴ 8.0·10⁻¹³ 6.8·10⁻¹⁷ 4.0
1 − 10⁻⁷ 3.5·10⁻¹⁰ 1.8·10⁻¹⁶ 4.3

The fitted slope of the downdate against 1/(1 − h) is 1.04.

And the last column is the finding. The matrix being produced has a condition number of about four at every row of that table. It is not a hard matrix. A fresh factorisation of it is exact to rounding at every leverage. The difficulty belongs entirely to the route.

The number under the square root

The mechanism is one line of algebra and it is the reason this essay exists.

Downdating G by aaᵀ begins by solving Rᵀp = a. The first hyperbolic rotation’s coefficients are 1/√(1 − pᵀp), and

pᵀp  =  ‖R⁻ᵀa‖²  =  aᵀ(RᵀR)⁻¹a  =  aᵀ(AᵀA)⁻¹a  =  h

which is the leverage of the row a — the diagonal of the hat matrix H = A(AᵀA)⁻¹Aᵀ, a quantity every regression package computes and every regression textbook plots.

So the algorithm’s amplification factor is 1/√(1 − h), its breakdown condition is h ≥ 1, and both are the statistician’s warning written in a different alphabet. A leverage near one means this observation is the only thing determining some direction of the fit; the downdate says the same thing by having no real square root.

Neither field states it in the other’s language. Numerical analysis texts derive the downdate and observe that it fails when the result is not positive definite. Statistics texts define leverage, prove it sums to p, and warn about points near one. They are the same number and the two derivations never meet.

The statistic that is the same downdate

Leave-one-out cross-validation asks: refit without observation i, and how badly does the fit predict it? Doing that honestly is m refits. The closed form everybody uses instead is

e₍ᵢ₎  =  eᵢ / (1 − hᵢ)

— one division per observation, and it is a rank-one downdate written as arithmetic. Every package that reports a studentised or deleted residual is running this.

It agrees with refitting. Measured against forty actual refits on a forty-observation problem, the worst relative disagreement is 1.3·10⁻¹². That agreement is what licenses the shortcut, and it is worth having as a measurement rather than as a derivation, because the derivation is exact and the question is arithmetic.

And the divisor is 1 − h. At h = 0.999 the closed form multiplies the residual by a thousand, and the thousand is correct — that observation really does drag the fit onto itself, and removing it really does move the prediction that far. What is not correct at that point is any digit past the fourth, because the numerator was computed against a fit that observation dominated.

The widest box a uniqueness proof is available forVerified half-width against the distance between two roots, both axes logarithmic. The measured widths are 0.05, 0.005, 5·10⁻⁴, 5·10⁻⁵ at separations of 0.1, 0.01, 0.001, 10⁻⁴ — a ratio of 0.5000 at every one of them. The operator verifies exactly up to the point where the box would reach the second root, and a box containing both is refused.10⁻⁴10⁻³10⁻²10⁻¹10⁻⁴10⁻³10⁻²10⁻¹distance between the two rootswidest verified half-widththe separationverified widthuniqueness is a claim about a regionwidth ÷ separation at δ = 0.10.5width ÷ separation at δ = 0.010.5width ÷ separation at δ = 0.0010.5verified up to the second rootand refused past it
Fig. 1 And the width of the answers a fit is consistent with. Removing the observation that was holding a direction down widens this, which is what the divisor is reporting.

Why the closed form is everywhere and the downdate is not

There is an asymmetry between the two halves of this essay worth accounting for. The leave-one-out formula is in every statistics package; the hyperbolic downdate is in LINPACK, in a handful of signal processing libraries, and almost nowhere else.

The reason is that the two are doing different amounts of work. eᵢ/(1 − hᵢ) produces one number — what the fit would have predicted at observation i without it — and needs the leverages, which cost one triangular solve each and are usually wanted anyway. The downdate produces a whole factor, which is what a caller needs when the reduced problem is going to be solved again: a sliding window, a recursive least squares with a forgetting factor, an active-set method releasing a constraint.

So the closed form is the cheap special case of the general operation, and it is the one that has a denominator a user can look at. The downdate has the same denominator buried inside a square root inside a loop, where nothing reports it.

That is worth naming as a general habit rather than a fact about these two routines. A shortcut whose dangerous quantity appears in the output is safer than one whose dangerous quantity appears in an intermediate, even when the arithmetic is identical — because a caller can see the first and cannot see the second. eᵢ/(1 − hᵢ) at h = 0.999 announces itself by returning a residual a thousand times the others. A downdate at h = 0.999 returns a factor that looks like every other factor.

What the solver reported, and what it achievedFinal relative residual and final relative error against the working precision, on a logarithmic vertical axis. The residual sits at the stopping tolerance at every precision — the method converged, by every test available to it. The error runs from 4.91·10⁻¹³ at 53 bits to 0.00501 at 8, tracking the unit roundoff, which is drawn beside it.614223038465410⁻¹³10⁻¹⁰10⁻⁷10⁻⁴working significand bitsrelative sizeerrorresidualuthe gap the solver cannot seeerror ÷ residual at 24 bits2.3·10⁵error ÷ residual at 16 bits5.2·10⁷error ÷ residual at 8 bits3.9·10¹⁰every convergence test passesand the answer is wrong in proportion to u
Fig. 2 The general shape of that habit. A quantity that would have warned you, computed and discarded, is the most expensive kind of intermediate there is.

The three quantities that agree, and one that does not

Three routes to h, sharing no arithmetic:

The triangular solve. ‖R⁻ᵀa‖², from a forward substitution against the Cholesky factor. The inverse. aᵀG⁻¹a, forming G⁻¹ explicitly — one of the legitimate uses of an inverse, since the entries are the answer, and one where forming a Gram matrix has already been paid for. The hat matrix. The (i, i) entry of A(AᵀA)⁻¹Aᵀ, from the projection itself.

They agree to 10⁻⁸ at every leverage tested, which is the site’s two routes habit applied to a quantity that has three.

And one that does not agree, which is the sum rule: Σhᵢ = p, exactly. Not approximately — the trace of a projection onto a p-dimensional subspace is p, and the measurement returns 5.999999999999998 for a six-column fit. Adding a column adds exactly one unit of leverage to be shared out, whatever the data looks like, so the average leverage is p/m and depends on nothing.

That last fact is worth pausing on because it says what leverage is. The response y does not appear in it anywhere. Leverage is a property of the design — of where the observations were taken — and not of what was measured there.

When the downdate simply fails, which it does not

The obvious expectation is that past a leverage the arithmetic can distinguish from one, a step’s discriminant a² − b² comes out negative and the algorithm stops — an honest outcome, better than a wrong answer, and the behaviour a caller can act on.

It does not happen. Swept from h = 0.9 down to 1 − h = 10⁻¹⁵, the discriminant stays positive at every step at every leverage, and the routine reports success every time:

1 − h reports downdate residual refactorisation κ(G − aaᵀ)
10⁻¹ success 4.61·10⁻¹⁶ 8.08·10⁻¹⁷ 4.32
10⁻⁴ success 2.85·10⁻¹³ 8.33·10⁻¹⁷ 4.32
10⁻⁸ success 1.68·10⁻⁹ 8.08·10⁻¹⁷ 4.32
10⁻¹⁰ success 2.54·10⁻⁷ 1.01·10⁻¹⁶ 4.32
10⁻¹² success 3.83·10⁻⁵ 8.33·10⁻¹⁷ 4.32
9.9·10⁻¹⁵ success 2.01·10⁻³ 1.01·10⁻¹⁶ 4.33
8.9·10⁻¹⁶ success 4.83·10⁻² 1.47·10⁻¹⁶ 4.87

The last row is a factor wrong in the second digit, returned without complaint, on a matrix a fresh Cholesky handles to 10⁻¹⁶. There is no refusal anywhere on the sweep, so there is no left-hand half of the refuse-or-lie picture to be in.

The mechanism is that the breakdown test is local and the amplification is global. The discriminant at step k compares two scalars, R[k][k] against x[k]. The quantity that decides the accuracy is 1 − ‖R⁻ᵀa‖², a sum over all p components. A vector can have norm within 10⁻¹⁵ of one with every individual component comfortably inside its own diagonal — so every step passes its own test, each contributes a modest amplification, and the product reaches 10⁷.

So the danger is not a band just before a refusal. It is twelve decades of leverage, from about 1 − h = 10⁻⁴ down, in which the routine answers, the answer degrades by one digit per decade, and nothing in the output distinguishes any of it from the h = 0.3 case. That is the essay’s own better sentence, four sections earlier, arriving as a measurement: a downdate at h = 0.999 returns a factor that looks like every other factor, and it turns out to be true all the way down.

There is one genuine boundary and it belongs to the problem. At 1 − h = 1.1·10⁻¹⁶ the refactorisation fails too, because G − aaᵀ is by then numerically indefinite and the removal really is not well-posed. Everything above it is a matrix with a condition number of four that one route returns to rounding and the other does not.

assertTheDowndateDoesNotRefuseItAnswersWrongly holds the whole sweep: that every leverage reports success, that the fresh factorisation is exact at every one of them, that the condition number stays a single digit throughout, that the worst residual is ten orders above the route it replaces, and that the growth is the 1/(1 − h) the first rotation predicts. The one thing it cannot hold is a refusal, because there is none to hold.

What follows for the guard

The measurement changes what a caller has to do, and makes the advice at the end of this essay load-bearing rather than prudent.

If the routine refused near h = 1, a caller could treat the refusal as the guard: attempt the downdate, catch the failure, refactorise. That is the shape most numerical software is written in, and it is why the discriminant test exists at all. It does not work here, because the failure never arrives — so the leverage has to be computed before the downdate, not inferred from it, and the threshold has to be chosen rather than discovered.

Choosing it is straightforward once the table above exists. The downdate loses about one digit per decade of 1 − h, so a caller wanting k digits of the reduced factor needs 1 − h above 10^(k−16). Ten digits is 1 − h > 10⁻⁶, which on a forty-observation six-column fit is almost every row; the guard rejects the handful that are nearly determining the fit by themselves, and for those the honest answer is the refactorisation the essay recommends. One triangular solve buys the number that decides.

That is a better arrangement than a refusal would have been, and it is worth saying so rather than treating it as a repair. A refusal is a verdict computed by the routine on its own terms, with a threshold nobody chose; a leverage is a number the caller can look at and set a policy against, in the same units the statistician already uses. The defect is not that the guard is missing. It is that the routine looks as though it has one.

What to do instead, and what it costs

The alternative is a refactorisation, and the cost is worth being exact about because it is smaller than it looks.

Downdating a p×p factor is 2p² operations. Refactorising G − aaᵀ from the Gram matrix is p³/3 — at p = 6 that is 72 against 72, which is to say nothing at all. The saving only becomes real when the Gram matrix itself has to be reassembled from a large A, at mp² operations — the same accounting a constraint imposed as a weight has to do when it changes the design, and that is a saving of a factor of m rather than of p.

So for a small model on a large dataset — the usual case in a sliding-window or leave-one-out setting — the downdate is worth having, and it is worth having with a guard: compute the leverage first. It costs one triangular solve, it is a number worth looking at for its own sake, and it decides whether the shortcut is safe before the shortcut is taken.

Where the leverage is high, the honest options are to refactorise, or to notice that the answer being asked for is a fit with one direction supported by a single observation, and that the numerical question is the smaller of the two problems.

Downdating a Cholesky factor against refactorising it, as the removed row's leverage approaches oneA rank-one term is removed from a 3×3 Gram matrix by hyperbolic rotations and, separately, by factorising the downdated matrix from scratch. The downdate's residual rises from 2·10⁻¹⁶ at h = 0.3 to 4.6·10⁻¹⁰ at h = 1 − 10⁻⁷, a slope of 0.96 against 1/(1 − h). The refactorisation is flat at 0, and the matrix both are producing has a condition number of 2.3 at every point on the axis — so the difficulty belongs to the route and not to the answer.110¹10²10³10⁴10⁵10⁶10⁷10⁻¹⁷10⁻¹⁶10⁻¹⁵10⁻¹⁴10⁻¹³10⁻¹²10⁻¹¹10⁻¹⁰10⁻⁹10⁻⁸1/(1 − h), the leverage of the removed row‖R̄ᵀR̄ − (G − aaᵀ)‖ / ‖G − aaᵀ‖downdatedrefactorisedat h = 1 − 10⁻⁷κ of the downdated matrix2.3κ of the matrix downdated1.3·10⁷rotation's amplification557downdate residual4.6·10⁻¹⁰a hyperbolic rotation is not orthogonaland that is exactly what it is for
Fig. 3 Three columns. The downdate runs from 2·10⁻¹⁶ to 4.6·10⁻¹⁰ as the leverage approaches one; refactorisation is flat at exactly 0; the fitted slope is 0.958.

Refactorisation returning exactly zero at three columns is the cleanest possible statement of the comparison, and it is not a fluke of that width — every other width puts it at the rounding level:

Downdating a Cholesky factor against refactorising it, as the removed row's leverage approaches oneA rank-one term is removed from a 4×4 Gram matrix by hyperbolic rotations and, separately, by factorising the downdated matrix from scratch. The downdate's residual rises from 1.9·10⁻¹⁶ at h = 0.3 to 6.9·10⁻¹⁰ at h = 1 − 10⁻⁷, a slope of 1.13 against 1/(1 − h). The refactorisation is flat at 8.5·10⁻¹⁷, and the matrix both are producing has a condition number of 3.5 at every point on the axis — so the difficulty belongs to the route and not to the answer.110¹10²10³10⁴10⁵10⁶10⁷10⁻¹⁷10⁻¹⁶10⁻¹⁵10⁻¹⁴10⁻¹³10⁻¹²10⁻¹¹10⁻¹⁰10⁻⁹10⁻⁸1/(1 − h), the leverage of the removed row‖R̄ᵀR̄ − (G − aaᵀ)‖ / ‖G − aaᵀ‖downdatedrefactorisedat h = 1 − 10⁻⁷κ of the downdated matrix3.5κ of the matrix downdated2.1·10⁷rotation's amplification657downdate residual6.9·10⁻¹⁰a hyperbolic rotation is not orthogonaland that is exactly what it is for
Fig. 4 Four: 1.9·10⁻¹⁶ to 6.9·10⁻¹⁰, refactorisation at 8.5·10⁻¹⁷, slope 1.125.

The slope is the claim rather than the size of the error, so it is worth reading down the whole slider rather than off two frames. Two more widths, and the middle of the range:

Downdating a Cholesky factor against refactorising it, as the removed row's leverage approaches oneA rank-one term is removed from a 6×6 Gram matrix by hyperbolic rotations and, separately, by factorising the downdated matrix from scratch. The downdate's residual rises from 2.1·10⁻¹⁶ at h = 0.3 to 3.5·10⁻¹⁰ at h = 1 − 10⁻⁷, a slope of 1.04 against 1/(1 − h). The refactorisation is flat at 8.1·10⁻¹⁷, and the matrix both are producing has a condition number of 4.3 at every point on the axis — so the difficulty belongs to the route and not to the answer.110¹10²10³10⁴10⁵10⁶10⁷10⁻¹⁷10⁻¹⁶10⁻¹⁵10⁻¹⁴10⁻¹³10⁻¹²10⁻¹¹10⁻¹⁰10⁻⁹10⁻⁸1/(1 − h), the leverage of the removed row‖R̄ᵀR̄ − (G − aaᵀ)‖ / ‖G − aaᵀ‖downdatedrefactorisedat h = 1 − 10⁻⁷κ of the downdated matrix4.3κ of the matrix downdated9.3·10⁶rotation's amplification344downdate residual3.5·10⁻¹⁰a hyperbolic rotation is not orthogonaland that is exactly what it is for
Fig. 5 Six columns, the width the essay’s own numbers are quoted at: 2.1·10⁻¹⁶ to 3.5·10⁻¹⁰, slope 1.038, and κ of the answer 4.3.

Six is where the essay’s headline numbers come from, so the two widths either side of it are the ones that say whether the headline is about the method or about the width it was measured at:

Downdating a Cholesky factor against refactorising it, as the removed row's leverage approaches oneA rank-one term is removed from a 8×8 Gram matrix by hyperbolic rotations and, separately, by factorising the downdated matrix from scratch. The downdate's residual rises from 2.7·10⁻¹⁶ at h = 0.3 to 4.6·10⁻¹⁰ at h = 1 − 10⁻⁷, a slope of 1.02 against 1/(1 − h). The refactorisation is flat at 1.5·10⁻¹⁶, and the matrix both are producing has a condition number of 4.9 at every point on the axis — so the difficulty belongs to the route and not to the answer.110¹10²10³10⁴10⁵10⁶10⁷10⁻¹⁷10⁻¹⁶10⁻¹⁵10⁻¹⁴10⁻¹³10⁻¹²10⁻¹¹10⁻¹⁰10⁻⁹10⁻⁸1/(1 − h), the leverage of the removed row‖R̄ᵀR̄ − (G − aaᵀ)‖ / ‖G − aaᵀ‖downdatedrefactorisedat h = 1 − 10⁻⁷κ of the downdated matrix4.9κ of the matrix downdated2·10⁷rotation's amplification399downdate residual4.6·10⁻¹⁰a hyperbolic rotation is not orthogonaland that is exactly what it is for
Fig. 6 Eight: slope 1.022, and the answer’s own condition number has risen to 4.9 while the refactorisation stays at 1.5·10⁻¹⁶.
Downdating a Cholesky factor against refactorising it, as the removed row's leverage approaches oneA rank-one term is removed from a 10×10 Gram matrix by hyperbolic rotations and, separately, by factorising the downdated matrix from scratch. The downdate's residual rises from 1.7·10⁻¹⁶ at h = 0.3 to 6·10⁻¹⁰ at h = 1 − 10⁻⁷, a slope of 0.96 against 1/(1 − h). The refactorisation is flat at 1.3·10⁻¹⁶, and the matrix both are producing has a condition number of 6.7 at every point on the axis — so the difficulty belongs to the route and not to the answer.110¹10²10³10⁴10⁵10⁶10⁷10⁻¹⁷10⁻¹⁶10⁻¹⁵10⁻¹⁴10⁻¹³10⁻¹²10⁻¹¹10⁻¹⁰10⁻⁹10⁻⁸1/(1 − h), the leverage of the removed row‖R̄ᵀR̄ − (G − aaᵀ)‖ / ‖G − aaᵀ‖downdatedrefactorisedat h = 1 − 10⁻⁷κ of the downdated matrix6.7κ of the matrix downdated3.5·10⁷rotation's amplification377downdate residual6·10⁻¹⁰a hyperbolic rotation is not orthogonaland that is exactly what it is for
Fig. 7 The same measurement with ten columns rather than six. The slope does not move: it is a statement about 1/(1 − h) and not about the size of the model. Measured, 0.963.
columns downdate, worst refactorisation κ of the answer fitted slope flops, downdate vs refactor
3 4.6·10⁻¹⁰ 0 2.3 0.958 18 vs 369
4 6.9·10⁻¹⁰ 8.5·10⁻¹⁷ 3.5 1.125 32 vs 661
6 3.5·10⁻¹⁰ 8.1·10⁻¹⁷ 4.3 1.038 72 vs 1,512
8 4.6·10⁻¹⁰ 1.5·10⁻¹⁶ 4.9 1.022 128 vs 2,731
10 6.0·10⁻¹⁰ 1.3·10⁻¹⁶ 6.7 0.963 200 vs 4,333

The slope is one, and now it is one five times. 0.958, 1.125, 1.038, 1.022 and 0.963 — a mean of 1.02 with the extremes 12% either side, across a factor of three in the number of columns. The error’s growth is exactly first order in 1/(1 − h), which is the statement the caption above makes and which two frames could only suggest.

And the answer is well conditioned throughout, which is what makes the result a defect rather than a difficulty. κ of the answer reads 2.3, 3.5, 4.3, 4.9 and 6.7 — single figures at every width. The downdate loses six orders of magnitude on a problem whose conditioning would forgive it nothing, so the loss belongs to the algorithm and not to the question. The refactorisation on the same problems sits at 0 to 1.5·10⁻¹⁶.

The trade the essay is about turns out to be a fixed one. The downdate costs 18, 32, 72, 128 and 200 flops against 369, 661, 1,512, 2,731 and 4,333 — so it is 20.5, 20.7, 21.0, 21.3 and 21.7 times cheaper, rising very slowly. About twenty-one times cheaper at every width, and about six orders of magnitude worse near leverage one at every width. Neither half of that bargain moves with the model’s size, which is the useful form of the recommendation: a code choosing between them is choosing between two fixed numbers and can decide once.

The mechanism, twice

This is the second algorithm in two essays whose error is governed by the object it routed through rather than by the problem it answers, and the two share no arithmetic.

Sherman–Morrison’s four quantities are solves against A, so its error is κ(A)u while the answer’s condition number is one. A hyperbolic downdate’s rotations are built from R, so its error is proportional to 1/(1 − h) — a property of the original Gram matrix and the row being removed — while the matrix it produces has a condition number of four.

One formula, one sweep of rotations; one governed by a condition number, one by a leverage. The general statement is the phase’s second finding: where a method reaches its answer through an intermediate, the intermediate’s conditioning is what it charges, and the answer’s conditioning is what a reader checks.

The sliding window, which is a downdate at every step

The setting where downdating is not an occasional operation but the whole algorithm is recursive least squares, and it is worth describing because it turns the leverage question from a diagnostic into a design parameter.

A recursive least-squares filter maintains a fit over the most recent w observations. At each step one row arrives and one leaves: an update and a downdate, both rank one, both at 2p² operations against a refactorisation’s mp². For a filter running at kilohertz over a model of six parameters, that is the difference between running and not.

The exponentially weighted variant is the same thing done continuously. Instead of dropping a row, every existing row is multiplied by √λ with λ slightly below one — a forgetting factor — so the influence of old data decays geometrically. Written as a factorisation update it is R ← √λ R followed by an ordinary Givens update for the new row, and there is no downdate in it at all. The hyperbolic rotations are gone, the algorithm is orthogonal throughout, and the whole of this essay’s difficulty disappears.

What it costs is that the window is soft. The effective number of observations is 1/(1 − λ), which is a statement about a geometric weighting rather than a count, and a filter that must forget an exact number of samples cannot use it. So the choice between a sliding window and a forgetting factor is a choice between a hard boundary computed unstably and a soft one computed stably — which is a modelling decision being made by a numerical constraint, and worth recognising as one.

And the leverage is the design parameter. In a sliding window the row about to leave has a leverage determined by how much of the fit it was holding up, and a window short enough that individual rows carry high leverage is a window in which the downdate is unstable and the fit is dominated by individual observations. Those are the same statement. A filter whose downdate is in trouble is a filter whose window is too short for its model, and the numerical diagnostic and the statistical one agree because they are the same number.

What is worth carrying

An orthogonal sweep cannot make a matrix smaller, and the sweep that can has no bound on its coefficients. That is not an accident of one algorithm; it is what removing a term costs, and every downdating method pays it in some form.

The breakdown condition is the leverage, exactly, which means the diagnostic already exists and is already plotted in a different field. Compute h before downdating; it is one triangular solve and it is the number that decides.

A dangerous quantity in the output beats the same quantity in an intermediate. The leave-one-out formula divides by 1 − h where a reader can see it; the downdate takes its square root inside a loop where nobody does. Same number, same danger, and only one of them announces itself.

And a leverage near one is not ill-conditioning of the answer. The downdated matrix has a condition number of four at every leverage measured here. What a high leverage says is that one observation was holding a direction of the fit up, which is a statement about the design and a much more interesting one than a numerical warning.

The next essay leaves updates behind and asks a question the phase has been circling: what is a function of a matrix, and is the definition a method? A function of a matrix is not a function of its entries.

What links here

Computed from the collection, not written here: the essays that point at this one.

Shares its objects with

Essays that name at least two of the same things, and that neither author linked.

Named objects

A flat tag is an object no other essay names yet.

CholeskyCondition numberGivens rotationLeast-squaresLeverageLow-rank updateMatrix inverseOrthogonality