anscombe = [
(
np.array([10.0, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5]),
np.array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68]),
),
(
np.array([10.0, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5]),
np.array([9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74]),
),
(
np.array([10.0, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5]),
np.array([7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73]),
),
(
np.array([8.0, 8, 8, 8, 8, 8, 8, 19, 8, 8, 8]),
np.array([6.58, 5.76, 7.71, 8.84, 8.47, 7.04, 5.25, 12.50, 5.56, 7.91, 6.89]),
),
]
fits_a = [ajustar_ols(x_a, y_a) for x_a, y_a in anscombe]
tab = pd.DataFrame(
{
"conjunto": ["I", "II", "III", "IV"],
"beta0": [f["beta0"] for f in fits_a],
"beta1": [f["beta1"] for f in fits_a],
"MSE": [f["mse"] for f in fits_a],
"R2": [r2_score(y_a, f["yhat"]) for (x_a, y_a), f in zip(anscombe, fits_a)],
}
)
print(tab.round(3).to_string(index=False))
graficar_anscombe(
anscombe, fits_a,
"Misma pendiente, mismo MSE, cuatro historias. El diagrama no es opcional",
)