コード例 #1
0
ファイル: mixedmodel.py プロジェクト: jameshicks/pydigree
    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()
コード例 #2
0
ファイル: mixedmodel.py プロジェクト: y-chai/pydigree
    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()
コード例 #3
0
ファイル: mixedmodel.py プロジェクト: y-chai/pydigree
    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)
コード例 #4
0
ファイル: mixedmodel.py プロジェクト: jameshicks/pydigree
    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)
コード例 #5
0
    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)