code: def test_given_good_fit_but_noisy_data_when_estimate_crps_then_returns_expected_result():
      X = np.random.normal(0, 1, 2000)
      Y = 2 * X + np.random.normal(0, 1, 2000)
  
      mdl = AdditiveNoiseModel(
          create_linear_regressor_with_given_parameters(
              np.array([2]), intercept=0
          ),
          noise_model=ScipyDistribution(stats.norm, loc=0, scale=1),
      )
  
      assert crps(X, Y, mdl.draw_samples) == approx(0.26, abs=0.05)
  
imports: import networkx
  import numpy
  import pandas
  from _pytest.python_api import approx
  from flaky import flaky
  from scipy import stats
  from dowhy.gcm import AdditiveNoiseModel, ClassifierFCM, InvertibleStructuralCausalModel, ScipyDistribution, fit, kernel_based
  from dowhy.gcm.auto import assign_causal_mechanisms
  from dowhy.gcm.ml import create_hist_gradient_boost_classifier, create_hist_gradient_boost_regressor, create_linear_regressor, create_linear_regressor_with_given_parameters, create_logistic_regression_classifier
  from dowhy.gcm.model_evaluation import EvaluateCausalModelConfig, _estimate_conditional_expectations, _evaluate_invertibility_assumptions, crps, evaluate_causal_model, nmse
label_desc: Use image node_id 6 for calling a global function with example usage: test_given_good_fit_but_noisy_data_when_estimate_crps_then_returns_expected_result() without return types