code: def _create_causal_model():
      causal_model = ProbabilisticCausalModel(
          nx.DiGraph([("X1", "X2"), ("X0", "X2")])
      )
      causal_model.set_causal_mechanism(
          "X1", ScipyDistribution(stats.norm, loc=0, scale=1)
      )
      causal_model.set_causal_mechanism(
          "X0", ScipyDistribution(stats.norm, loc=0, scale=1)
      )
      causal_model.set_causal_mechanism(
          "X2",
          AdditiveNoiseModel(
              prediction_model=create_linear_regressor_with_given_parameters(
                  [3, 1]
              ),
              noise_model=ScipyDistribution(stats.norm, loc=0, scale=1),
          ),
      )
  
      X0 = np.random.normal(0, 1, 1000)
      X1 = np.random.normal(0, 1, 1000)
  
      test_data = pd.DataFrame(
          {
              "X0": X0,
              "X1": X1,
              "X2": 3 * X0 + X1 + np.random.normal(0, 1, X0.shape[0]),
          }
      )
      fit(causal_model, test_data)
  
      return causal_model
  
imports: import random
  import networkx
  import numpy
  import pandas
  import pytest
  from flaky import flaky
  from pytest import approx
  from scipy import stats
  from dowhy.gcm import AdditiveNoiseModel, ClassifierFCM, ProbabilisticCausalModel, ScipyDistribution, arrow_strength, fit
  from dowhy.gcm.auto import assign_causal_mechanisms
  from dowhy.gcm.divergence import estimate_kl_divergence_continuous_knn
  from dowhy.gcm.influence import arrow_strength_of_model
  from dowhy.gcm.ml import create_linear_regressor, create_linear_regressor_with_given_parameters, create_logistic_regression_classifier
label_desc: Use image node_id 10 for calling a global function with example usage: _create_causal_model() and returns: causal_model