code: def _compute_betas_gwr(y, x, wi):
      
      xT = (x * wi).T
      xtx = np.dot(xT, x)
      xtx_inv_xt = linalg.solve(xtx, xT)
      betas = np.dot(xtx_inv_xt, y)
      return betas, xtx_inv_xt
docs: compute MLE coefficients using iwls routine
  
      Methods: p189, Iteratively (Re)weighted Least Squares (IWLS),
      Fotheringham, A. S., Brunsdon, C., & Charlton, M. (2002).
      Geographically weighted regression: the analysis of spatially varying relationships.