https://machinelearning.pythonprogramminghelp.com/how-to-build-generalized-least-squares/