code: def simulate_hidden_confounder(n=10000, p=5, sigma=1.0, adj=0.0):
      """Synthetic dataset with a hidden confounder biasing treatment.
          From Louizos et al. (2018) "Causal Effect Inference with Deep Latent-Variable Models"
      Args:
          n (int, optional): number of observations
          p (int optional): number of covariates (>=3)
          sigma (float): standard deviation of the error term
          adj (float): no effect. added for consistency
      Returns:
          (tuple): Synthetically generated samples with the following outputs:
              - y ((n,)-array): outcome variable.
              - X ((n,p)-ndarray): independent variables.
              - w ((n,)-array): treatment flag with value 0 or 1.
              - tau ((n,)-array): individual treatment effect.
              - b ((n,)-array): expected outcome.
              - e ((n,)-array): propensity of receiving treatment.
      """
      z = np.random.binomial(1, 0.5, size=n).astype(np.double)
      X = np.random.normal(z, 5 * z + 3 * (1 - z), size=(p, n)).T
      e = 0.75 * z + 0.25 * (1 - z)
      w = np.random.binomial(1, e)
      b = expit(3 * (z + 2 * (2 * w - 2)))
      y = np.random.binomial(1, b)
  
      # Compute true ite tau for evaluation (via Monte Carlo approximation).
      t0_t1 = np.array([[0.0], [1.0]])
      y_t0, y_t1 = expit(3 * (z + 2 * (2 * t0_t1 - 2)))
      tau = y_t1 - y_t0
      return y, X, w, tau, b, e
  
file_path: causalml/causalml/dataset/regression.py
imports: import logging
  import numpy
  from scipy.special import expit, logit
label_desc: Use image node_id 6 for calling a global function with example usage: simulate_hidden_confounder(n, p, sigma, adj) and returns: y,  X,  w,  tau,  b,  e