///|
/// 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..