///|
/// Calculates the Doubly Robust estimator for the Average Treatment Effect (ATE).
pub fn doubly_robust_ate(
  outcomes : Array[Double],
  treatments : Array[Bool],
  propensity_scores : Array[Double],
  predicted_outcomes_treated : Array[Double],
  predicted_outcomes_control : Array[Double],
) -> Double {
  let n = outcomes.length()
  if n == 0 {
    return 0.0
  }
  let mut mu_1_sum = 0.0
  let mut mu_0_sum = 0.0
  for i in 0..