The only differences between this class and `LinearModel` seem to be the `ravel` and constraining the `X` validation a bit more. I don't understand why this case needs to be distinguished, what cases require `ravel`, or why this class cannot merely wrap `LinearModel` to make the minor differences more apparent. Or is it more to do with this being a `Mixin` and that an `ABC`?