code: def conditional_probability_alive(self, m_periods_in_future, frequency, recency, n_periods):
          
          params = self._unload_params("alpha", "beta", "gamma", "delta")
          alpha, beta, gamma, delta = params
  
          p1 = betaln(alpha + frequency, beta + n_periods - frequency) - betaln(alpha, beta)
          p2 = betaln(gamma, delta + n_periods + m_periods_in_future) - betaln(gamma, delta)
          p3 = self._loglikelihood(params, frequency, recency, n_periods)
  
          return exp(p1 + p2) / exp(p3)
docs: Conditional probability alive.
  
          Conditional probability customer is alive at transaction opportunity
          n_periods + m_periods_in_future.
  
          .. math:: P(alive at n_periods + m_periods_in_future|alpha, beta, gamma, delta, frequency, recency, n_periods)
  
          See (A10) in Fader and Hardie 2010.
  
          Parameters
          ----------
          m: array_like
              transaction opportunities
  
          Returns
          -------
          array_like
              alive probabilities