Um das von @cbeleites erwähnte Problem der numerischen Stabilität zu veranschaulichen, ist hier ein Beispiel von Simon Wood, wie man "bricht" lm(). Zuerst generieren wir einige einfache Daten und passen eine einfache quadratische Kurve an.
set.seed(1); n <- 100
xx <- sort(runif(n))
y <- .2*(xx-.5)+(xx-.5)^2 + rnorm(n)*.1
x <- xx+100
b <- lm(y ~ x+I(x^2))
plot(x,y)
lines(x, predict(b), col='red')

Aber wenn wir 900 zu X addieren, sollte das Ergebnis so ziemlich dasselbe sein, außer nach rechts verschoben, nein? Leider nicht...
X <- x + 900
B <- lm(y ~ X+I(X^2))
plot(X,y)
lines(X, predict(B), col='blue')

Bearbeiten , um den Kommentar von @Scortchi zu ergänzen. Wenn wir das von lm () zurückgegebene Objekt betrachten, sehen wir, dass der quadratische Term nicht geschätzt wurde und als NA angezeigt wird.
> B
Call:
lm(formula = y ~ X + I(X^2))
Coefficients:
(Intercept) X I(X^2)
-139.3927 0.1394 NA
Und tatsächlich, wie von @Scortchi vorgeschlagen, "bricht" es, wenn wir uns die Modellmatrix ansehen und versuchen, sie direkt zu lösen.
> X <- model.matrix(b) ## get same model matrix used above
> beta.hat <- solve(t(X)%*%X,t(X)%*%y) ## direct solution of ‘normal equations’
Error in solve.default(t(X) %*% X, t(X) %*% y) :
system is computationally singular: reciprocal condition number = 3.9864e-19
Allerdings lm()gibt mir keine Warnung oder Fehlermeldung anders als die NAs auf der I(X^2)Linie des summary(B)in R-3.1.1. Andere Algorithmen können natürlich auf unterschiedliche Weise mit unterschiedlichen Beispielen "gebrochen" werden.