code: def _additive_estimate(events, timeline, _additive_f, _additive_var, reverse):
      
      if reverse:
          events = events.sort_index(ascending=False)
          at_risk = events["entrance"].sum() - events["removed"].cumsum().shift(1).fillna(0)
  
          deaths = events["observed"]
  
          estimate_ = np.cumsum(_additive_f(at_risk, deaths)).sort_index().shift(-1).fillna(0)
          var_ = np.cumsum(_additive_var(at_risk, deaths)).sort_index().shift(-1).fillna(0)
      else:
          deaths = events["observed"]
  
          # Why subtract entrants like this? see https://github.com/CamDavidsonPilon/lifelines/issues/497
          # specifically, we kill people, compute the ratio, and then "add" the entrants. This means that
          # the population should not have the late entrants. The only exception to this rule
          # is the first period, where entrants happen _prior_ to deaths.
          entrances = events["entrance"].copy()
          entrances.iloc[0] = 0
          population = events["at_risk"] - entrances
  
          estimate_ = np.cumsum(_additive_f(population, deaths))
          var_ = np.cumsum(_additive_var(population, deaths))
  
      timeline = sorted(timeline)
      estimate_ = estimate_.reindex(timeline, method="pad").fillna(0)
      var_ = var_.reindex(timeline, method="pad")
      var_.index.name = "timeline"
      estimate_.index.name = "timeline"
  
      return estimate_, var_
docs: Called to compute the Kaplan Meier and Nelson-Aalen estimates.