def _hajek_se()

in causalPartition.py [0:0]


    def _hajek_se(self, d, p, outcome):
        """
        - The taylor linearization for hajek se 
        - WLS is directly used for non-separate cases; but in this case S.E. is usually overestimated
        """
        average_hajek_var_up = np.sum( ((d[outcome]/p) ** 2) * (1 - p) )  # numerator
        average_hajek_var_down = np.sum( ((1.0/p) ** 2) * (1 - p) )  # denominator
        average_hajek_cov = np.sum( ((1.0/p) ** 2) * d[outcome] * (1 - p) )
        average_hajek_sum_up = np.sum(d[outcome]/p)  # numerator
        average_hajek_sum_down = np.sum(1.0/p)  # denominator

        se = np.sqrt(1.0 / (average_hajek_sum_down**2) * average_hajek_var_up + \
                (average_hajek_sum_up**2) / (average_hajek_sum_down**4) * average_hajek_var_down + \
                - 2.0 * average_hajek_sum_up / (average_hajek_sum_down**3) * average_hajek_cov)
        # Taylor linearization ((Sarndal, Swensson and Wretman, 1992, pp. 172-174)
        return se