def loglikelihood(self, restricted=False, vcs=None, vmat=None): """ Returns the loglikelihood of the model with the current model parameters :returns: loglikelihood :rtype: float """ if self.mle is not None and vcs is None and vmat is None: if restricted: return self.mle.restricted_loglikelihood else: return self.mle.full_loglikelihood if vcs is not None: V = self._makeV(vcs=vcs) elif vmat is not None: V = vmat elif self.V is None: self.V = self._makeV() else: V = self.V if not restricted: return full_loglikelihood(self.y, V, self.X, self.beta) else: return REML(self).loglikelihood()
def loglikelihood(self, restricted=False, vcs=None, vmat=None): """ Returns the loglikelihood of the model with the current model parameters :returns: loglikelihood :rtype: float """ if self.mle is not None and vcs is None and vmat is None: if restricted: return self.mle.restricted_loglikelihood else: return self.mle.full_loglikelihood if vcs is not None: V = self._makeV(vcs=vcs) elif vmat is not None: V = vmat elif self.V is None: self.V = self._makeV() else: V = self.V if not restricted: return full_loglikelihood(self.y, V, self.X, self.beta) else: return REML(self).loglikelihood()
def maximize(self, method="Average Information", restricted=False, starts=None, verbose=False): """ Finds the optimal values for variance components in the model using provided optimization methods. :param restricted: Uses REML estimation :param starts: starting values for the variance components :param method: maximization method :param verbose: output maximization progress :type restricted: bool :type method: string :type starts: iterable of numerics :type verbose: bool: """ if (isinstance(self.mle, MLEResult) and self.maximized.method == method): return self.fit_model() if starts is None: starts = self._starting_variance_components() likefunc = REML if restricted else ML llik = likefunc(self, info=method) llik.set_parameters(starts) # if method.lower().startswith('minque'): # mle = minque(self, value=0, verbose=verbose, starts=starts) if method.lower() in {'em', 'emreml', 'expectation-maximization'}: mle = expectation_maximization(self, llik, verbose=verbose) elif method.lower() == 'grid': mle = grid_search(self, llik, nevals=20, oob=False) else: mle = newtonlike_maximization(self, llik, verbose=verbose) self.mle = mle self.set_variance_components(mle.parameters) self.fit_model() # Get the full loglikelihood at the REML maximimum so we # can use it later self.mle.full_loglikelihood = full_loglikelihood( self.y, self.V, self.X, self.beta)
def maximize(self, method="Average Information", restricted=False, starts=None, verbose=False): """ Finds the optimal values for variance components in the model using provided optimization methods. :param restricted: Uses REML estimation :param starts: starting values for the variance components :param method: maximization method :param verbose: output maximization progress :type restricted: bool :type method: string :type starts: iterable of numerics :type verbose: bool: """ if (isinstance(self.mle, MLEResult) and self.maximized.method == method): return self.fit_model() if starts is None: starts = self._starting_variance_components() likefunc = REML if restricted else ML llik = likefunc(self, info=method) llik.set_parameters(starts) # if method.lower().startswith('minque'): # mle = minque(self, value=0, verbose=verbose, starts=starts) if method.lower() in {'em', 'emreml', 'expectation-maximization'}: mle = expectation_maximization(self, llik, verbose=verbose) elif method.lower() == 'grid': mle = grid_search(self, llik, nevals=20, oob=False) else: mle = newtonlike_maximization(self, llik, verbose=verbose) self.mle = mle self.set_variance_components(mle.parameters) self.fit_model() # Get the full loglikelihood at the REML maximimum so we # can use it later self.mle.full_loglikelihood = full_loglikelihood(self.y, self.V, self.X, self.beta)
def maximize(self, method="Average Information", restricted=False, starts=None, verbose=False): """ Finds the optimal values for variance components of the model by restricted maximum likelihood estimation. """ if (isinstance(self.mle, MLEResult) and self.maximized.method == method): return self.fit_model() if starts is None: starts = self._starting_variance_components() likefunc = REML if restricted else ML llik = likefunc(self, info=method) llik.set_parameters(starts) if method.lower().startswith('minque'): mle = minque(self, value=0, verbose=verbose, starts=starts) elif method.lower() in {'em', 'emreml', 'expectation-maximization'}: mle = expectation_maximization(self, llik, verbose=verbose) elif method.lower() == 'grid': mle = grid_search(self, llik, nevals=20, oob=False) else: mle = newtonlike_maximization(self, llik, verbose=verbose) self.mle = mle self.set_variance_components(mle.parameters) self.fit_model() # Get the full loglikelihood at the REML maximimum so we # can use it later self.mle.full_loglikelihood = full_loglikelihood(self.y, self.V, self.X, self.beta)