예제 #1
0
    def _cumulative_hazard(self, params, T, Xs):
        mu_params = params["mu_"]
        mu_ = np.dot(Xs["mu_"], mu_params)

        sigma_params = params["sigma_"]
        sigma_ = np.exp(np.dot(Xs["sigma_"], sigma_params))
        Z = (np.log(T) - mu_) / sigma_
        return -norm.logsf(Z)
예제 #2
0
    def _cumulative_hazard(self, params, T, Xs):

        sigma_2 = np.exp(np.dot(Xs["sigma_"], params["sigma_"]))
        sigma_ = np.sqrt(sigma_2)
        mu_ = np.dot(Xs["mu_"], params["mu_"])

        Z = (np.log(T) - mu_) / sigma_
        return -norm.logsf(Z)
예제 #3
0
    def _cumulative_hazard(
        self, params: Union[DictBox, Dict[str, ndarray]], T: Union[float, ndarray], Xs: DataframeSlicer
    ) -> Union[ndarray, ArrayBox]:
        mu_params = params["mu_"]
        mu_ = np.dot(Xs["mu_"], mu_params)

        sigma_params = params["sigma_"]
        sigma_ = safe_exp(np.dot(Xs["sigma_"], sigma_params))
        Z = (np.log(T) - mu_) / sigma_
        return -norm.logsf(Z)
예제 #4
0
    def _log_hazard(self, params, T, Xs):
        mu_params = params["mu_"]
        mu_ = np.dot(Xs["mu_"], mu_params)

        sigma_params = params["sigma_"]

        log_sigma_ = np.dot(Xs["sigma_"], sigma_params)
        sigma_ = np.exp(log_sigma_)
        Z = (np.log(T) - mu_) / sigma_

        return norm.logpdf(Z) - log_sigma_ - np.log(T) - norm.logsf(Z)
예제 #5
0
    def _log_hazard(self, params: DictBox, T: Union[float, ndarray], Xs: DataframeSlicer) -> ArrayBox:
        mu_params = params["mu_"]
        mu_ = np.dot(Xs["mu_"], mu_params)

        sigma_params = params["sigma_"]

        log_sigma_ = np.dot(Xs["sigma_"], sigma_params)
        sigma_ = safe_exp(log_sigma_)
        Z = (np.log(T) - mu_) / sigma_

        return norm.logpdf(Z) - log_sigma_ - np.log(T) - norm.logsf(Z)
예제 #6
0
    def _cumulative_hazard(self, params, times):
        mu_, ln_sigma_, lambda_ = params

        sigma_ = safe_exp(ln_sigma_)
        Z = (log(times) - mu_) / sigma_
        ilambda_2 = 1 / lambda_**2
        clipped_exp = np.clip(safe_exp(lambda_ * Z) * ilambda_2, 1e-300, 1e20)

        if lambda_ > 0:
            v = -gammainccln(ilambda_2, clipped_exp)
        elif lambda_ < 0:
            v = -gammaincln(ilambda_2, clipped_exp)
        else:
            v = -norm.logsf(Z)
        return v
예제 #7
0
 def _log_hazard(self, params, times):
     mu_, ln_sigma_, lambda_ = params
     ilambda_2 = 1 / lambda_**2
     Z = (log(times) - mu_) / safe_exp(ln_sigma_)
     clipped_exp = np.clip(safe_exp(lambda_ * Z) * ilambda_2, 1e-15, 1e20)
     if lambda_ > 0:
         v = (log(lambda_) - log(times) - ln_sigma_ - gammaln(ilambda_2) +
              -2 * log(lambda_) * ilambda_2 - clipped_exp + Z / lambda_ -
              gammainccln(ilambda_2, clipped_exp))
     elif lambda_ < 0:
         v = (log(-lambda_) - log(times) - ln_sigma_ - gammaln(ilambda_2) -
              2 * log(-lambda_) * ilambda_2 - clipped_exp + Z / lambda_ -
              gammaincln(ilambda_2, clipped_exp))
     else:
         v = norm.logpdf(Z, loc=0,
                         scale=1) - ln_sigma_ - log(times) - norm.logsf(Z)
     return v
예제 #8
0
 def _log_hazard(self, params, times):
     mu_, sigma_ = params
     Z = (np.log(times) - mu_) / sigma_
     return norm.logpdf(
         Z, loc=0, scale=1) - np.log(sigma_) - np.log(times) - norm.logsf(Z)
예제 #9
0
 def _cumulative_hazard(self, params, times):
     mu_, sigma_ = params
     Z = (np.log(times) - mu_) / sigma_
     return -norm.logsf(Z)