def METHOD_NAME(self, method='pinv'):
    """
    Minimal implementation of WLS optimized for performance.
    Parameters
    ----------
    method : str, optional
        Method to use to estimate parameters.  "pinv", "qr" or "lstsq"
          * "pinv" uses the Moore-Penrose pseudoinverse
             to solve the least squares problem.
          * "qr" uses the QR factorization.
          * "lstsq" uses the least squares implementation in numpy.linalg
    Returns
    -------
    results : namedtuple
        Named tuple containing the fewest terms needed to implement
        iterative estimation in models. Currently
          * params : Estimated parameters
          * fittedvalues : Fit values using original data
          * resid : Residuals using original data
          * model : namedtuple with one field, weights
          * scale : scale computed using weighted residuals
    Notes
    -----
    Does not perform and checks on the input data
    See Also
    --------
    statsmodels.regression.linear_model.WLS
    """
    if method == 'pinv':
        pinv_wexog = np.linalg.pinv(self.wexog)
        params = pinv_wexog.dot(self.wendog)
    elif method == 'qr':
        Q, R = np.linalg.qr(self.wexog)
        params = np.linalg.solve(R, np.dot(Q.T, self.wendog))
    else:
        params, _, _, _ = np.linalg.lstsq(self.wexog, self.wendog,
                                          rcond=-1)
    return self.results(params)