code: def _create_scm_for_distribution_change():
      X0 = np.random.uniform(-1, 1, 1000)
      X1 = 2 * X0 + np.random.normal(0, 0.1, 1000)
      X2 = 0.5 * X0 + np.random.normal(0, 0.1, 1000)
      X3 = 0.5 * X2 + np.random.normal(0, 0.1, 1000)
  
      original_observations = pd.DataFrame(
          {"X0": X0, "X1": X1, "X2": X2, "X3": X3}
      )
  
      causal_model = ProbabilisticCausalModel(
          nx.DiGraph([("X0", "X1"), ("X0", "X2"), ("X2", "X3")])
      )
      causal_model.set_causal_mechanism("X0", EmpiricalDistribution())
      causal_model.set_causal_mechanism(
          "X1",
          AdditiveNoiseModel(
              prediction_model=create_linear_regressor()
          ),
      )
      causal_model.set_causal_mechanism(
          "X2",
          AdditiveNoiseModel(
              prediction_model=create_linear_regressor()
          ),
      )
      causal_model.set_causal_mechanism(
          "X3",
          AdditiveNoiseModel(
              prediction_model=create_linear_regressor()
          ),
      )
      fit(causal_model, original_observations)
  
      return causal_model, original_observations
  
imports: import operator
  import networkx
  import numpy
  import pandas
  from flaky import flaky
  from pytest import approx
  from dowhy.gcm import AdditiveNoiseModel, EmpiricalDistribution, InverseDensityScorer, ITAnomalyScorer, MeanDeviationScorer, MedianCDFQuantileScorer, MedianDeviationScorer, ProbabilisticCausalModel, RescaledMedianCDFQuantileScorer, anomaly_scores, auto, fit
  from dowhy.gcm.anomaly import conditional_anomaly_scores
  from dowhy.gcm.constant import EPS
  from dowhy.gcm.distribution_change import estimate_distribution_change_scores
  from dowhy.gcm.ml import create_linear_regressor
label_desc: Use image node_id 13 for calling a global function with example usage: _create_scm_for_distribution_change() and returns: causal_model,  original_observations