Error: un residuo diminuto demuestra coeficientes fiables
«Ambos ajustes son casi exactos, así que sus coeficientes deben coincidir.»
X = np.array([[1., 1.], [1., 1.000001]])
a, b = np.array([1., 1.]), np.array([2., 0.])
y = X @ a
assert np.linalg.norm(X @ a - y) == 0
assert np.isclose(np.linalg.norm(X @ b - y), 1e-6)
assert np.isclose(np.linalg.norm(a - b), np.sqrt(2))
Los coeficientes difieren en unos 1.414, mientras que las predicciones difieren en apenas 0.000001. Las columnas casi dependientes lo hacen posible.
Inspecciona el condicionamiento y la sensibilidad de los coeficientes, no solo el ajuste. QR evita formar X.T @ X; no elimina la sensibilidad del problema.