def filter_for_rate(self, population: Union[pd.DataFrame, pd.Series, Index],
                        rate: Array, additional_key: Any=None) -> Index:
        """Decide an event outcome for each individual in a population from rates.

        Given a population or its index and an array of associated rates for
        some event to happen, we create and return the sub-population for whom
        the event occurred.

        Parameters
        ----------
        population :
            A view on the simulants for which we are determining the
            outcome of an event.
        rate :
            A 1d list of rates of the event under consideration occurring which
            corresponds (i.e. `len(population) == len(probability))` to the
            population view passed in. The rates must be scaled to the simulation
            time-step size either manually or as a post-processing step in a
            rate pipeline.
        additional_key :
            Any additional information used to create the seed.

        Returns
        -------
        Index
            The index of the simulants for whom the event occurred.

        See Also
        --------
        framework.values:
            Value/rate pipeline management module.
        """
        return self.filter_for_probability(population, rate_to_probability(rate), additional_key)