code: def test_given_two_graphs_fitted_on_data_sets_with_different_mechanisms_when_evaluate_distribution_change_of_graphs_then_returns_expected_result():
      original_observations, outlier_observations = _generate_data()
  
      causal_model_old = ProbabilisticCausalModel(
          nx.DiGraph([("X0", "X1"), ("X0", "X2"), ("X2", "X3")])
      )
      _assign_causal_mechanisms(causal_model_old)
      causal_model_new = ProbabilisticCausalModel(
          nx.DiGraph([("X0", "X1"), ("X0", "X2"), ("X2", "X3")])
      )
      _assign_causal_mechanisms(causal_model_new)
  
      fit(causal_model_old, original_observations)
      fit(causal_model_new, outlier_observations)
  
      results = distribution_change_of_graphs(
          causal_model_old, causal_model_new, "X3"
      )
  
      assert results["X3"] > results["X2"] > results["X0"]
      assert "X1" not in results
      assert results["X0"] == approx(0, abs=0.1)
  
imports: import networkx
  import numpy
  import pandas
  from flaky import flaky
  from pytest import approx
  from dowhy.gcm import AdditiveNoiseModel, EmpiricalDistribution, ProbabilisticCausalModel, distribution_change, distribution_change_of_graphs, fit
  from dowhy.gcm.auto import AssignmentQuality
  from dowhy.gcm.distribution_change import mechanism_change_test
  from dowhy.gcm.ml import create_linear_regressor
  from dowhy.gcm.shapley import ShapleyConfig
label_desc: Use image node_id 2 for calling a global function with example usage: test_given_two_graphs_fitted_on_data_sets_with_different_mechanisms_when_evaluate_distribution_change_of_graphs_then_returns_expected_result() without return types