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