Survival analysis, but only x% of everyone fails?

Looking at the Austin Cats example, what if there’s some proportion of cats that never gets adopted, i.e. 5% - how would I factor that into a model?

The justification would be, maybe due to the current process, the type of cats brought in, etc. that not all cats will end up getting adopted. Any ideas on how to fold this into the survival function?

Here’s the current approach that doesn’t take this into account:

def logp(failure, value):
return ((failure * tt.log(lam) - value*lam)).sum()

with pm.Model() as m1:
a = pm.Normal("a_color", 0, 1, shape=2)
mu = tt.exp(a[id_])
lam = 1/mu

exp_surv = pm.DensityDist("exp_surv", logp, observed={"failure":failure, "value":t})
trace = pm.sample()

Ideally I’d like to know the percent of cats remaining at time t, accounting for the fact that some p% will never end up getting adopted