code: def _generate_simple_non_linear_data() -> pd.DataFrame:
      X = np.random.normal(loc=0, scale=1, size=5000)
      Y = X**2 + np.random.normal(loc=0, scale=1, size=5000)
      Z = np.exp(-Y) + np.random.normal(loc=0, scale=1, size=5000)
  
      return pd.DataFrame(data=dict(X=X, Y=Y, Z=Z))
  
imports: from functools import partial
  import networkx
  import numpy
  import pandas
  import pytest
  from flaky import flaky
  from dowhy.datasets import generate_random_graph
  from dowhy.gcm.falsify import FalsifyConst, _PermuteNodes, falsify_graph, run_validations, validate_cm, validate_lmc, validate_pd, validate_tpa
  from dowhy.gcm.independence_test.generalised_cov_measure import generalised_cov_based
  from dowhy.gcm.independence_test.kernel import kernel_based
  from dowhy.gcm.ml import create_linear_regressor
  from tests.gcm.independence_test.test_kernel import _generate_categorical_data
label_desc: Use image node_id 2 for calling a global function with example usage: _generate_simple_non_linear_data() and returns: pd